亿华智慧云亿华智慧云

df 显示磁盘 100%,du 却没占多少空间?真正原因就这三种情况!

今天分享一下df与du的显示本质区别,并列举几个相关的磁盘常见磁盘处理案例。

1. df 与 du 的却没情况本质区别

命令

工作原理

显示内容

df

读取 文件系统元数据

统计磁盘分区整体使用情况(包含“不可见”文件)

du

遍历 实际目录树

仅统计当前目录下用户可访问的文件大小

也就是说:du 是你能“看见”的,df 是占多正原磁盘系统“知道”的!

因为df与du都是站群服务器少空为了查看磁盘使用情况,我画了个磁盘空间整体的因种排查流程图:

下面主要讲解du显示与df显示不一样可能潜在的三种常见原因。

2. 删除了文件但空间未释放

(1) 场景描述:

某个大日志文件被 rm 删除了;但该文件仍被某个服务(如 Nginx、显示Java、磁盘Python 等)占用;df 显示空间没释放,却没情况而 du 看不到这个文件了!占多正原

(2) 如何验证?少空

复制lsof | grep deleted1.

(3) 解决方案:

复制# 杀掉占用文件的进程 kill -9 进程ID # 或者重启服务(推荐) systemctl restart 服务名1.2.3.4.5. 3. 挂载点覆盖了原数据

(1) 场景描述:

原本写入 /data 下的大文件;后来你挂载了一个磁盘到 /data,把原来的因种内容“遮住”了;du 只看到挂载后的b2b供应网目录内容,df 依然计算之前“被遮挡”的显示那部分。

(2) 如何验证?磁盘

复制# 检查当前挂载 mount | grep data # 查看原始挂载点所在目录 umount /data ls -lh /data # 你可能会看到消失的大文件1.2.3.4.5.6.

(3) 解决方案:

临时卸载该目录;删除原本隐藏的大文件;或者创建一个新目录挂载点(避免覆盖);重新挂载新挂载点上;更新 fstab,设置永久挂载4. inode 耗尽

(1) 场景描述:

df 显示还剩几 G;但无法创建新文件,却没情况提示 No space left on device;原因其实是 inode 用完了!

(2) 检查 inode 使用情况

复制df -i1. 复制Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 655360 655360 0 100% /1.2.

(3) 排查哪个目录有大量小文件

复制find /var -type f | wc -l1.

(4) 解决方案:

清理缓存目录,如:

复制rm -rf /var/cache/*1. 优化程序避免大量小文件;考虑用 xfs 等 inode 更宽裕的文件系统。云服务器
赞(844)
未经允许不得转载:>亿华智慧云 » df 显示磁盘 100%,du 却没占多少空间?真正原因就这三种情况!