VMware+Ubuntu+LVM 虚拟机存储扩容全流程(解决分区/空间不识别问题)

作为运维或开发,经常遇到Ubuntu虚拟机根分区空间告急的情况:扩容虚拟机磁盘后,要么分区调不动,要么GParted显示扩了但df -h没变化,要么LVM卷组空间不足......本文结合实际踩坑经历,整理出VMware+Ubuntu+LVM环境下的完整扩容流程,解决这些常见问题。

一、场景与问题说明

适用场景:VMware中运行的Ubuntu系统,根分区基于LVM管理(设备路径通常为/dev/mapper/ubuntu--vg-root)。

常见问题:

  • 虚拟机磁盘扩容后,分区(如sda2/sda5)无法调整大小;
  • GParted显示分区已扩展,但df -h未识别新增空间;
  • LVM卷组空闲空间不足,无法扩展逻辑卷;
  • 分区存在包含关系(sda2包含sda5),调整分区时出现限制。

二、准备工作

  1. 关闭Ubuntu虚拟机,删除所有快照(VMware扩展磁盘需无快照);
  2. 备份虚拟机重要数据(分区调整存在数据风险);
  3. (可选)准备Ubuntu Live CD启动U盘(解决分区挂载导致的调整限制)。

三、完整扩容流程

步骤1:VMware端扩展虚拟磁盘

  1. 打开VMware虚拟机设置,选择"硬盘"→点击"扩展";
  2. 输入目标容量(如原130G→180G,增加50G),点击"确认";
  3. 启动Ubuntu虚拟机,执行df -h确认当前根分区容量(此时尚未变化)。

步骤2:调整磁盘分区(2种方式)

Ubuntu的LVM物理卷通常位于扩展分区(sda2)内的逻辑分区(sda5),需先扩展外层分区,再扩展内层分区。

方式1:命令行工具parted(推荐)
  1. 查看当前分区表:

    bash 复制代码
    sudo parted /dev/sda p
  2. 进入parted交互模式,扩展扩展分区(sda2):

    bash 复制代码
    sudo parted /dev/sda
    (parted) resizepart 2  # 选择扩展分区sda2
    (parted)  # 提示"End?"时直接按回车(使用磁盘最大扇区)或者增加扩展的size
  3. 扩展逻辑分区(sda5,LVM物理卷):

    bash 复制代码
    (parted) resizepart 5  # 选择逻辑分区sda5
    (parted)  # 提示"End?"时直接按回车(使用sda2的最大空间)或者增加扩展的size
    (parted) q  # 退出parted
方式2:图形化工具GParted(适合可视化操作)

若分区处于挂载状态(如根分区),需从Ubuntu Live CD启动(选择"试用Ubuntu"),再执行:

  1. 打开GParted,顶部下拉选择/dev/sda
  2. 选中sda2(扩展分区)→点击"调整大小/移动"→拖至磁盘最大空间;
  3. 选中sda5(LVM物理卷)→点击"调整大小/移动"→拖至sda2的最大空间;
  4. 点击顶部"应用"(绿色对勾)执行分区调整。

步骤3:LVM空间同步(核心!解决df不识别问题)

分区扩展后,需通过LVM工具将空间传递到根分区:

  1. 更新物理卷(PV):让LVM识别sda5的扩展空间

    bash 复制代码
    sudo pvresize /dev/sda5
  2. 查看卷组(VG)空闲空间:确认新增空间已进入卷组

    bash 复制代码
    sudo vgdisplay ubuntu--vg

    重点看Free PE / Size项,会显示分区扩展后新增的空闲空间。

  3. 扩展逻辑卷(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,查看根分区(/)容量是否已更新。

四、常见问题处理

  1. sda2无法调整大小

    原因:分区处于挂载状态;

    解决:从Ubuntu Live CD启动后再调整。

  2. GParted扩展后df无变化

    原因:未执行LVM同步步骤;

    解决:重新执行pvresizelvextendresize2fs

  3. LVM空闲空间不足

    原因:分区未真正扩展;

    解决:重新执行步骤2的分区调整,再同步PV。

总结

VMware+Ubuntu+LVM的扩容核心是"虚拟机磁盘→分区→LVM→文件系统"的逐层同步,其中LVM步骤是最容易遗漏的环节(也是解决"df不识别空间"的关键)。操作前务必备份数据,遇到分区挂载限制时,优先使用Ubuntu Live CD启动。

相关推荐
l1t2 小时前
利用docker在windows 11 wsl中安装oracle 12cR2
运维·windows·docker·oracle·容器
HalvmånEver2 小时前
Linux:库制作与原理(二)
linux·运维·服务器
芝麻开门-新起点2 小时前
第17章:制图自动化与地图设计优化
运维·自动化
旖旎夜光2 小时前
Linux知识(1)(下)
linux·学习
HalvmånEver2 小时前
Linux:库制作与原理(一)
linux·运维·服务器
秋深枫叶红2 小时前
嵌入式第三十九篇——linux系统编程——信号通信、共享内存
linux·运维·服务器·学习
咸鱼加辣2 小时前
【nginx面试题】nginx虚拟
运维·nginx·github
乌萨奇也要立志学C++2 小时前
【Linux】线程互斥与互斥量全解析:原理、实践与封装
linux·服务器
hweiyu002 小时前
Linux命令:gzip
linux