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

6次阅读

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

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

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

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

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

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

切换到对应挂载点(如 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 再确认。

站长
版权声明:本站原创文章,由 站长 2025-12-13发表,共计1235字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources