VMware 虚拟机磁盘扩容(CentOS + LVM)
1. 适用环境与前提
本文记录 VMware 虚拟机磁盘扩容 的完整流程,适用于以下典型场景:
- 宿主机:VMware Workstation / ESXi
- 客户机:CentOS 7(默认安装,根分区走 LVM)
- 根分区设备名常见为
/dev/mapper/centos-root,卷组名为centos - 文件系统为 XFS(CentOS 7 默认);CentOS 6 多为 ext4
扩容分两段:先在 VMware 侧扩大虚拟磁盘,再在 Linux 内把新增空间挂到 LVM 根分区。只改 VMware 设置而不做系统内操作,Guest OS 看不到新空间。
操作前建议:
- 对重要数据做快照或备份
- 确认当前分区布局(下文用
df、fdisk -l核对) - 全程使用
root或sudo
2. 在 VMware 中扩展虚拟磁盘
关机或在支持在线扩容的环境下,进入虚拟机设置,调大磁盘容量:

这一步只扩大 虚拟磁盘文件 的上限,Guest OS 内的分区表和文件系统尚未变化。
3. 扩容前:查看当前磁盘使用情况
登录虚拟机,先看根分区用了多少空间:
# 查看分区使用情况df -h
此时 df 显示的容量仍是扩容前的值,这是正常现象。
4. 确认磁盘与 LVM 布局
# 查看块设备与分区表fdisk -l
结合输出可以读出几件事:
/dev/sda:整块虚拟磁盘(示例约 53.7 GB,VMware 扩容后会变大)/dev/sda1、/dev/sda2:已有分区(通常sda2为 LVM 物理卷)/dev/mapper/centos-root:根逻辑卷(示例约 18.2 GB)/dev/mapper/centos-swap:swap 逻辑卷
关键判断:根分区是否在 LVM 上、卷组名是否为 centos。若你的卷组叫 cl 或 vg_centos,后面命令里的名字要改成实际值。
5. 确认 /dev 下现有设备节点
cd /devls
扩容前一般只有 sda1、sda2,还没有 sda3。
6. 用 fdisk 在磁盘末尾新建分区
在 同一块磁盘(示例为 /dev/sda)上新建一个主分区,占满 VMware 刚扩出来的空闲空间:
# 进入 fdisk 管理 /dev/sdafdisk /dev/sda
# 查看帮助(可选)m
# 新建分区np # 主分区 # 分区号:若提示 3,直接回车选 sda3 # 起始扇区:默认即可,回车 # 结束扇区:默认即可,回车(占满剩余空间)
# 写入分区表并退出w
说明:
- 若已有空闲分区编号,按提示选默认可,不影响结果
- 某些环境下
w之后需 重启 或执行partprobe /dev/sda才能看到新分区
7. 重启后确认 sda3 已出现
cd /devls
应能看到 sda3。若没有,先重启再查,或执行:
partprobe /dev/sdalsblk8. 格式化新分区
新分区要先建文件系统,才能作为 LVM 物理卷使用:
mkfs.ext4 /dev/sda3
这里格式化为 ext4 即可;LVM 会在上层再管理这块空间,与根分区是否为 XFS 不冲突。
9. 将新分区加入 LVM 卷组
# 进入 lvm 交互 shell(也可直接在 bash 里执行下面三条)lvm
# 把 sda3 初始化为物理卷pvcreate /dev/sda3
# 加入已有卷组 centos(卷组名以 vgdisplay 为准)vgextend centos /dev/sda3
# 查看卷组,确认 Free PE 已增加vgdisplay
vgdisplay 里 Free PE / Size 表示卷组中尚未分配给逻辑卷的剩余空间,下一步会把它给 centos-root。
10. 扩展根逻辑卷
把卷组剩余空间全部扩给根分区:
# 推荐:自动吃掉卷组全部 Free 空间lvextend -l +100%FREE /dev/mapper/centos-root
# 若需手动指定 PE 数,用 vgdisplay 里的 Free PE 值,例如:# lvextend -l +7679 /dev/mapper/centos-root
vgdisplay
-l +100%FREE 比手填 PE 数更稳,避免算错或漏扩。
11. 扩展文件系统并验证
逻辑卷变大后,还要让 文件系统 感知新容量:
# 若在 lvm shell 中,先退出exit
cd /
# CentOS 7 / XFS 根分区(常见)xfs_growfs /dev/mapper/centos-root# 或指定挂载点:xfs_growfs /
# CentOS 6 / ext4 根分区# resize2fs /dev/mapper/centos-root
df -h
df -h 中 / 的 Size 应明显增大,说明 VMware 扩容 → 新分区 → LVM → 文件系统 全链路完成。
12. 常见陷阱
| 现象 | 可能原因 | 处理 |
|---|---|---|
fdisk -l 磁盘变大,但分区未变 | 只做了 VMware 侧扩容 | 按本文第 6 步新建分区 |
新建分区后没有 sda3 | 分区表未刷新 | 重启或 partprobe /dev/sda |
lvextend 成功但 df 不变 | 未执行文件系统扩容 | XFS 用 xfs_growfs,ext4 用 resize2fs |
xfs_growfs 报错 | 目标不是 XFS,或未挂载 | 用 df -T / 确认文件系统类型 |
卷组名不是 centos | 安装方式不同 | 以 vgs / vgdisplay 输出为准替换命令 |
不要 对已有数据的 sda1、sda2 直接 mkfs 或改分区,否则会导致系统无法启动。
13. 流程小结
- VMware 调大虚拟磁盘
fdisk新建分区(如sda3)pvcreate→vgextend→lvextend把空间并进根逻辑卷xfs_growfs(或resize2fs)扩大文件系统df -h验证
整条链路本质是:虚拟磁盘 → 分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统,缺任何一环,df 都不会变大。