Ubuntu 磁盘扩容与扩容失败障碍解决( df -h 与 GParted 显示空间不一致的问题 -LVM)

在管理 Linux 磁盘时,你是否遇到过这样的困惑:正常扩容之后,发现GParted 显示某个分区还有几十 GiB 可用,但 df -h 却提示该分区已接近满额?这种 “空间幻觉” 背后是系统存储管理的分层设计,本文将从原理到实践,带你彻底解决这个问题。

阅读说明

一、背景与扩容步骤 这部分是关于虚拟机如何扩容步骤及相关背景

二、解决不一致问题(未正常扩容) 这一部分是说明按照扩容步骤正常扩容之后,但是使用df -h查看磁盘却未发生任何改变。(可能是因为LVM2的原因)

后续其余部分是关于LVM2为什么会出现相关情况,及LVM相关操作的相关说明

根据实际情况选择需要的部分阅读。

一、背景与扩容步骤

环境:VMware 安装的Ubuntu24.04 .1 server版本

事件起因:当我发现虚拟机磁盘空间被占满时,进行了相关的扩容操作。如下图所示:

1、发现磁盘告警

在这里插入图片描述

2、扩容

关闭虚拟机–>点击硬盘–>扩展–>根据需要设置磁盘总大小 (我在截图之前是60g,后来改成了70g,但是不影响具体步骤)

在这里插入图片描述

改好之后启动虚拟机。

3、使用gparted工具调整大小(使用可视化工具,最简单)

由于我安装的Ubuntu server版本(如果使用的是其它桌面版,就不会存在这个问题,直接运行命令sudo gparted 即可),在命令行无法支持ui界面。所以我采用一个远程工具(MobaXterm)进行ssh远程连接到服务器(Ubuntu server)。

在这里插入图片描述

执行命令:

sudo gparted

可能遇到的问题:

1、未安装gparted工具

sudo install gparted  //安装gparted工具

2、MobeXterm 可能会遇到的问题。如下图:

在这里插入图片描述

打开图上所示网页,可以找到解决办法:

在这里插入图片描述

执行命令,成功之后会看见gparted的ui界面,如下图:

sudo xauth add $(xauth -f ~ml/.Xauthority list|tail -l)  //命令中的ml改为自己的用户名
sudo gparted                                            //再执行这个命令即可正常打开

在这里插入图片描述

打开gparted工具界面之后,选择想要更改大小的分区,鼠标右键–>Resize/Move

在这里插入图片描述

更改文件系统大小,可以直接拖动。也可以直接改数字,如图(说明:截图中是已经改过了的,未改之前会发现是有颜色区分的):

在这里插入图片描述

改好之后点击Resize -> 再点击上面勾按钮

在这里插入图片描述

最后点击应用(Apply)

在这里插入图片描述

说明:正常情况下,从开始步骤到这个地方,已经完成了虚拟机的扩容操作。,但是我装虚拟机默认使用的LVM2 全称是 Logical Volume Manager,即逻辑卷管理器。 就会出现扩容不成功(其实是扩容步骤还未完成,即df -h 与gparted不一致问题)。 最后我会说明为什么会出现这个问题。

4、发现不一致问题截图对比

现象:GParted 显示物理卷(如 /dev/sda3)有未分配空间,但 df -h 显示逻辑卷(如 /dev/mapper/ubuntu--vg-ubuntu--lv)已接近满额。

在这里插入图片描述

二、解决不一致问题(未正常扩容)

解决步骤:扩展逻辑卷 + 扩展文件系统

1、检查卷组剩余空间

sudo vgdisplay # 查看卷组(如 ubuntu-vg)的剩余空间

输出中 Free PE 有数值(图中为 39.00 GiB),说明卷组有未分配空间。如图:

在这里插入图片描述

2 、扩展逻辑卷

将逻辑卷(如 ubuntu-vg/ubuntu-lv)扩展到卷组剩余空间的 100%:

sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

(或指定具体大小:lvextend -L +39G /dev/...

在这里插入图片描述

3、扩展文件系统

根据文件系统类型选择命令(ext4 用 resize2fs,xfs 用 xfs_growfs):

# ext4 示例
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
# xfs 示例
sudo xfs_growfs /dev/ubuntu-vg/ubuntu-lv

在这里插入图片描述

4 、验证结果

再次执行 df -h,确认逻辑卷的 “Size” 和 “Avail” 已更新。

在这里插入图片描述

三 、详细解释不一致的原因:

1. 显示的对象不同
  • gparted:显示的是物理卷(PV) 的大小。即:硬盘上划分出来的那个类型为 lvm2 pv 的分区有多大。这是“分配给LVM的总空间”。
  • df -h:显示的是逻辑卷(LV) 上的文件系统的使用情况。即:从LVM池子里划出来的那个“逻辑分区”(如根目录 / 对应的那个卷)有多大以及用了多少。这是“你实际可用的空间”。
2. 层级关系

空间分配的流程是:物理磁盘 → 分区(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统 → 存储文件

gparted 在第二层,df -h 在第五层。中间的任何变化都会导致两者显示的数字不同。

四、为什么会出现这种情况?常见场景:

场景一:LVM卷组有剩余空间(最常见)

这是最普遍的情况。安装系统时,你可能把整个磁盘都作为一个物理卷(PV)给了LVM的卷组(VG),但只从卷组中划出了一部分空间来创建根文件系统(LV)。

  • gparted 显示:整个PV的大小(例如:100GB)。
  • df -h 显示:根逻辑卷(LV)的大小(例如:90GB)。
  • 差异:剩下的 10GB 空间仍在卷组(VG)中,是未分配的“空闲空间”,可以被用来扩展现有的逻辑卷或创建新的逻辑卷。这部分空间 df -h 是看不到的。

如何验证?
使用 sudo vgdisplay 命令查看卷组信息,你会看到:

  • VG Size:应该接近 gparted 显示的大小。
  • Free PE / Size:这里会显示卷组中尚未分配出去的剩余空间。这个数字大致就是 gparted 大小减去 df -h 大小的差值。
场景二:文件系统没有占满整个逻辑卷(LV)

即使逻辑卷(LV)本身有100GB,你在上面创建的文件系统(如ext4)也可能只用了90GB。

  • gparted 显示:PV大小 = 100GB
  • lsblk 显示:LV大小 = 100GB
  • df -h 显示:文件系统大小 = 90GB

如何验证?
使用 sudo lvdisplaylsblk 命令。lsblk 会同时显示LV的大小和其上层文件系统的大小,非常适合用来排查这种差异。

$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                         8:0    0 238.5G  0 disk
├─sda1                      8:1    0   512M  0 part /boot/efi
├─sda2                      8:2    0   732M  0 part /boot
└─sda3                      8:3    0 237.3G  0 part
└─ubuntu--vg-ubuntu--lv 253:0    0   100G  0 lvm  /  # 逻辑卷(LV)大小
# df -h 显示的是挂载到 / 的这个文件系统的使用情况,可能只有90G
场景三:保留了启动分区或交换空间

你的磁盘上可能不仅有LVM分区,还有独立的 /boot/efi/boot 分区或交换分区。gparted 会显示所有分区,而 df -h 只显示已挂载的文件系统。

五、如何全面了解你的磁盘空间?

要弄清所有空间去哪了,建议按顺序使用以下命令:

  1. sudo fdisk -lsudo parted -l:查看物理磁盘和最底层的分区布局。
  2. sudo pvdisplay:查看物理卷(PV)信息,确认LVM管理的物理空间。
  3. sudo vgdisplay:查看卷组(VG)信息,重点关注 Free PE / Size,这是谜题的关键。
  4. sudo lvdisplay:查看逻辑卷(LV)信息。
  5. lsblk这是最直观的工具,它以树形结构一次性显示磁盘、分区、物理卷、逻辑卷和挂载点之间的关系和大小。
  6. df -h:最后看文件系统的具体使用情况。

常用的LVM管理命令:

如果您想查看系统的LVM结构,可以在终端中使用以下命令:

命令功能描述
sudo pvdisplay显示物理卷的详细信息
sudo vgdisplay显示卷组的详细信息
sudo lvdisplay显示逻辑卷的详细信息
lsblk以树形结构清晰显示磁盘、分区和逻辑卷的关系
df -h查看已挂载的文件系统及其大小(会显示逻辑卷的挂载点)

总结:gparteddf -h 的大小不一致是正常的,这恰恰体现了LVM将物理存储和逻辑存储分离的核心优势——卷组(VG)中的空闲空间为你提供了极大的灵活性,你可以随时将其添加到需要扩容的逻辑卷中,而无需重新分区。

posted @ 2025-09-21 09:57  wzzkaifa  阅读(204)  评论(0)    收藏  举报