磁盘满了别急着删:df 与 du 排查的三步法

举报
yiboyun 发表于 2026/11/02 20:12:52 2026/11/02
【摘要】 服务器上最常见的半夜报警之一就是磁盘满了。服务写不进日志、数据库拒绝写入、部署传不上包,表象五花八门,根因往往只有一个:某个地方在悄悄吃空间。慌着删文件之前,先分清“满的是哪块盘、是谁占的、能不能安全删”,三步走比凭感觉清理稳得多。第一步用 df 看全局。df -h 列出每个挂载点的总容量、已用、可用和挂载位置,先确认告警对应的是根分区、数据盘还是某个单独挂载的目录。还要留意一个容易被忽略的...

服务器上最常见的半夜报警之一就是磁盘满了。服务写不进日志、数据库拒绝写入、部署传不上包,表象五花八门,根因往往只有一个:某个地方在悄悄吃空间。慌着删文件之前,先分清“满的是哪块盘、是谁占的、能不能安全删”,三步走比凭感觉清理稳得多。第一步用 df 看全局。df -h 列出每个挂载点的总容量、已用、可用和挂载位置,先确认告警对应的是根分区、数据盘还是某个单独挂载的目录。还要留意一个容易被忽略的数字:inode 用量。df -i 能看到 inode 是否耗尽——小文件成千上万时,磁盘明明还有空间,系统却因为没有 inode 可分配而写不进新文件,这时删大文件完全没用,得清掉海量小文件才行。第二步用 du 往下钻。确定了分区,就从挂载点一层层往下找:du -sh /var/* 看一级目录各占多少,再对最大的那个继续 du -sh /var/log/*,几轮就能定位到吃空间的目录。注意 du 默认会跟随目录但不跨文件系统,跨分区排查时加 -x 限制在同一文件系统内,避免把别的挂载点也算进来。还有一个常见误区:du 看的是文件实际占用的块大小,稀疏文件、硬链接多的目录算出来的数字和直觉会有出入,定位时以相对大小排序为准,不必纠结绝对精确。第三步区分“能删、能挪、不能动”。日志目录通常是头号嫌疑:先看是不是某个服务在疯狂打日志,根因是日志级别开得太高或某个错误在循环刷屏,删日志不改配置等于白删。其次看临时文件和旧备份:下载一半的包、过期的快照、很久没人要的 core dump,这些删了一般无害,但删之前确认没有进程正在用它。最要小心的是“已删除但仍被占用的文件”:文件删了,df 却不见空间释放,往往是有进程还握着已删除文件的句柄,日志文件被 rm 后服务还在往旧句柄里写。这时 lsof | grep deleted 能找到元凶,正确做法是重启对应服务或让它重新打开日志,而不是继续删别的文件凑空间。有三类东西不要凭感觉动。数据库的数据目录、正在运行的服务的可执行文件和配置文件、以及任何你不确定归属的目录,删之前先备份或先确认用途。空间实在紧张时,优先做“挪”而不是“删”:把旧日志、旧备份移到另一块盘或对象存储,既释放了空间,又留了后悔药。长期来看,防满比救火重要:给日志配轮转(logrotate 或应用自带的 retention),给备份定保留期,给关键分区设使用率告警阈值,比如 80% 预警、90% 必须处理,别等到 100% 才动手。一句话总结:磁盘满了先 df 定分区、再 du 定位目录、最后分清能删能挪不能动;已删除文件不释放空间时,先查还握着句柄的进程。按这个顺序排查,既不会误删关键数据,也不会删完发现空间一点没回来。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。