磁盘满了别急着删日志:先用 du 找到真正的大户
服务器报磁盘满,第一反应往往是删日志腾空间,结果删完没多久又满了,还可能删掉正在排查问题的关键记录。磁盘满不等于日志多,先找到真正的大户再动手,顺序应该是:看整体、定位目录、确认文件能不能删。
第一步看整体:df -h。重点看 Use% 和挂载点,先确认是哪块盘满了——根盘满和数据盘满的处理完全不同。根盘满会影响系统服务,数据盘满往往只是某个应用的数据目录在涨。只看百分比还不够,顺手看 Avail 剩多少,判断是立刻要处理还是可以从容排查。
第二步定位目录:du -sh /* 逐层往下钻。du 看的是目录实际占用的空间,从根目录一级一级往下找最大的那一支,比如发现 /var 特别大,再进 /var 看是 log、lib 还是 tmp 在涨。不要一上来就 du -sh // 全盘扫,大目录扫起来很慢,还容易被挂载的外部盘干扰。找到可疑目录后,用 du -sh <目录>/* 继续钻,直到锁定到具体的应用目录。
第三步确认文件能不能删,再决定怎么删。日志文件如果还被进程占用,直接 rm 删掉并不会释放空间——文件句柄还在进程手里,磁盘占用要等进程退出才降。正确做法是先 truncate 清空(: > 文件名)或者重启对应服务后再删。数据库目录、备份目录、容器镜像层这些大户更不能随手删:先确认是不是过期备份、悬空镜像(docker images 里 dangling 的),能用工具清理的优先用工具,比如 docker system prune、日志轮转,而不是手动 rm -rf。
还有两个容易被忽略的大户。一是 /tmp 和应用临时目录,长期运行的服务会在这里堆积临时文件,重启服务或定期清理才有效;二是被删除但未释放的文件,用 lsof | grep deleted 能看到,删了文件却空间没回来,八成是这个原因,重启占用进程即可。
总结排查口诀:df 定盘、du 定位、确认归属再删。磁盘满时先别急着删日志,找到大户、确认能不能动,再动手清理,这样既腾出了空间,也不会把排查线索和重要数据一起删掉。
- 点赞
- 收藏
- 关注作者
评论(0)