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)中的空闲空间为你提供了极大的灵活性,你可以随时将其添加到需要扩容的逻辑卷中,而无需重新分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/98273.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5中QLineEdit控件数值显示与小数位数控制

在PyQt5应用程序开发中,QLineEdit控件常用于显示和编辑文本内容。当需要用它来显示数值并控制小数位数时,开发者需要掌握一些特定的技巧。本文将深入探讨几种实现方法,每种方法都附带完整独立的代码示例。 数值格式化基础 在Python中&#xf…

LangChain使用方法以OpenAI 的聊天模型GPT-4o为例

以使用 OpenAI 的聊天模型(如 GPT-4)为例,从设置环境、初始化模型、调用模型到处理响应的各个方面进行介绍: 1. 环境设置 安装 langchain-openai 包。设置环境变量 OPENAI_API_KEY,用于认证(以linux为例&am…

Oracle为数据大表创建索引方案

在日常业务中,避免不了为数据量大表补充创建索引的情况,如果快速、有效地创建索引成了一个至关重要的问题(注意:虽然提供有ONLINE在线执行的方式,理想状态下不会阻塞DML操作,但ONLINE在开始、结束的两个时刻…

网站服务相关问题

目录 HTTP常见的状态码 http和https的区别以及使用的端口号 http处理请求的过程 https认证过程 正向代理和反向代理的区别 HTTP常见的状态码 HTTP(超文本传输协议)定义了一系列的状态码,用于表示客户端请求的处理结果。以下是一些常见的…

Go并发编程实战:深入理解Goroutine与Channel

Go并发编程实战:深入理解Goroutine与ChannelGo并发编程实战:深入理解Goroutine与Channel概述1. 为什么是Go的并发?从“线程”与“协程”说起2. Goroutine:如何使用?3. Channel:Goroutine间的安全通信创建与…

2025服贸会“海淀之夜”,点亮“科技”与“服务”底色

2025年9月12日傍晚,北京颐和园,十七孔桥旁,2025年中国国际服务贸易交易会“海淀之夜”如约而至。在“海淀之夜”,科技机构、金融机构、咨询服务机构、出海服务企业以及跨国企业和国际友人等,将目光聚焦于此。被第三方机…

qt使用camke时,采用vcpkg工具链设置VTK的qt模块QVTKOpenGLNativeWidget

下载:QVTKOpenGLNativeWidget嵌入qt应用中资源-CSDN下载 1.通过vcpkg安装VTK,目前的VTK里面默认为qt6,如果需要安装qt5,需要将端口配置进行修改 笔者的vcpkg的vtk端口路径:D:\vcpkg\ports\vtk portfile.cmake 修改点: #第一处 #file(READ "${CURRENT_INSTALLED_DIR}/sh…

Axios在鸿蒙应用开发中的使用

目录一、简介二、安装与配置三、axios用法1.axios泛型参数(1).第三个泛型参数-约束data请求参数的类型(2).第二个泛型参数-决定后台返回数据的类型2.axios拦截器3.请求工具封装统一处理业务状态码错误统一处理401或404错误一、简介 Axios 是一个基于 Promise 的网络请求库&…

第九周文件上传

文件上传漏洞 不同的网站要不同的webshell。我们使用是php开发的网站。 一服务器白名单绕过 服务端白名单(Whitelist)是⼀种安全机制,它只允许预定义的合法元素通过(只有有限的元素进入),其他所有内容默认被拒绝。相比黑名单&am…

计算机视觉必读论文:从经典到前沿

计算机视觉必读论文:从经典到前沿 一、前言 二、经典论文解读​ 2.1 图像分类​ 2.1.1 《ImageNet Classification with Deep Convolutional Neural Networks》(AlexNet)​ 2.1.2 《Very Deep Convolutional Networks for Large-Scale Image Recognition》(VGGNet)​ 2.1.…

对比PowerBI的字段参数,QuickBI的已选字段还有改进的空间

对比PowerBI的字段参数,QuickBI的已选字段还有改进的空间 之前分享过QuickBI的已选字段 vs PowerBI的字段参数,QuickBI可以在表格中实现PowerBI的字段参数效果,甚至比PowerBI实现的过程和使用方式更丝滑。 但如果应用到图形中会怎么样呢&am…

飞算JavaAI:Java开发新时代的破晓之光

免责声明:此文章的所有内容皆是本人实验测评,并非广告推广,并非抄袭。如有侵权,请联系,谢谢!【#飞算JavaAl炫技赛】 【#Java开发】摘要:飞算JavaAI作为全球首款聚焦Java的智能开发助手&#xff…

vulntarget-c靶场内网渗透

1. 环境搭建 2.对ubuntu20的渗透 对其进行端口扫描 访问80端口 发现是laravel框架。版本是v8.78.1 使用 kaili 自带的msf 进行渗透 search laravel use exploit/multi/php/ignition_laravel_debug_rce执行利用完成检测 上传木马 先将木马进行base64编码 <?php eval($_P…

基于大模型多模态的人体体型评估:从“尺码测量”到“视觉-感受”范式

基于大模型多模态的人体体型评估&#xff1a;从“尺码测量”到“视觉-感受”范式摘要&#xff1a;传统体型识别依赖CV骨架/关键点与像素量尺&#xff0c;容易受衣物、发型、姿态、光照影响&#xff0c;且“厘米级数值”与穿衣体验、审美感受之间存在鸿沟。本文提出一种基于大模…

【docker】——docker国内可用的源

不知道哪里来的&#xff0c;但是可以用。1. 解决方案打开配置文件&#xff08;若文件不存在&#xff0c;会自动创建&#xff09; sudo vim /etc/docker/daemon.json将以下内容粘贴进去{"builder": {"gc": {"defaultKeepStorage": "20GB&quo…

【Windows端口管理】快速查看和释放被系统保留的TCP端口

问题描述在Windows系统开发时&#xff0c;经常遇到端口无法使用的问题。系统会自动保留一系列TCP/UDP端口范围&#xff0c;导致应用程序无法绑定这些端口。查看所有被保留的端口范围查看TCP保留端口# 查看所有TCP端口排除范围 netsh interface ipv4 show excludedportrange pro…

面经汇总(1)

1.介绍C面向对象的三大特性2.介绍常见的排序算法3.介绍TCP/UDP区别4.TCP三次握手四次挥手5.如果四次挥手第四次客户端的ACK没有发出去会有什么结果&#xff1f;6.介绍MYSQL的事务7.介绍线程池8.主要的线程池有哪几种&#xff1f;9.手撕反转链表10.介绍对象存储以及常见的对象存…

遥感图像数字水印系统优化方案

遥感图像数字水印系统优化方案 1. 引言 遥感图像在现代地理信息系统、环境监测、军事侦察等领域发挥着重要作用。为了保护遥感图像的版权和完整性&#xff0c;数字水印技术被广泛应用。然而&#xff0c;现有的遥感图像水印方案往往在不可见性、鲁棒性和容量之间存在权衡&#x…

鸿蒙高效数据处理框架全攻略:缓存、并行与流式实战

摘要 在如今的物联网和智能设备世界里&#xff0c;数据已经成为最关键的资源。无论是可穿戴设备、智能家居&#xff0c;还是车载系统&#xff0c;每一秒都会产生大量数据。如果缺少一套高效的数据处理框架&#xff0c;开发者就可能面临内存溢出、处理延迟大、设备卡顿等问题。本…

零售企业数字化转型的道、法、术:基于开源AI大模型AI智能名片S2B2C商城小程序的战略重构

摘要 在数字经济与消费升级的双重驱动下&#xff0c;零售企业正经历从"流量争夺"到"用户时间争夺"的范式转变。本文以阿里巴巴、京东、万达三大巨头的战略实践为样本&#xff0c;结合开源AI大模型、AI智能名片与S2B2C商城小程序的技术特性&#xff0c;提出…