通过 SMART 查看和跟踪硬盘健康状态¶
@2014-12-19 新版功能: 创建
S.M.A.R.T. 的全称为 Self-Monitoring, Analysis and Reporting Technology,一般简写为 SMART。 这是硬盘(HDD 或 SSD)内置提供的状态监控系统,通过它可以及时了解硬盘驱动器的 可用性状态,提前预测可能的失败。不过,需要说明的是, 在 SMART 没有报告任何异常 时硬盘也可能会失败。因此,在任何情况下数据备份都是非常重要的,不能省略。
本文仅对 SMART 数据的查看及监控软件 smartmontools 做简单的介绍, 关于 SMART 的更多说明请参考维基百科及相关的参考文献。
SMART 数据是硬盘驱动器内置的,首先通过如下命令获取系统支持的硬盘设备:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 16G 0 part /
└─sda2 8:2 0 449.8G 0 part
├─vg_data-lv_home (dm-0) 254:0 0 800G 0 lvm /home
└─vg_data-lv_swap (dm-1) 254:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
└─vg_data-lv_home (dm-0) 254:0 0 800G 0 lvm /home
sdc 8:32 0 465.8G 0 disk
└─sdc1 8:33 0 465.8G 0 part
sdd 8:48 0 465.8G 0 disk
└─sdd1 8:49 0 465.8G 0 part
smartctl -a /dev/sda 可以输出该硬盘的所有 SMART 信息,
# smartctl -a /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
...
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
...
SMART Attributes Data Structure revision number: 10
...
SMART Error Log Version: 1
...
SMART Self-test log structure revision number 1
...
SMART Selective self-test log data structure revision number 1
...
省略的内容可以分别使用以下命令单独输出,命令和内容分别解释如下。
查看设备 SMART 信息:
# smartctl -i /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.10
Device Model: ST3160815AS
Serial Number: 9RX39P8Q
Firmware Version: 3.ADA
User Capacity: 160,000,000,000 bytes [160 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA/ATAPI-7 (minor revision not indicated)
Local Time is: Fri Dec 19 14:27:55 2014 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
如果出现 “SMART support is: Disabled”,则需要通过 smartctl -s on /dev/sda 打开 SMART 功能。
查看硬盘健康状态查询结果:
# smartctl -Hc /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
...
PASSED 表示测试结果。如果该值为 FAILING,则需要立即备份数据。
查看硬盘的各种属性值:
# smartctl -A /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
...
需要说明的是,属性不再是 ATA 标准的一部分。具体属性的解释因厂商而异。每一个 属性都有 RAW_VALUE 和 VALUE,前者完全由厂商指定,没有任何规范约束。后者是 标准化之后的值,其范围为 1 到 253。如果该值小于或等于阈值(THRESH),则表示 失败(即该值越大越好),对应 WHEN_FAILED 列会有显示(例如 FAILING_NOW 或 In_the_past 或 -)。属性类型分别为 Pre-fail 和 Old_age,前者表示该属性很关键, 如果其值低于阈值则意味着设备很快会故障,后者表示设备达到或超过设计寿命。 WORST 栏对应该属性所记录到的最小值。
查看硬盘错误日志:
# smartctl -l error /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged
完全正常的情况下日志为空。如果有大量的错误日志出现,则需要引起关注。
硬盘自测试日志查看:
# smartctl -l selftest /dev/sda
smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.17.7-gentoo] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 4771 -
如果没有相关的日志,则可以通过 smartctl -t [short|long] /dev/sda 执行。 该命令不会破坏硬盘上的数据。smartctl -t offline /dev/sda 能用来执行离线 测试,也可以通过 smartctl -o on /dev/sda 打开自动离线测试。离线测试的结果 不会显示在自测试日志中。
SMART 标准提供了硬盘测试和监控硬盘性能的机制,但在故障发生时并不会主动通知 操作系统。因此需要通过 smartd 这个守护进程来定期主动查询并反馈。缺省情况下, smartd 会每 30 分钟查询硬盘属性,如果有失败的属性或健康状态或错误/自测试日志 增加,则相应的信息会记录到 SYSLOG,也可以配置为发送邮件到相关的负责人。smartd 的配置细节请参考手册,本文不再介绍。
在系统配置了硬件 RAID 卡的情况下,操作系统看到的是 RAID 卡虚拟出来的虚拟硬盘, 这种情况下需要显示指明物理硬盘的类型,例如:
# smartctl -Hc -d cciss,0 /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.10.20] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
SMART Health Status: OK
或
# smartctl -Hc -d megaraid,0 /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.10.20] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
SMART Health Status: OK
更多的参数配置请参考smartctl(8)。