Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】

3次阅读

linux磁盘空间排查四步法:先用df -h定位高危分区,再用du -sh *逐层下钻找大目录,接着用lsof +L1检查已删仍被占用文件,最后用find专项扫描隐藏、大、稀疏及多硬链接文件。

Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】

排查Linux磁盘空间问题,核心是“定位谁占了空间、为什么占、怎么清理”,不靠猜,靠逐层缩小范围。以下流程适用于物理机、虚拟机、容器宿主机、云服务器等全部场景,已验证多年稳定有效。

第一步:确认哪个分区爆满

df -h 看整体使用率,重点关注 Use% 列超过85%的挂载点(如 /、/home、/var)。注意看 Mounted on 列——别只盯着 /dev/sda1,要结合挂载路径判断实际影响范围。若看到 100% 但系统还能操作,可能是已删除文件仍被进程占用(见第三步)。

Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】

神笔马良

神笔马良 – AI让剧本一键成片。

Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】 320

查看详情 Linux磁盘空间如何排查_标准流程剖析适用于全部场景【指导】

第二步:进入高危分区,找大目录

切换到对应挂载点(如 cd /),运行:
du -sh * 2>/dev/NULL | sort -hr | head -20
说明:
du -sh * 统计当前层各目录大小(-s 合并子项,-h 可读)
2>/dev/null 屏蔽权限不足报错(避免干扰排序)
sort -hr 按人类可读格式逆序排(G > M > K)
head -20 只看前20个最大项
常见高危目录:/var/log、/var/lib/docker、/home、/tmp、/usr/local。找到最大目录后,cd 进去重复执行该命令,逐层下钻。

第三步:检查被删除但仍被占用的空间(隐藏空间)

执行:
lsof +L1lsof | grep deleted
若输出非空,说明有进程正打开已被 rm 删除的文件,其空间不会释放。典型场景:
• 日志轮转未重启服务(如 nginxjava 应用)
• 长期运行的守护进程持续写入已删日志文件
解决方法
• 重启对应服务(最稳妥)
• 或用 kill -USR1 [pid] 触发日志重开(需程序支持,如 nginx
• 极端情况可 kill 进程释放(评估业务影响)

第四步:查清“看不见”的大文件(隐藏、稀疏、硬链接)

有些文件 du 算不到,但真实占磁盘,需专项扫描:
• 查隐藏文件:du -sh .[a-zA-Z0-9]* 2>/dev/null | sort -hr | head -10
• 查大于100MB的普通文件:find /path -xdev -type f -size +100M -ls 2>/dev/null | sort -k7nr | head -10(-xdev 防跨分区)
• 查稀疏文件(如qcow2、docker overlay):find /path -xdev -type f -printf ‘%s %pn’ | sort -nr | head -5(用 %s 显示实际磁盘占用,非逻辑大小)
• 检查硬链接混乱:find /path -xdev -links +100 -ls 2>/dev/null | head -5(过多硬链接可能掩盖真实归属)

基本上就这些。四步下来,99% 的磁盘满问题都能准确定位。不复杂但容易忽略细节——比如没加 -xdev 跨了 NFS 导致卡死,或忘了 2>/dev/null 让错误刷屏盖过关键结果。动手前先 df,收尾后记得 df 再确认。

text=ZqhQzanResources