我正在使用 snmp 监控多个服务器/路由器。一切正常,但今天我发现 3 个服务器不再通过 SNMP 响应。3 个 snmp 守护程序在同一时刻(星期六上午 6 点)停止,并显示相同的最后日志(无法 statfs:/var/docker/lib.....)
我尝试重新启动 snmp 守护程序,但 systemctl 超时,无法重新启动它们。配置没有任何变化。
有人有想法吗?
谢谢
答案1
“Cannot statfs” 可能来自 snmpd 中的磁盘使用情况监视器,它会迭代已安装的文件系统并询问剩余的可用空间量。
如果一个statfs(2)调用失败,这是机器上的一个严重问题,这是一个系统调用,基本上只是在共享结构中查找信息并返回它,唯一可能失败的方法是同步对该结构的访问。
因此,某些东西挂在那里,持有对内核中某些结构的独占访问权限,而这也是阻止文件系统访问的原因,从而导致重启超时。
如果这是本地文件系统,我会重新启动并在启动期间强制检查文件系统。在 systemd 之前,执行此操作的机制是shutdown -Fr now
,但是systemd 要求您设置内核命令行参数。
如果这是在 SAN 或类似设备上,我会先找出 SAN 的问题,然后进行文件系统检查。
三台主机同时出现的情况实际上只能用“该文件系统位于发生故障的 SAN 上”来解释。