磁盘满了怎么处理?
五个经典回答示范
三步走:df -h 定位满的挂载点;du 逐层找大文件——du -x --max-depth=1 从挂载点开始逐层下钻;第三步处理有讲究——日志截断(truncate 不是 rm 正在被写的文件)、临时文件清理、然后治理:logrotate 配置、告警阈值(80% 警告 90% 严重)、大文件目录隔离到独立分区防拖垮系统盘。
我讲一次生产事故:凌晨根分区 100%,服务全挂。紧急处理发现是被删文件占着空间——lsof | grep deleted 列出句柄未释放的 30G 日志,正确姿势是 truncate 文件而非 rm(rm 后空间仍被占用直到进程重启),重启对应服务释放。根因是应用日志没有轮转策略且这次异常刷屏。整改:全机 logrotate 巡检、日志目录独立分区、磁盘告警提前到 75%。这个案例的教训:删文件前先 lsof 是肌肉记忆。
资深视角:磁盘治理是体系问题。分层设计——系统盘只放系统与配置、数据独立卷、日志独立卷加轮转加保留天数策略、临时目录定时清理加 size 上限;容量管理——增长率监控(按天外推剩余天数)提前扩容,而不是等告警;根因文化——满盘只是症状:是日志异常暴涨(应用 bug)、数据膨胀无归档(缺冷热分离)、还是被写入攻击(安全事件),分类处置才治本。
追问『inode 满了怎么办』:df -i 看 inode 使用率,海量小文件是元凶——find 按时间清理,日志分片策略改大文件模式;『LVM 怎么在线扩容』:pvextend 加盘、lvextend -r 在线扩文件系统;『怎么防止再发生』:自动清理加轮转加容量预测三件套,告警分级通知到人。
『磁盘满了 rm 掉最大的日志就行,删了马上好,写个定时任务每天删 /var/log 下所有文件,一劳永逸。』——点评:rm 正在写的文件空间不释放还可能让应用异常;『每天删所有日志』等于没有日志——出问题无据可查,还可能删掉审计要求保留的记录。
- 打开 模拟练习,选择「运维/DBA」方向,限时 3 分钟作答本题。
- 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
- 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。
这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。