温馨提示×

centos虚拟机如何扩展存储

小樊
38
2025-11-21 19:05:13
栏目: 云计算

CentOS 虚拟机扩展存储实操指南

一、前置检查与准备

  • 确认虚拟化平台并选择合适路径:
    • 扩展现有虚拟磁盘(适用于 VMware/KVM 等,原地增大同一块盘)。
    • 新增一块虚拟磁盘(更稳妥,便于回滚)。
  • 建议先对虚拟机做快照或备份,并确保虚拟机处于关机状态(多数平台在扩展磁盘时要求关机)。
  • 启动系统后,先确认当前容量与分区:
    • 查看文件系统与挂载点:df -h
    • 查看块设备与分区:lsblkfdisk -l
    • 查看卷组与逻辑卷:vgslvspvs
  • 识别文件系统类型(决定后续扩容命令):df -Thblkid
    以上检查有助于明确是“扩展已有盘”还是“新增盘”,以及后续该用 xfs_growfs 还是 resize2fs

二、方案一 扩展现有虚拟磁盘(原地增大)

  • 在虚拟化平台将虚拟磁盘容量调大到目标值(如从 40G 调到 60G),保存配置。
  • 若平台/系统支持,可在不重启的情况下触发 SCSI 总线重新扫描,使系统识别新增容量:
    • 扫描主机总线:echo "- - -" > /sys/class/scsi_host/host0/scan(按实际 host 编号执行)
    • 扫描设备:echo 1 > /sys/class/scsi_device/<id>/device/rescan
  • 识别到新容量后,使用分区工具扩展分区:
    • 传统 MBR 盘:fdisk /dev/sda → 删除原有分区后重建,保持起始扇区不变、将结束扇区设为更大值;如为 LVM 分区,将类型设为 Linux LVM(8e)
    • 超过 2TB 建议使用 parted/gdisk 创建 GPT 分区。
  • 通知内核重读分区表:partprobe /dev/sda(必要时重启)。
  • 扩展 LVM 物理卷:pvresize /dev/sdaX(X 为新扩展的分区)。
  • 扩展逻辑卷:
    • 指定容量:lvextend -L +20G /dev/mapper/<vg>-<lv>
    • 或用全部空闲:lvextend -l +100%FREE /dev/mapper/<vg>-<lv>
  • 扩展文件系统:
    • XFSxfs_growfs <挂载点>(如 xfs_growfs /
    • ext2/3/4resize2fs /dev/mapper/<vg>-<lv>
  • 验证:df -h 应显示新的可用空间。
    以上步骤适用于在原盘上扩大分区并联动 LVM 与文件系统的完整流程。

三、方案二 新增一块虚拟磁盘(更稳妥)

  • 在虚拟化平台新增一块虚拟磁盘(如 40G),启动系统。
  • 识别新盘:lsblk 应看到如 /dev/sdb
  • 分区并创建 LVM 物理卷:
    • fdisk /dev/sdb → 新建分区(类型 8e 对应 Linux LVM)→ w 保存
    • partprobe /dev/sdb
    • pvcreate /dev/sdb1
  • 扩展卷组:
    • 查看卷组名:vgs(常见如 centoscl
    • vgextend <vg名> /dev/sdb1
  • 扩展逻辑卷与文件系统:
    • lvextend -l +100%FREE /dev/mapper/<vg>-root
    • 文件系统扩容:XFS 用 xfs_growfs <挂载点>,ext 系列用 resize2fs <逻辑卷设备>
  • 验证:df -hvgslvs 查看空间变化。
    该方式对现有分区无侵入,回滚更简单,适合生产环境逐步扩容。

四、KVM 场景的两种做法

  • 直接扩展现有镜像(qcow2/raw):
    • 关机:virsh shutdown <vm>
    • 扩展镜像:qemu-img resize <image.qcow2> +20G
    • 启动系统后按“方案一”扩展分区与 LVM/文件系统。
  • 新增磁盘文件并挂入虚拟机:
    • 创建新盘:qemu-img create -f qcow2 <add.qcow2> 20G
    • 编辑域配置:virsh edit <vm>,在 <devices> 下新增 <disk type='file' device='disk'>...</disk> 指向新盘
    • 启动后在系统内按“方案二”初始化、加入 LVM 并扩容。
      以上流程覆盖 KVM 下镜像扩容与新增磁盘两种常用方法。

五、常见问题与排错要点

  • 扩展后 df -h 未变化:多数因为只扩大了虚拟磁盘,未扩展分区或 LVM/文件系统;需依次完成分区扩展、pvresizelvextend 与文件系统扩容。
  • 文件系统类型不匹配:
    • XFS 必须用 xfs_growfs <挂载点>
    • ext2/3/4resize2fs <设备>
  • 超过 2TB 分区限制:MBR 不支持,需改用 GPT(可用 parted/gdisk)。
  • 在线扩容 SCSI 设备:部分环境支持 echo "- - -" > /sys/class/scsi_host/hostX/scan 与设备级 rescan 实现不重启识别新容量。
  • 卷组名与逻辑卷路径:常见为 centos/rootcl/root,可用 vgslvsdf -h 确认后再执行 vgextendlvextend
  • 操作前务必做好快照/备份,避免误操作导致数据风险。
    以上要点可快速定位“容量已扩但系统未识别”或“扩容命令报错”等典型问题。

0