当前位置: 代码网 > 服务器>服务器>Linux > Linux中df -h与lsblk显示不一致问题的解决方法

Linux中df -h与lsblk显示不一致问题的解决方法

2026年04月14日 Linux 我要评论
在日常 linux 运维工作中,我们经常会用到 lsblk 和 df -h 两个命令查看磁盘信息,但偶尔会遇到一个令人困惑的问题:两者显示的磁盘容量不一致。最近在维护一台 ecs 服务器时,就遇到了这

在日常 linux 运维工作中,我们经常会用到 lsblkdf -h 两个命令查看磁盘信息,但偶尔会遇到一个令人困惑的问题:两者显示的磁盘容量不一致。最近在维护一台 ecs 服务器时,就遇到了这种情况,特此记录排查过程和解决方法,供有同样需求的运维同行参考。

一、问题现象:两者显示差异明显

在服务器上执行 lsblk 命令查看磁盘信息,发现 /dev/sdc 磁盘容量为 215gb(实际购买的是 200gb 云硬盘,因计算进制差异显示为 215gb),且已挂载至 /var/lib/docker 目录。

具体执行结果如下:

[root@ecs-90894794 ~]# lsblk
name          maj:min rm  size ro type mountpoint
sda             8:0    0   40g  0 disk 
├─sda1          8:1    0    1g  0 part /boot
└─sda2          8:2    0   39g  0 part 
  └─klas-root 253:0    0   39g  0 lvm  /
sdb             8:16   0  200g  0 disk 
sdc             8:32   0  215g  0 disk /var/lib/docker
sr0            11:0    1  458k  0 rom  

但当执行 df -h /var/lib/docker 查看该挂载点的实际使用情况时,却发现容量仅为 50gb,已用 70%,与 lsblk 显示的 215gb 相差巨大。

[root@ecs-90894794 ~]# df -h /var/lib/docker
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdc         50g   35g   16g   70% /var/lib/docker

二、问题排查:一步步定位原因

遇到这种差异,首先要明确两个命令的核心区别,才能针对性排查:

  • lsblk:查看的是物理磁盘/分区的硬件容量,反映的是磁盘本身的实际大小,不受文件系统影响;
  • df -h:查看的是文件系统已挂载的可用容量,显示的是文件系统实际可使用的空间,而非磁盘硬件本身的容量。

基于这个区别,排查思路如下:

1. 确认磁盘分区是否完整

首先怀疑是磁盘分区未占满整个物理磁盘,导致 lsblk 显示物理盘容量,而 df 显示分区容量。执行 parted /dev/sdc print 查看分区详情:

[root@ecs-90894794 ~]# parted /dev/sdc print
型号:qemu qemu harddisk (scsi)
磁盘 /dev/sdc:215gb
扇区大小 (逻辑/物理):512b/512b
分区表:loop
磁盘标志:

编号  起始点  结束点  大小   文件系统  标志
 1    0.00b   215gb   215gb  xfs

从输出可以看到,/dev/sdc 只有一个分区,且分区已占满整个 215gb 磁盘,排除“分区未占满物理盘”的问题。

2. 确认文件系统类型及状态

排除分区问题后,重点排查文件系统。执行df -t /var/lib/docker 查看文件系统类型:

[root@ecs-90894794 ~]# df -t /var/lib/docker
文件系统       类型    1k-块     已用     可用 已用% 挂载点
/dev/sdc       xfs  52403200 36295308 16107892   70% /var/lib/docker

确认文件系统为 xfs,这是关键信息。结合排查结果,最终定位原因:

磁盘已从 50gb 在线扩容至 215gb,分区表已自动同步扩容,但 xfs 文件系统未跟随扩容,仍停留在原来的 50gb 大小

补充说明:xfs 文件系统本身不支持自动扩容,即使底层磁盘/分区扩容,也需要手动执行命令让文件系统识别新增空间。

三、解决方法:一键扩容 xfs 文件系统

由于分区已占满整个物理磁盘,且文件系统为 xfs,只需执行一条命令即可完成扩容,无需停机、不丢失数据,全程在线操作。

核心命令(直接复制执行)

xfs_growfs /var/lib/docker

命令说明

xfs_growfs 是 xfs 文件系统的扩容工具,作用是将文件系统大小扩展至底层分区的最大可用空间。这里直接指定挂载点 /var/lib/docker,工具会自动识别对应的分区和文件系统,完成扩容。

验证结果

扩容完成后,再次执行 df -h /var/lib/docker 查看效果:

[root@ecs-90894794 ~]# df -h /var/lib/docker
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdc        215g   35g  180g   17% /var/lib/docker

此时 df -h 显示的容量与 lsblk 一致,问题彻底解决。

四、常见场景补充(避坑指南)

除了本次遇到的“xfs 文件系统未扩容”场景,df -hlsblk 不一致还有以下两种常见情况,可对应排查:

场景1:分区未占满物理磁盘

表现:lsblk 显示物理盘容量大,parted 查看分区仅占一部分空间。

解决:先通过 parted 调整分区大小(扩大至物理盘100%),再执行对应文件系统的扩容命令(xfs 用 xfs_growfs,ext4 用 resize2fs)。

场景2:文件系统为 ext4 未扩容

表现:与本次场景类似,但文件系统为 ext4。

解决:分区扩容后,执行 resize2fs /dev/xxx(xxx 为分区名,如 /dev/sdc1)即可。

到此这篇关于linux中df -h与lsblk显示不一致问题的解决方法的文章就介绍到这了,更多相关linux df -h与lsblk显示不一致内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com