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启动。

相关推荐
小小管写大大码4 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
嵩山小老虎4 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模5 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
zhang133830890755 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
a41324475 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.6 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技6 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺6 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops
酣大智6 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
一只自律的鸡7 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug