前段时间 @ytwytw 的一块SSD挂掉了,让我这个双SSD的用户也心生警觉,于是开始找SMART信息的读取工具。MAC OS X上比较知名的是SMARTUtility,但是这货25刀,当然功能不错,除掉可以提供SMART信息以外,也能驻守工具栏并集成Growl的警告。还是小贵啊。
搜索过程中,让我发现了一个免费工具,smartmontools,这是个开源项目,已经10年了。而且从网友反馈来看,似乎SMARTUtility、SMARTReporter等工具在底层实际上都是调用它。当然,人家收费是有道理的,那就是这个免费工具是命令行的,支持直接命令行调用,支持作为守护进程,并在检查出现问题时发送警告邮件。从性价比来说,部署个smartmontools在后台监控也足够啦。下面来讲讲在OS X上手工部署smartmontools的步骤。
1. 下载
到官方网站下载最新版本的发布包(目前是6.1)
2. 安装
到终端执行
tar zxvf smartmontools-6.1.tar.gz
cd smartmontools-6.1
./configure
make
sudo make install
当然,你需要根据你实际的路径来适当修改。sudo以后需要输入管理员密码。
这个发布包的跨平台能力不错,我在10.8.2下编译、安装没有遇到任何问题。最终实际上在/usr/local/sbin下产生了三个工具。
- smartctl 是命令行运行的指令,比如:
/usr/local/sbin/smartctl -a /dev/disk0
可以看到你系统盘的SMART信息
- smartd 是守护进程的启动指令,常规的运行参数是
/usr/local/sbin/smartd -n
最后一个update是更新SMART信息库的命令。
3. 查看当前的SMART信息
/usr/local/sbin/smartctl -a /dev/disk0
一般看到的截图见下
但是也可能看到很短的提示,SMART is disabled,可以手工打开
/usr/local/sbin/smartctl -s on -S on -o on /dev/disk0
这里三个开关分别打开了SMART信息支持、“autosave of device vendor-specific Attributes“(设备商内部特性的自动保存)和离线信息收集。之后就可以继续运行查看指令了。
4. 启用smartd监控
smartd的配置文件在/usr/local/etc/smartd.conf,这个配置文件默认状态都是”#“开头,在最后根据你的设备情况增加配置:
/dev/disk0 -a -d sat -S on -s (S/../.././02|L/../../6/03)
这里的-d sat是指定你设备的连接类型为SATA,后面指定每天凌晨2点运行一个简短测试,每周六的凌晨3点跑一个长测试,输出的日志会体现在/var/log/system.log里,你可以打开控制台看,也可以自己根据需要用-l参数配置输出到其他地方。这里举例只写了一个设备,有多个设备需要监控的,再加一行就行了。
最后需要注意的是OS X上用LaunchDaemon来启动服务,因此到/Library/LaunchDaemons/下增加一个plist文件吧,可以在本站下载。
5. 其他
至于如何看SSD的信息,那就大家根据自己的设备来搜索吧。对Intel的SSD来说,可以关注Media_Wearout_Indicator,我这里显示097,意思是剩下97%的寿命;此外还有Reallocated_Sector_Ct,我这块盘是14,如果这个参数持续升高,那要及时准备后事了。
此外,有些USB硬盘或者RAID里的盘,不见得兼容。具体的兼容情况大家也请到smartmontools网站查询。
至此,恭喜你省了25刀^_^。最后说一声,也可以用MACPorts来装,过程应该要简单点,好像也会自动生成plist。
更新
20130315 发布smartmontools 6.1版
参考文章:Monitoring Hard Drive Health on Linux with smartmontools