Total Pageviews

Monday, 11 December 2017

通过SMART查看磁盘的健康状况


晚饭时与fruitcc聊天,提到服务器的维护,然后说到硬盘的保护。看起来硬盘是一个非常易损的消耗品,尤其是我们拿一个普通硬盘放在服务器中24小时来运行。然后他说我们可以使用工具来查看硬盘的SMART数据,其中就记录了硬盘的读写错误情况,从中可以发现硬盘的潜在危险。
回去后我上网搜了一下,发现在Ubuntu下可以使用一个叫smartmontools的软件包,其中有两个工具:smartctl和smartd比较好用。前者是命令行工具,后者是一个监控报警daemon程序。
简单的来说,运行 sudo smartctl -H /dev/xxx 可以得到一个硬盘状态报告,这个报告只有一个返回,即PASS或FAIL。后者表示在24小时内硬盘挂掉的可能性极高,基本就是需要立刻备份数据和更换硬盘。
运行sudo smartctl -a /dev/xxx 可以得到完整的报告,包括硬盘参数、SMART参数、各种SMART属性值、SMART错误日志和自测试日志等。
然后就是smartd,这个程序将作为一个服务运行,实时监控硬盘的健康状况,并记录警告信息甚至发送邮件。该程序使用/etc/smartd.conf 文件作为配置文件。配置文件中每行可写一个硬盘的配置(监控哪些属性、何时做自测试、发送邮件等),若所有硬盘都使用相同配置,则使用DEVICESCAN指令即可。文件中已经有一些示例配置了,基本够用,比如:
/dev/sda -a -s (S/../.././03) -I 194 -W 5,40,50 -m xx@yy.zz -M test
是对/dev/sda进行监控,-a表示监控所有属性,-I 194表示忽略194号属性的变化(194是温度,因为不关心温度的小变化,细致的温度监控使用-W参数),-s表示自测试设置,(S/../.././03)表示做short测试,时间是每天凌晨3点到4点之间,-W表示监控温度变化,5、40、50分别表示温度变化幅度、报告和发送邮件通知的阈值,-m后跟要发送邮件通知的地址,可写多个,用逗号分隔,-M test表示在deamon启动时发送一封测试邮件,可用来测试邮件是否能正确发送,我觉得还可以用来监测系统重启:)
这里发送邮件的话是使用系统的 mail 程序,因此要先安装mailutils包,然后使用命令sudo kpkg-reconfigure exim4-config来重新配置邮件程序,将其配制成第一项internet site即可正常发送邮件了。
最后是smartd的启动。比较奇怪的是Ubuntu源里面的smartmontools包并没有man说的/etc/init.d/smartd这个脚本,而是有一个/etc/init.d/smartmontools脚本,如果直接运行 /etc/init.d/smartmontools start是没有任何反应的。研究一下发现要先修改/etc/default/smartmontools文件,将其中#start_smartd=yes一行注释去掉即可.

No comments:

Post a Comment