1. 概述
Smartctl(S.M.A.R.T 自监控,分析和报告技术)是类Unix系统下实施SMART任务命令行套件或工具,它用于打印SMART自检和错误日志,启用并禁用SMRAT自动检测,以及初始化设备自检。
Smartctl对于Linux物理服务器十分有用,在这些服务器上,可以对智能磁盘进行错误检查,并将与硬件RAID相关的磁盘信息摘录下来。
2. 安装
对于 Ubuntu
$ sudo apt-get install smartmontools
CentOS & RHEL
# yum install smartmontools
3. 使用
- 检查磁盘的 Smart 功能是否启用
root@linuxtechi:~# smartctl -i /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Momentus 5400.6
Device Model: ST9320325AS
Serial Number: 5VD2V59T
LU WWN Device Id: 5 000c50 020a37ec4
Firmware Version: 0002BSM1
User Capacity: 320,072,933,376 bytes [320 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 5400 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 1.5 Gb/s
Local Time is: Sun Nov 16 12:32:09 2014 IST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
- 启用磁盘的smart功能
root@linuxtechi:~# smartctl -s on /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
- 禁用磁盘smart功能
root@linuxtechi:~# smartctl -s off /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Disabled. Use option -s with argument 'on' to enable it.
- 显示磁盘详细信息
root@linuxtechi:~# smartctl -a /dev/sdb // For IDE drive
root@linuxtechi:~# smartctl -a -d ata /dev/sdb // For SATA drive
- 显示磁盘总体健康状况
root@linuxtechi:~# smartctl -H /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Warning: This result is based on an Attribute check.
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0022 067 045 045 Old_age Always In_the_past 33 (Min/Max 25/33)
- 使用long和short选项测试硬盘
长测试
root@linuxtechi:~# smartctl --test=long /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 102 minutes for test to complete.
Test will complete after Sun Nov 16 14:29:43 2014
Use smartctl -X to abort test.
short测试
root@linuxtechi:~# smartctl --test=short /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Sun Nov 16 12:51:45 2014
Use smartctl -X to abort test.
注意:short测试将花费最多2分钟,而在long测试中没有时间限制,因为它会读取并验证磁盘的每个段。
- 查看驱动器的自检结果
root@linuxtechi:~# smartctl -l selftest /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, 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: read failure 90% 492 210841222
# 2 Extended offline Completed: read failure 90% 492 210841222
- 显示磁盘错误日志
root@linuxtechi:~# smartctl -l error /dev/sdb
Sample Output
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 5
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 da 08 e7 e5 a5 4c 00 00:30:44.515 READ DMA EXT
25 da 08 df e5 a5 4c 00 00:30:44.514 READ DMA EXT
25 da 80 5f e5 a5 4c 00 00:30:44.502 READ DMA EXT
25 da f0 5f e6 a5 4c 00 00:30:44.496 READ DMA EXT
25 da 10 4f e6 a5 4c 00 00:30:44.383 READ DMA EXT
4. smartctl属性信息介绍
- Raw_Read_Error_Rate(原始读取错误率):
概念:表示在读取数据时发生的原始错误率。较低的值表明硬盘对数据读取更为可靠。
正常值:通常希望这个值较低,但具体的“正常”范围取决于硬盘的制造商和型号。 - Spin_Up_Time(主轴电机起转时间):
概念:硬盘马达达到规定转速所花费的时间,单位为毫秒或秒。
正常值:不同的硬盘类型和速度有不同的起转时间。例如,一个7200转/分的硬盘可能需要比5400转/分的硬盘更短的时间来达到全速。 - Start_Stop_Count(电机启动/停止次数):
概念:记录了硬盘马达启动和停止的总次数。这可以视为硬盘的“使用寿命”指标之一,因为每次启动和停止都会对硬盘产生一定的磨损。
正常值:随着使用时间的增加,这个值会逐渐增加。 - Reallocated_Sector_Ct(重新分配扇区计数):
概念:表示硬盘在存取过程中发现扇区有问题时,将坏扇区重新指向备份扇区的数量。如果这个值持续增加,可能意味着硬盘出现了物理损坏。
正常值:理想情况下,这个值应该为0。但新硬盘可能预留了一些备用扇区,所以初始值可能不为0。 - Seek_Error_Rate(寻道错误率):
概念:反映了在寻找特定数据时发生的错误率。较低的寻道错误率通常意味着更好的性能。
正常值:通常希望这个值较低,但具体的“正常”范围取决于硬盘的制造商和型号。 - Power_On_Hours(通电时间):
概念:表示硬盘已经通电并运行的总时间,以小时为单位。
正常值:随着使用时间的增加,这个值会逐渐增加。可以根据这个值估算硬盘的使用年限和剩余寿命。 - Spin_Retry_Count(主轴电机起转重试次数):
概念:记录了硬盘马达在尝试达到规定转速时失败并重试的次数。如果这个值持续增加,可能意味着硬盘的马达或电路有问题。
正常值:理想情况下,这个值应该为0或很少。 - Power_Cycle_Count(设备电源循环次数):
概念:记录了硬盘完全关闭然后再重新打开的次数。这也是一个反映硬盘“使用寿命”的指标。
正常值:随着使用时间的增加,这个值会逐渐增加 - End-to-End_Error:表示在硬盘两端之间传输数据时发生的错误。
- Reported_Uncorrect:报告了无法纠正的错误数量。
- Command_Timeout:命令超时的次数。
- High_Fly_Writes:高飞写入错误率,可能与硬盘磁头和盘片之间的距离有关。
- Airflow_Temperature_Cel:硬盘周围的空气温度(摄氏度)。
- G-Sense_Error_Rate:加速度错误率,通常存在于笔记本硬盘和企业级硬盘中,表示硬盘受到的冲击次数。
- Power-Off_Retract_Count:电源关闭时磁头收回的次数。
- Load_Cycle_Count:加载/卸载循环次数,通常与硬盘的盖子或保护机构有关。
- Temperature_Celsius:硬盘的内部温度(摄氏度)。
- Hardware_ECC_Recovered:通过硬件ECC(错误检查和纠正)恢复的数据量。
- Current_Pending_Sector:当前等待重新映射的扇区数量。
- Offline_Uncorrectable:离线无法纠正的错误数量。
- UDMA_CRC_Error_Count:UDMA(Ultra DMA)传输中的CRC(循环冗余检查)错误计数。
- Head_Flying_Hours:磁头飞行时间的小时数,可能与硬盘的实际运行时间相关。
- Total_LBAs_Written 和 Total_LBAs_Read:分别表示写入和读取的逻辑块地址(LBA)总数,反映了硬盘的使用情况。
- Critical Warning警告状态: RAW数值显示0为正常无警告,1为过热警告,2为闪存介质引起的内部错误导致可靠性降级,3为闪存进入只读状态,4为增强型断电保护功能失效(只针对有该特性的固态硬盘)。
正常情况下ID1的RAW属性值应为0,当显示为1时代表NVMe固态硬盘已经过热,需要改善散热条件或降低工作负载。属性值为2时应考虑返修或更换新硬盘,当属性值为3时硬盘已经进入只读状态,无法正常工作,应抓紧时间备份其中的数据。家用固态硬盘通常不会配备增强型断电保护(完整断电保护),所以通常该项目不会显示为4。 - Temperature当前温度(十进制显示)
- Available Spare可用冗余空间(百分比显示):指示当前固态硬盘可用于替换坏块的保留备用块占出厂备用块总数量的百分比。该数值从出厂时的100%随使用过程降低,直至到零。归零之前就有可能产生不可预料的故障,所以不要等到该项目彻底归零才考虑更换新硬盘。
- Available Spare Threshold备用空间阈值:当Available Spare可用冗余空间低于Available Spare Threshold备用空间阈值,固态硬盘被认为达到极限状态,此时系统可能会发出可靠性警告。该项数值由厂商定义,通常为10%或0%。
- :Percentage Used已使用的写入耐久度(百分比显示):该项显示已产生的写入量占厂商定义总写入寿命的百分比。该项数值为动态显示,计算结果与写入量及固态硬盘的TBW总写入量指标有关。新盘状态下该项目为0%
- Data Units Read读取扇区计数(1000):该项数值乘以1000后即为读取的扇区(512Byte)数量统计
- Data Units Write写入扇区计数(1000):该项数值乘以1000后即为写入的扇区(512Byte)数量统计。
- Host Read Commands读取命令计数:硬盘生命周期内累计接收到的读取命令数量统计。
- Host Write Commands写入命令计数:硬盘生命周期内累计接收到的写入命令数量统计。
- Controller Busy Time主控繁忙时间计数:该项统计的是主控忙于处理IO命令的时间总和(单位:分钟)。当IO队列有未完成的命令时,主控即处于“忙”的状态。
- Unsafe Shut downs不安全关机次数(异常断电计数)
- Media and Data Integrity Errors闪存和数据完整性错误
主控检测到未恢复的数据完整性错误的次数。正常情况下主控不应检测到数据完整性错误(纠错应该在此之前完成),当有不可校正的ECC、CRC校验失败或者LBA标签不匹配错误发生时,该数值会增加。正常情况下ID14应保持为零。 - Number of Error Information Log Entries错误日志条目计数
控制器使用期限内,发生的错误信息日志条目的数量统计。正常情况该项目应为零。
以下项目为非标准项,并非所有NVMe SSD都支持显示。 - Warning Composite Temperature Time过热警告时间
- Critical Composite Temerature Time过热临界温度时间
- Temperature Sensor X:多个温度传感器(若存在)的读数