18638624151

磁盘空间不足的处理方案:从紧急清理到长效预防

服务器运维托管
磁盘空间不足的处理方案:从紧急清理到长效预防

磁盘空间告警在运维监控中出现的频率极高。很多人刚接触运维时收到告警就慌,盲目删文件甚至误删重要数据。处理磁盘空间问题要有章法,先定位再清理最后预防,三步走才能做到既快又不犯错。

快速定位空间消耗大户

收到告警后先用df -h确认具体哪个分区空间告急。接着用du -sh命令查看各一级目录的空间占用,锁定重点区域。日志目录通常是首要怀疑对象,应用每秒钟都在写日志,不配置轮转策略的话几天就能填满硬盘。数据库数据目录如果没有设置自动清理机制也会持续膨胀。临时文件目录/tmp和/var/tmp容易被人忽略,程序运行时产生的中间文件如果退出时没有正确清理,会像垃圾一样越堆越多。使用ncdu这样的交互式工具比逐层du高效得多,能一眼看出哪些目录和文件占用了最多空间。

紧急释放磁盘空间的操作步骤

当磁盘空间已用尽必须立即处理时,按以下优先级操作。第一步清理日志文件:用find /var/log查找三天前的日志文件并删除,或者用logrotate压缩归档。第二步清理journal系统日志:执行journalctl --vacuum-time=7d只保留最近七天。第三步清理缓存和临时文件:检查/tmp和/var/cache目录下的内容。第四步检查核心转储文件:ulimit -c生成的core文件通常有几百兆甚至数GB,非调试环境下可以关闭或定期清理。完成空间释放后要确认服务恢复正常,特别是数据库写入和日志记录功能。注意不要直接删除日志文件而不重启对应的进程,否则文件句柄不会被释放,df看到的空间依然不会减少。

配置日志轮转与监控告警

紧急处理只是头痛医头,长远来看必须建立磁盘空间管理机制。配置logrotate日志轮转策略,按大小一百兆轮转或按天轮转都可以,保留最近三十天的日志。压缩旧日志文件能节省百分之七十以上的空间。监控方面设置磁盘使用率阶梯告警:百分之八十发提醒,百分之九十发警告,百分之九十五以上紧急处理。定期做磁盘使用趋势分析,用收集的历史数据拟合增长曲线,预估现有容量还能撑多久。核心业务建议数据盘和日志盘分离,即使日志盘写满也不会影响数据库写入。云服务器可以配置自动扩容策略,磁盘使用率持续超过阈值时自动挂载新硬盘。

容易忽略的磁盘陷阱

df和du统计的对不上时,检查是否有进程持有了已删除文件的句柄。用lsof命令查看,若发现未释放的文件,重启对应进程即可释放空间。inode耗尽也是经典陷阱,大量小文件的应用场景比如消息队列或缓存目录很容易耗尽inode,即使磁盘还有几十GB空间也写不进新文件。使用df -i查看inode使用率,如果很高需要清理大量小文件或更换文件系统。磁盘空间问题重在预防,日常巡检纳入空间趋势检查,建立规范化管理流程,远比告警响了再手忙脚乱处理要稳妥得多。

18638624151
微信号: