跳到正文

磁盘写满

SysAdmin Crisis 中的磁盘写满事件:用量越过 90%,到 100% 时写入失败。了解它的日志特征,以及各条出路为何并不等价。

最后更新:

游戏中最机械的事件,也是特征最干净的事件。磁盘被填满,到 100% 时机器就再也无法写入。

它做什么

在某一台机器上,磁盘用量稳步攀升。它在 90% 时越过 WARN,在 98% 时越过 CRIT。完全写满时,机器开始抛出写入错误,持续的写入错误会让它进入 DOWN。

这里没有花招——没有级联,也不会在服务器群的别处产生次生后果。它的危险在于平淡到足以让人在处理更吵的问题时读过去。

日志特征

最初的征兆是 monit 的磁盘警告;磁盘写满之后,rsyslogd 会说无法写入:

01:52:19 web-02 monit[601]: 'rootfs' space usage 91% matches resource limit [space usage > 80.0%]
02:07:44 web-02 rsyslogd[633]: file '/var/log/syslog'[7] write error - see https://www.rsyslog.com/solving-rsyslog-write-errors/ for help OS error: No space left on device [v8.2312.0]
02:07:44 web-02 monit[601]: 'rootfs' space usage 100.0% matches resource limit [space usage > 95.0%]

df 显示是哪个挂载点被填满。空间被谁占用,则可以由 ls、lsof 和进程列表告知;几乎总是某个日志文件,或者某个正在向其写入的进程。

置之不理的后果

写入失败,然后机器进入 DOWN,然后 SLA 债务压上来。由于增长缓慢,在某个忙碌阶段达到 91% 的磁盘,往往到下一个忙碌阶段就已经到了 100%。

如何区分

看起来相似区分依据
内存泄漏两者都是缓慢爬升。一个点出进程并让 RAM 增长;本事件点出的是挂载点,增长的是磁盘。
过热两者都只涉及单台机器且进展缓慢,但过热会显示温度和风扇日志行。

各条出路并不等价

在这个事件中,所选的路径还会带来经济上的后果:有些路径即时且免费,却不会抬高上限;另一些则是永久的,但要花钱。收尾的那行日志会说明走的是哪条路。如果空间看似已经释放而 df 没有变化,可能是某个进程仍然占着该文件。

何时出现

最早出现的夜2
前提一台 web 机器
权重100
同时出现一个实例