存储扩容怎么排查文件系统空间已满但 du 与 df 命令统计不一致的故障

风静姑娘_5934

风静姑娘_5934

2026-11-08

946人浏览

原创

根本原因是df统计文件系统已分配块(含已删未释放文件),du仅统计目录树可见文件;差值即“幽灵占用”空间,主因包括被进程占用的已删除文件、inode耗尽、挂载点干扰、文件系统预留空间等。

存储扩容怎么排查文件系统空间已满但 du 与 df 命令统计不一致的故障

遇到文件系统显示已满,但 du 统计总和远小于 df 显示的已用空间,这不是误报,而是典型的空间“幽灵占用”。根本原因在于:df 看的是文件系统超级块里的真实分配块,du 看的是当前目录树下还能被遍历到的文件。两者统计对象不同,差值就是那些“看不见却占着地”的资源。

先确认是不是真的容量满,还是 inode 或其他资源耗尽

执行这两条命令缺一不可:

  • df -hT:看各挂载点容量使用率(Use%)和文件系统类型
  • df -i:看 inode 使用率(IUse%)

如果 Use% 接近 100%,而 IUse% 很低,说明是磁盘块耗尽;如果 IUse% 到了 100%,哪怕还有几十 GB 空间,也无法创建新文件——这是大量小文件(如日志碎片、临时 session、容器缓存)撑爆了 inode 表。此时删大文件没用,得清空数百万个零散小文件。

排除挂载覆盖和跨文件系统干扰

很多服务器在 /var、/home 下挂了独立分区或 tmpfs(比如 /dev/shm、/run、/tmp)。df 会把每个挂载点单独列出,而 du 默认会递归进入所有子目录,包括那些已挂载的新文件系统,导致重复计算或漏算。

  • 用 df -h 查看所有挂载点,留意 /tmp、/var/log/journal、/run 等是否为 tmpfs(内存盘)
  • 查 /var 时,加 -x 参数避免跨区:du -sh --max-depth=1 -x /var 2>/dev/null | sort -hr
  • 若发现某目录(如 /var/lib/docker)实际是 LVM 卷或 overlay2 存储,需单独进该路径再 du,不能只在 /var 下扫

揪出“已删未释放”的 deleted 文件

这是 df 和 du 差值最大的常见原因:文件被 rm 删除,但进程仍在写它(如 Java 日志、Nginx access.log、Docker 容器 stdout),内核保留数据块和 inode,直到进程关闭 fd。

  • 运行 sudo lsof +L1(+L1 表示链接数为 0 的打开文件)
  • 或用 sudo lsof | grep deleted 快速筛选
  • 输出中类似这样的一行就是线索:java 1234 root 1w REG 8,1 2.1G 123456 /var/log/app.log (deleted)
  • 处理方式分情况:
    — 允许重启服务:systemctl restart app.service
    — 不允许重启:清空该 fd 对应内容,例如进入 /proc/1234/fd/ 找到对应数字(如 1),执行 > 1

检查保留空间与隐藏元数据开销

ext3/ext4 默认为 root 预留 5% 空间(防止系统完全卡死),这部分计入 df 的 Used,但 du 统计不到。可通过以下命令确认:

  • tune2fs -l /dev/sda1 | grep "Reserved block count" 查预留块数
  • sudo dumpe2fs -h /dev/sda1 2>/dev/null | grep -E "(Block count|Reserved)"
  • 若预留比例过高(如 10%),且磁盘确实紧张,可临时调低:tune2fs -m 1 /dev/sda1(设为 1%,慎用)

另外,LVM 快照、XFS 日志、btrfs 子卷配额等高级特性也会造成 df/du 偏差,需结合具体文件系统类型进一步排查。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

980

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3472

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1136

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

1009

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

534

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3196

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

6032

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

927

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习