VMware虚拟机扩容--保姆级教学

1231 字
6 分钟
VMware虚拟机扩容--保姆级教学

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 看不到新空间。

操作前建议:

  • 对重要数据做快照或备份
  • 确认当前分区布局(下文用 dffdisk -l 核对)
  • 全程使用 rootsudo

2. 在 VMware 中扩展虚拟磁盘#

关机或在支持在线扩容的环境下,进入虚拟机设置,调大磁盘容量:

img
img

这一步只扩大 虚拟磁盘文件 的上限,Guest OS 内的分区表和文件系统尚未变化。

3. 扩容前:查看当前磁盘使用情况#

登录虚拟机,先看根分区用了多少空间:

Terminal window
# 查看分区使用情况
df -h

img
img

此时 df 显示的容量仍是扩容前的值,这是正常现象。

4. 确认磁盘与 LVM 布局#

Terminal window
# 查看块设备与分区表
fdisk -l

img
img

结合输出可以读出几件事:

  • /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。若你的卷组叫 clvg_centos,后面命令里的名字要改成实际值。

5. 确认 /dev 下现有设备节点#

Terminal window
cd /dev
ls

img
img

扩容前一般只有 sda1sda2,还没有 sda3

6. 用 fdisk 在磁盘末尾新建分区#

同一块磁盘(示例为 /dev/sda)上新建一个主分区,占满 VMware 刚扩出来的空闲空间:

Terminal window
# 进入 fdisk 管理 /dev/sda
fdisk /dev/sda
# 查看帮助(可选)
m
# 新建分区
n
p # 主分区
# 分区号:若提示 3,直接回车选 sda3
# 起始扇区:默认即可,回车
# 结束扇区:默认即可,回车(占满剩余空间)
# 写入分区表并退出
w

img
img

说明

  • 若已有空闲分区编号,按提示选默认可,不影响结果
  • 某些环境下 w 之后需 重启 或执行 partprobe /dev/sda 才能看到新分区

7. 重启后确认 sda3 已出现#

Terminal window
cd /dev
ls

img
img

应能看到 sda3。若没有,先重启再查,或执行:

Terminal window
partprobe /dev/sda
lsblk

8. 格式化新分区#

新分区要先建文件系统,才能作为 LVM 物理卷使用:

Terminal window
mkfs.ext4 /dev/sda3

img
img

这里格式化为 ext4 即可;LVM 会在上层再管理这块空间,与根分区是否为 XFS 不冲突。

9. 将新分区加入 LVM 卷组#

Terminal window
# 进入 lvm 交互 shell(也可直接在 bash 里执行下面三条)
lvm
# 把 sda3 初始化为物理卷
pvcreate /dev/sda3
# 加入已有卷组 centos(卷组名以 vgdisplay 为准)
vgextend centos /dev/sda3
# 查看卷组,确认 Free PE 已增加
vgdisplay

img
img

vgdisplayFree PE / Size 表示卷组中尚未分配给逻辑卷的剩余空间,下一步会把它给 centos-root

10. 扩展根逻辑卷#

把卷组剩余空间全部扩给根分区:

Terminal window
# 推荐:自动吃掉卷组全部 Free 空间
lvextend -l +100%FREE /dev/mapper/centos-root
# 若需手动指定 PE 数,用 vgdisplay 里的 Free PE 值,例如:
# lvextend -l +7679 /dev/mapper/centos-root
vgdisplay

img
img

-l +100%FREE 比手填 PE 数更稳,避免算错或漏扩。

11. 扩展文件系统并验证#

逻辑卷变大后,还要让 文件系统 感知新容量:

Terminal window
# 若在 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

img
img

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 输出为准替换命令

不要 对已有数据的 sda1sda2 直接 mkfs 或改分区,否则会导致系统无法启动。

13. 流程小结#

  1. VMware 调大虚拟磁盘
  2. fdisk 新建分区(如 sda3
  3. pvcreatevgextendlvextend 把空间并进根逻辑卷
  4. xfs_growfs(或 resize2fs)扩大文件系统
  5. df -h 验证

整条链路本质是:虚拟磁盘 → 分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统,缺任何一环,df 都不会变大。

文章目录