必须先在VMware中关机扩展虚拟磁盘,再在Linux中通过fdisk创建LVM分区、pvcreate初始化物理卷、vgextend加入卷组、lvextend扩展逻辑卷、resize2fs扩容文件系统,缺一不可。

VMware虚拟机磁盘空间告急,系统提示“/dev/mapper/centos-root is full”,但又不想重装系统或迁移数据——这时必须在不丢失现有环境的前提下,安全扩大虚拟机磁盘容量。操作分两阶段:先在VMware层面扩展虚拟磁盘文件大小,再在Linux系统内完成分区、LVM和文件系统三级扩容,缺一不可。
在VMware中关闭状态下扩展虚拟磁盘
关闭虚拟机电源,确保处于完全关机状态(不是挂起或休眠),否则“扩展”按钮将灰色不可用。
右键虚拟机 → 选择“设置” → 在硬件列表中选中“硬盘(SCSI)” → 点击右侧“实用工具”下的“扩展”按钮。
输入新容量值(例如从40GB扩至80GB),注意【必须大于当前容量,且不能超过底层物理存储剩余空间】;若按钮不可点,说明存在快照,请先打开“快照管理器”删除全部快照。
点击“确定”后等待进度条完成,该过程实际是在调整.vmdk文件元数据,不移动原始数据,耗时取决于磁盘大小和宿主机I/O性能。
验证并创建新分区(适用于LVM架构)
启动虚拟机,以root身份执行lsblk,确认/dev/sda总容量已更新(如显示160G),但sda1、sda2等分区大小未变——新增空间仍为“未分配”状态。
运行fdisk /dev/sda进入分区工具:
① 输入p查看当前分区布局,记下已有主分区数量(如sda1、sda2,则下一个可用编号为3);
② 输入n新建分区 → p选主分区 → 输入编号(如3)→ 连续两次回车使用全部剩余扇区;
③ 输入t修改类型 → 输入分区号3 → 输入8e(这是LVM专用分区类型,输错成83会导致后续pvcreate失败);
④ 输入w写入分区表并退出。
执行partprobe /dev/sda使内核立即识别新分区,避免重启——这步省时间,但部分旧内核需重启才生效。
将新分区加入LVM卷组并扩展根逻辑卷
方法一:使用vgdisplay查空闲空间后精确扩展
执行vgdisplay centos | grep "Free",记录“Free PE / Size”值(如Free PE / Size 7679 / 30.00 GiB);
运行pvcreate /dev/sda3将新分区初始化为物理卷;
执行vgextend centos /dev/sda3把新PV加入名为centos的卷组;
输入lvextend -l +7679 /dev/mapper/centos-root(注意+7679前的加号不可省略,否则会覆盖而非追加);
最后执行resize2fs /dev/mapper/centos-root在线扩展ext4文件系统(XFS请改用xfs_growfs /)。
方法二:一步到位自动扩展(推荐新手)
直接运行lvextend -l +100%FREE /dev/mapper/centos-root,让LVM自动用尽卷组所有空闲PE;
紧接着执行resize2fs /dev/mapper/centos-root——这一步必须紧接lvextend之后,否则df -h不会反映变化。
运行df -h /确认根分区容量已增长,扩容完成。

















