最近我遇到了“标准”磁盘空间监控失败的情况 - Zabbix 使用vfs.fs.大小检查磁盘使用情况的项目,该项目已在捆绑模板中记录并预先配置。
问题:
当文件被删除时,但是文件描述符/句柄仍然打开- 磁盘可能已满,但在这种情况下 Zabbix 不会报告使用情况。
在这种情况下,如何监控磁盘空间?
答案1
这是我做过的一个测试:
df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15350768 14367976 809124 95% /
我创建了一个 600Mb 的文件并用 less 打开它:
dd if=/dev/zero of=test bs=1024k count=600 & less test
[1] 1952
"test" may be a binary file. See it anyway? 600+0 records in
600+0 records out
629145600 bytes (629 MB) copied, 11.895 s, 52.9 MB/s
[1]+ Done dd if=/dev/zero of=test bs=1024k count=600
现在 df 显示使用了更多空间:
df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15350768 14981664 195436 99% /
现在,如果我删除我的测试文件:
rm test
df 说:
df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15350768 14981712 195388 99% /
因此该空间仍在使用中,我们可以使用 lsof |grep removed 来查看:
lsof |grep deleted|grep test
less 1953 mick 4r REG 8,1 629145600 5407 /tmp/test (deleted)
现在如果我少停下来:
pkill less
df 显示磁盘使用情况是空闲的:
df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15350768 14367584 809516 95% /
我认为您的问题更多是由于对 df 的错误解释而导致的,因为为 root 保留了百分比。
从最后一个 df 来看,总计减去已用量减去可用量等于:
15350768-14367584-809516=173668
因此,也许您的用户遇到磁盘已满错误,但 root 仍然可以写入磁盘,并且 Zabbix 不会因为为 root 保留的百分比而看到磁盘已满。
你可以使用 tune2fs 检查并更改它