报警磁盘 100%,du -sh 加起来才 20G,盘有 40G。
原因:进程还持有着已删除文件的句柄,空间没释放。
查法:
lsof | grep deleted 或者 lsof +L1找到后两个选择:重启进程,或者清空句柄(> /proc/PID/fd/N,谨慎)。
生产上遇到的是日志文件被 logrotate 删了但服务没重开文件,一直往已删除的 inode 里写。改 logrotate 配置用 copytruncate 解决。
另一类:容器里的日志没配 max-size,日志涨到几十 G。docker 的 log driver 默认不限制,一定要显式配。
主楼同问,我们现在也在选型阶段。
继续逛逛