Linux 磁盘满了先别删:从定位、确认到安全清理的完整排查流程
磁盘告警往往来得突然:部署写不进文件、数据库拒绝写入、日志停更,第一反应是删文件腾空间。但在生产机上,删错一个正在被写入的文件、删掉还没归档的日志,损失可能比磁盘满本身更大。本文给出一套先定位、再确认、最后清理的流程,目标是花最少的时间恢复写入,同时不制造二次事故。
第一步,先看整体,别急着进目录。df -h 能告诉你哪块盘满了、使用率是多少、挂载点是哪里;df -i 同样重要,因为文件数量耗尽时,即使还有空间也写不进文件,这类问题在大量小文件的缓存、会话目录里很常见。把这两个结果记下来,再决定往哪个挂载点深入,不要凭感觉在根目录里翻。
第二步,用分层定位代替全盘扫描。du -sh 目录可以逐层下钻,先看一级目录,再进最大的那一个;如果目录很深、文件很多,用 du 结合排序会更直观。需要提醒的是,刚删除的大文件如果仍被进程占用,空间并不会立刻释放,这时用 lsof 查看被删除但仍打开的文件,往往比继续删文件更有效。正确做法通常是重启相关进程或让其重新打开日志,而不是反复删除。
第三步,区分四类常见占用,再决定动作。第一类是日志:先看是否可以轮转、压缩或归档,确认保留期限后再清理旧文件,不要直接清空正在写入的日志文件。第二类是临时文件和缓存:先确认它们是否可重建,构建缓存、下载缓存一般可以重建,但正在进行的任务产物要先确认。第三类是数据库与备份:备份文件不要因为体积大就随手删,先核对备份策略和最近一次成功备份的时间。第四类是应用数据:用户上传、导出文件、消息队列堆积都属于业务数据,删除前必须和业务方确认。
第四步,清理要留证据、可回滚。先把待删除的清单列出来,包括路径、大小、最后修改时间和归属服务;能移动到临时目录先观察一段时间,就不要直接永久删除;删除后立刻用 df 复核,并检查服务是否恢复写入、日志是否继续增长。一次只做一类清理,做完验证再做下一类,这样一旦出问题也知道是哪一步引起的。
第五步,恢复之后做三件预防工作。第一是给关键目录设告警阈值,例如使用率到百分之八十就提醒,而不是等到百分之百才处理。第二是给日志做轮转和保留策略,避免单个日志文件无限增长。第三是定期复盘占用增长最快的目录,把临时清理变成固定动作,例如每周检查一次缓存目录和备份目录。
最后记住一个原则:磁盘满是症状,不是病因。日志暴涨可能来自重复报错,缓存暴涨可能来自失败重试,备份堆积可能来自清理任务失效。清理腾出空间只是第一步,顺着最大的占用找到产生它的服务和任务,才算真正解决问题。下次再收到磁盘告警时,先定位、再确认、最后清理,你就不会在深夜因为删错文件而再写一份故障复盘。
- 点赞
- 收藏
- 关注作者
评论(0)