作为运维或开发,经常遇到Ubuntu虚拟机根分区空间告急的情况:扩容虚拟机磁盘后,要么分区调不动,要么GParted显示扩了但df -h没变化,要么LVM卷组空间不足......本文结合实际踩坑经历,整理出VMware+Ubuntu+LVM环境下的完整扩容流程,解决这些常见问题。
一、场景与问题说明
适用场景:VMware中运行的Ubuntu系统,根分区基于LVM管理(设备路径通常为/dev/mapper/ubuntu--vg-root)。
常见问题:
- 虚拟机磁盘扩容后,分区(如
sda2/sda5)无法调整大小; - GParted显示分区已扩展,但
df -h未识别新增空间; - LVM卷组空闲空间不足,无法扩展逻辑卷;
- 分区存在包含关系(
sda2包含sda5),调整分区时出现限制。
二、准备工作
- 关闭Ubuntu虚拟机,删除所有快照(VMware扩展磁盘需无快照);
- 备份虚拟机重要数据(分区调整存在数据风险);
- (可选)准备Ubuntu Live CD启动U盘(解决分区挂载导致的调整限制)。
三、完整扩容流程
步骤1:VMware端扩展虚拟磁盘
- 打开VMware虚拟机设置,选择"硬盘"→点击"扩展";
- 输入目标容量(如原130G→180G,增加50G),点击"确认";
- 启动Ubuntu虚拟机,执行
df -h确认当前根分区容量(此时尚未变化)。
步骤2:调整磁盘分区(2种方式)
Ubuntu的LVM物理卷通常位于扩展分区(sda2)内的逻辑分区(sda5),需先扩展外层分区,再扩展内层分区。
方式1:命令行工具parted(推荐)
-
查看当前分区表:
bashsudo parted /dev/sda p -
进入parted交互模式,扩展扩展分区(sda2):
bashsudo parted /dev/sda (parted) resizepart 2 # 选择扩展分区sda2 (parted) # 提示"End?"时直接按回车(使用磁盘最大扇区)或者增加扩展的size -
扩展逻辑分区(sda5,LVM物理卷):
bash(parted) resizepart 5 # 选择逻辑分区sda5 (parted) # 提示"End?"时直接按回车(使用sda2的最大空间)或者增加扩展的size (parted) q # 退出parted
方式2:图形化工具GParted(适合可视化操作)
若分区处于挂载状态(如根分区),需从Ubuntu Live CD启动(选择"试用Ubuntu"),再执行:
- 打开GParted,顶部下拉选择
/dev/sda; - 选中
sda2(扩展分区)→点击"调整大小/移动"→拖至磁盘最大空间; - 选中
sda5(LVM物理卷)→点击"调整大小/移动"→拖至sda2的最大空间; - 点击顶部"应用"(绿色对勾)执行分区调整。
步骤3:LVM空间同步(核心!解决df不识别问题)
分区扩展后,需通过LVM工具将空间传递到根分区:
-
更新物理卷(PV):让LVM识别sda5的扩展空间
bashsudo pvresize /dev/sda5 -
查看卷组(VG)空闲空间:确认新增空间已进入卷组
bashsudo vgdisplay ubuntu--vg重点看
Free PE / Size项,会显示分区扩展后新增的空闲空间。 -
扩展逻辑卷(LV):将空闲空间分配给根逻辑卷
bash# 扩展指定容量(如50G) sudo lvextend -L +50G /dev/mapper/ubuntu--vg-root # 或使用卷组全部空闲空间(推荐) sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-root
步骤4:更新文件系统
让系统识别逻辑卷的新增空间:
bash
# 适用于ext4文件系统(Ubuntu默认)
sudo resize2fs /dev/mapper/ubuntu--vg-root
# 若为XFS文件系统,执行:
# sudo xfs_growfs /dev/mapper/ubuntu--vg-root
步骤5:验证结果
执行df -h,查看根分区(/)容量是否已更新。
四、常见问题处理
-
sda2无法调整大小 :
原因:分区处于挂载状态;
解决:从Ubuntu Live CD启动后再调整。
-
GParted扩展后df无变化 :
原因:未执行LVM同步步骤;
解决:重新执行
pvresize→lvextend→resize2fs。 -
LVM空闲空间不足 :
原因:分区未真正扩展;
解决:重新执行步骤2的分区调整,再同步PV。
总结
VMware+Ubuntu+LVM的扩容核心是"虚拟机磁盘→分区→LVM→文件系统"的逐层同步,其中LVM步骤是最容易遗漏的环节(也是解决"df不识别空间"的关键)。操作前务必备份数据,遇到分区挂载限制时,优先使用Ubuntu Live CD启动。