用于无头Linux服务器的硬盘监控脚本

现代硬盘驱动器有一种称为S.M.A.R.T.的内部机制,通过它可以知道硬盘何时即将发生故障。服务器能在这样的故障之前给你发邮件不是很好吗?

概述 / 综述

诸如“mdadm”(用于软件RAID管理)和“Palimpsest Disk Utility”(在Ubuntu LiveCD上使用)等程序使用S.M.A.R.T信息通知您磁盘即将发生故障或已经发生故障。然而,在无头服务器(无GUI)上,没有任何服务可以在为时已晚之前通知您即将到来的厄运。此外,如果不手动登录服务器,您如何知道这一点?

使用cron每天运行一次此脚本时,如果系统的任何硬盘坏扇区计数达到故意低于“磁盘损坏”阈值的限制,它将发出警报,并通过电子邮件将警告发送给机器管理员。

前提条件和假设

您已经使用“如何在Linux上设置电子邮件警报”指南为服务器设置了电子邮件支持。 您使用的是基于Debian的系统。 您没有使用*硬件RAID控制器。 你会看到我使用VIM作为编辑程序,这只是因为我习惯了…。您可以使用您喜欢的任何其他编辑器。

*因为硬件RAID控制器很可能会阻止系统访问此信息。

布设

安装“SmartMontools”软件包,该软件包从硬盘控制器读取S.M.A.R.T信息并将其呈现给我们。

创建监控脚本:

就这样吧,这就是内容:

需要注意的要点是:

电子邮件功能-设置适当的信息,如机器名称和管理员电子邮件。 允许的阈值-将此参数设置为您认为合适的值,我之所以使用5,是因为我使用的“服务器级”硬盘的限制设置为10。(我发现“消费级”硬盘的阈值高达140)。 通过调整“for”循环中的磁盘名称枚举来设置要监视的设备。目前包括两个磁盘(SDA和SDB),因此请根据您的设置进行调整。如果出于某种原因需要*排除某个磁盘,您可以包括所有磁盘,也可以只包括部分磁盘。

*在我最初的设置中,第一个磁盘是闪存驱动器,所以如果可能的话,读取它的信息没有多大用处。

使脚本可执行:

设置完成。

将脚本安排为自动运行

我们想让脚本自动运行,因此我们将为它创建一个新的Cron作业。 正如“如何在Linux上设置电子邮件警报”指南中所述,这样做的结果是,如果脚本本身遇到错误,cron会自动通过电子邮件通知我们。

打开cron作业调度程序:

将此内容添加到其内容中:

这会将脚本设置为每天早上7点运行

相关文章