第一纳斯网
背景:nas我放家里7*24 因为长时间不在家无人值守,我希望nas可以给我汇报状态尤其是磁盘的健康状况
wvl可以在webadmin的维护菜单里设置定期发送nas的工作状态,但发现信息量太少太简单了,除去主机常规信息,关运行状态只有寥寥几句,例如:

[HDD Usage Status]
RAID Array 1 Usage Rate : 40588120 kbytes / 1938180224 kbytes (Usage Rate 2%)

[DISK error status]
DISK1  0
DISK2  0

于是我决定自己来小改一下
找到 /usr/local/bin/sendmail.sh
用vi 或 winSCP或干脆下载弄到PC上用文本编辑工具打开
在855行处添加两行

smartctl -d sat -i -H -A /dev/sda >> $BODY_FILE
smartctl -d sat -i -H -A /dev/sdb >> $BODY_FILE

这两行的意思是把硬盘1(/dev/sda)和硬盘2(/dev/sdb) 进行健康检测、把规格参数以及目前的SMART详细状态添加到邮件末尾。只用了单硬盘的XD可以只添加第一行。

这两行命令位于发送状态报告邮件的函数 FuncRegularReport() 里,插入到放在执行 SendMail之前,如图

aaaa1.jpg

*还有一行 #开头的是注释,没用的
然后保存,如果是把sendmail.sh拷贝出来编辑的话,存回去之后记得要把文件的权限恢复为755
也就是在ssh里运行一次
chmod 755 /usr/local/bin/sendmail.sh
我们可以手动执行发送状态报告邮件测试一下效果(需要webadmin已经配置好了发送邮件报告并选中了发送硬盘状态)
aaaa2.jpg

之后收到的状态邮件末尾会附带两个硬盘的响应信息类似下面的例子
我们关注其中的几个信息即可,已蓝色加粗和添加了绿色的说明

smartctl version 5.37 [arm-none-linux-gnueabi] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     WDC WD2003FYYS-02W0B0 硬盘型号
Serial Number:    WD-WMAY00069431 序列号
Firmware Version: 01.01D02
User Capacity:    2,000,398,934,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Thu Feb 21 14:36:54 2013 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED健康状况PASSED就是好的

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1
  3 Spin_Up_Time            0x0027   253   253   021    Pre-fail  Always       -       6241
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       11
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0 已检测到的坏轨数量,只要不是0就得注意了
  7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       77 通电/运作了多少个小时,新买的硬盘可以留意一下这里
10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       11
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       9
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       1
194 Temperature_Celsius     0x0022   102   101   000    Old_age   Always       -       50硬盘温度
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0


其他SMART属性的含义可以自行搜索一下,不同类型的硬盘会有些差别。
硬盘有价数据无价,祝大家的nas身体健康长命百岁
分享到 :
5 人收藏

25 个回复

倒序浏览
snmoney  走火入魔 | 2013-2-21 15:10:09
emm,忘记了说手动执行发送硬盘报告邮件的命令是在ssh下执行
# /etc/cron/cron.d/mailnotice.sh
如果你配置的邮箱信息没有错的话,立刻就会收到
QQ\163\126\等国内免费邮箱的smtp都不支持,好奇怪
用gmail的同学可以参考上面截图的配置
momo  管理员 | 2013-2-21 15:32:31
看上去有点复杂,不过自己动手还是很不错的。
宿醉冇醒  VIP红钻贵族 | 2013-2-21 16:30:54
非常好,谢谢了!
dea  VIP红钻贵族 | 2013-2-21 16:37:16
手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda  , 显示
  1. # smartctl -d sat -i -H -A /dev/sda
  2. smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
复制代码
snmoney  走火入魔 | 2013-2-21 17:32:02
dea 发表于 2013-2-21 16:37
手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda  , 显示 ...

你的是什么型号什么版本的固件?
超导体  骷髅 | 2013-2-21 17:59:48
谢楼主,试试去
snmoney  走火入魔 | 2013-2-21 18:33:41
dea 发表于 2013-2-21 16:37
手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda  , 显示 ...

你是装MOD的?被精简了?
我装的是官方的 1.64
jiff3  走火入魔 | 2013-2-21 18:50:08
不错,试试去。
zptpower1  发烧38℃ | 2013-2-22 10:45:42
好使~正常收到右键了~
zengmoxi  高烧40℃ | 2013-2-25 12:00:14
很实用,我也准备上wvl了,就是硬盘格式不能ntfs,不方便分享
文雅的堕落  走火入魔 | 2013-2-26 09:24:30
相当不错
文雅的堕落  走火入魔 | 2013-2-26 09:32:05
其他版本的固件不能插入到855行。
插入地应该是
SubFuncRegularReportDiskErr
        echo "" >> $BODY_FILE
之后。
rowa58  正常36.8℃ | 2013-2-26 10:23:16
学习,学习
dea  VIP红钻贵族 | 2013-2-26 13:17:52
本帖最后由 dea 于 2013-2-26 13:30 编辑

我的也是WVL 官方1.64, 两块硬盘用的raid0
  1. root@NAS:~# /etc/cron/cron.d/mailnotice.sh
  2. Can't specify using language.
  3. use english messages
  4. smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
  5. smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
复制代码
snmoney  走火入魔 | 2013-2-26 14:07:47
dea 发表于 2013-2-26 13:17
我的也是WVL 官方1.64, 两块硬盘用的raid0

直接运行
smartctl -d sat -i -H -A /dev/sda
也这样报错吗?缺少这个东西?

试试
ipkg install libstdc++

你的nas改过其他东西吗?有没有装 opt, tr 之类的?
dea  VIP红钻贵族 | 2013-2-26 14:48:55
直接运行也报错:
  1. root@NAS:~# smartctl -d sat -i -H -A /dev/sda
  2. smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
复制代码
  1. root@NAS:~# ipkg install libstdc++
  2. Package libstdc++ (6.0.9-6) installed in root is up to date.
  3. Nothing to be done
  4. Successfully terminated.
复制代码
装过opt,tr aria2
snmoney  走火入魔 | 2013-2-26 15:09:49
dea 发表于 2013-2-26 14:48
直接运行也报错:装过opt,tr aria2

Package libstdc++ (6.0.9-6) installed in root is up to date.

这代表已经装了啊?怎么还会 error while loading shared libraries: libstdc++.so.6 呢,奇怪啊..等其他高手来解答吧
snmoney  走火入魔 | 2013-2-26 15:11:18
文雅的堕落 发表于 2013-2-26 09:32
其他版本的固件不能插入到855行。
插入地应该是
SubFuncRegularReportDiskErr

是的,发现不同版本的固件在的行数位置不同,应该以找到那个函数的特定位置为准
dea  VIP红钻贵族 | 2013-2-26 15:56:10
按群友指导,终于成功了
方法如下: /usr/lib  和 /opt/lib 下 分别备份libstdc++.so.6
mv libstdc++.so.6 libstdc++.so.6.bak
然后
ln -s libstdc++.so.6.0.9 libstdc++.so.6

再 /etc/cron/cron.d/mailnotice.sh
就成功了! 谢谢 A4G!
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

QQ|Archiver|手机版|小黑屋|第一纳斯网 ( 粤ICP备16092716号-1 )

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部