你好 特别为
Linux管理员课程的学生准备了以下文章的翻译。 走吧

什么是SMART?
SMART
(代表自我监视,分析和报告技术)是一种嵌入在硬盘或SSD中的技术。 它的主要任务是监视状况。
实际上,SMART在正常磁盘操作期间会控制多个参数。 它监视诸如读取错误数,磁盘启动时间甚至环境状态之类的参数。 此外,SMART还可以使用驱动器运行测试。
理想情况下,SMART将预测可预测的故障,例如由机械磨损或光盘表面变质引起的故障,以及由任何意外缺陷导致的不可预测的故障。 由于磁盘通常不会突然发生故障,因此SMART可以帮助操作系统或系统管理员识别即将发生故障的磁盘,以便可以更换磁盘并避免数据丢失。
什么不适用于SMART?
当然,所有这些都很酷。 但是,SMART不是水晶球。 他无法绝对概率地预测故障,也无法保证驱动器不会在没有警告的情况下发生故障。 在最佳情况下,应使用SMART评估失败的可能性。
考虑到故障预测的统计性质,SMART技术对使用大量存储设备的公司特别感兴趣。 为了找出SMART可以多么准确地预测故障并报告需要更换数据中心或服务器大型机中的磁盘,甚至进行了专门研究。
2016年,微软和宾夕法尼亚大学进行了与
固态硬盘相关的研究。
根据这项研究,某些SMART属性被认为是失败不可避免的良好指标。 该文章特别提到:
重新分配扇区计数器 :
尽管基础技术存在根本差异,但无论是SSD领域还是硬盘领域,都仍然需要该指标。 值得注意的是,由于SSD中使用的磨损平衡算法的功能,当多个扇区发生故障时,我们很有可能会假设更多的扇区很快就会发生故障。
编程/擦除(P / E)循环中的错误:这是主闪存设备出现问题的迹象,与磁盘无法从块中删除数据或将其保存到该事实有关。 事实是生产过程不完善,因此可以预期会出现此类错误。 但是,闪存具有有限数量的写入/删除周期。 因此,事件数量的突然增加可能表明磁盘已达到极限,并且预计其他存储单元也将开始发生故障。
CRC和致命错误(“数据错误”):此类事件可能是由存储错误或驱动器的内部通信通道出现问题引起的。 该指示器同时考虑了已纠正的错误(没有任何问题地报告给主机系统)和未纠正的错误(由于磁盘被锁定,磁盘被锁定,从而通知了主机系统无法读取)。 换句话说,已纠正的错误对于操作系统是不可见的,但是它们会影响驱动器的性能,从而增加了重新分配扇区的可能性。
SATA降档计数:由于暂时的干扰,驱动器和主机之间的通信通道出现问题,或者由于驱动器内部出现问题,SATA接口可能会切换到较低的信号传输速度。 将连接速度降低到标称水平以下会对磁盘性能产生明显影响。 因此,该指标最为重要,尤其是当它与一个或多个先前的指标相关时。
根据研究,有62%的SSD失效显示出至少一种以上症状。 另一方面,我们可以说38%的研究驱动器发生故障而没有迹象表明这些症状。 研究没有提及是否有其他报告拒绝SMART的其他“症状”。 因此,在36%的Google案例中,如果没有警告,就无法将这些值与失败直接关联。
作者和微软大学的一项研究并未披露所研究光盘的型号,但是,据作者说,大多数光盘都是同一代供应商生产的,而且世代相传。
研究还指出了不同模型之间可靠性的显着差异。 例如,研究的“最差”模型显示,在第一次重新分配错误后9个月内,故障率达到20%,而在第一次发生数据错误后9个月内,故障率高达36%。 本文中考虑的“最差”模型称为旧版光盘。
另一方面,具有上述相同的症状,根据相同的错误,新一代驱动器的故障率分别为3%和20%。 很难说这些数字是否可以通过驱动器设计和生产过程的改进来解释,或者过时的影响是否在这里起作用。
在这篇文章(我之前写过)中提到的最有趣的事情是,作为一个警告指标,注册错误的数量可能会增加:
“在固态硬盘出现故障之前,很可能会出现症状,这些症状会主动显现并迅速发展,从而将硬盘的使用寿命缩短至几个月。”
换句话说,绝对不应将SMART报告的一个随机错误视为即将发生故障的信号。 但是,当正常运行的SSD开始报告越来越多的错误时,您应该预期会出现短期或中期的故障。但是,您如何知道您的SSD现在处于什么状态? 为了满足您的好奇心或出于开始密切监视驱动器的愿望,可以使用
smartctl
监视
smartctl
。
在Linux上使用smartctl
监视SSD的状态
要监视驱动器的SMART状态,建议使用
smartctl
工具,该工具是
smartmontool
软件包的一部分(至少在Debian / Ubuntu上)。
sudo apt install smartmontools
smartctl
是一个
命令行工具 ,但是在需要自动收集数据(例如从服务器收集数据)的情况下,它特别
smartctl
。
使用
smartctl
是检查驱动器是否具有SMART并受该工具支持:
sh$ sudo smartctl -i /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Seagate Momentus 7200.4 Device Model: ST9500420AS Serial Number: 5VJAS7FL LU WWN Device Id: 5 000c50 02fa0b800 Firmware Version: D005SDM1 User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical Rotation Rate: 7200 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, 3.0 Gb/s Local Time is: Mon Mar 12 15:54:43 2018 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled
如您所见,笔记本电脑的内置硬盘驱动器确实支持SMART,并且已打开。 那么,如何立即获得SMART身份? 有固定的错误吗?
-a
选项报告“关于所有SMART磁盘信息”:
sh$ sudo smartctl -i -a /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Seagate Momentus 7200.4 Device Model: ST9500420AS Serial Number: 5VJAS7FL LU WWN Device Id: 5 000c50 02fa0b800 Firmware Version: D005SDM1 User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical Rotation Rate: 7200 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, 3.0 Gb/s Local Time is: Mon Mar 12 15:56:58 2018 CET 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 See vendor-specific Attribute list for marginal Attributes. General SMART Values: Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 0) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 110) minutes. Conveyance self-test routine recommended polling time: ( 3) minutes. SCT capabilities: (0x103f) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID
了解smartctl
命令的输出
输出的信息很多并不总是容易理解的。 最有趣的部分可能是标记为“带有阈值的特定于供应商的SMART属性”的部分。 它报告由SMART设备收集的各种统计信息,并允许您将这些值(所有时间都是当前或最差)与供应商定义的某个阈值进行比较。
例如,这是我有关磁盘上重新分配的扇区的报告:
ID
您可能会注意到
“失败前”属性。 表示该值异常。 因此,如果该值超过阈值,则失败的可能性很高。 另一类别的
“旧年龄”用于与“正常磨损”值相对应的属性。
最后一个字段(此处值为“ 3”)对应于驱动器报告的原始属性值。 通常,此数字具有物理意义。 这是重新分配的扇区的实际数量。 对于其他属性,这可以是温度(以摄氏度为单位),时间(以小时或分钟为单位)或磁盘已满足特定条件的次数。
除初始值外,启用SMART的驱动器还必须报告“归一化值”(字段值,最差值和阈值)。 这些值在1-254的范围内进行归一化(阈值为0-255)。 磁盘固件使用某种内部算法执行此归一化。 另外,不同的制造商可以以不同的方式标准化同一属性。 大多数值以百分比表示,数值越高越好,但是并非总是如此。 当参数小于或等于制造商指定的阈值时,就此属性而言,磁盘被视为故障。 请记住本文第一部分的所有说明,当显示
“ pre-fail”值的属性仍然失败时,磁盘很可能很快就会失败。
再举一个例子,以
“寻找错误率”为例:
ID
实际上(这是SMART报告的主要问题),只有提供者才能了解每个属性字段的确切值。 就我而言,希捷使用对数刻度将值归一化。 因此,“ 71”表示每1千万个请求大约一个错误(10等于7.1的幂)。 有趣的是,有史以来最糟糕的指标是每100万个请求中有一个错误(10到6度)。
如果我理解正确,这意味着磁盘的磁头现在比以前更准确地定位了。 我没有密切监视此光盘,因此我非常主观地分析了获得的数据。 也许驱动器自投入运行以来只需要“试一下”? 还是这是零件机械磨损的结果,因此现在摩擦减少了? 在任何情况下,无论出于何种原因,此值都比对错误的早期警告更能衡量性能。 因此,它并不会打扰我。
除了上述问题和六个月前记录的三个非常可疑的错误之外,该磁盘的状态良好(根据SMART),适用于笔记本电脑的库存磁盘,可以使用1100天以上(26423小时)。
ID
出于好奇,我在配备SSD的新型笔记本电脑上进行了相同的测试:
sh$ sudo smartctl -i /dev/sdb smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: TOSHIBA THNSNK256GVN8 Serial Number: 17FS131LTNLV LU WWN Device Id: 5 00080d 9109b2ceb Firmware Version: K8XA4103 User Capacity: 256 060 514 304 bytes [256 GB] Sector Sizes: 512 bytes logical, 4096 bytes physical Rotation Rate: Solid State Device Form Factor: M.2 Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ACS-3 (minor revision not indicated) SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Tue Mar 13 01:03:23 2018 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled
引起您注意的第一件事是,尽管存在SMART,但该设备不在
smartctl
数据库中。 但这不会阻止该工具从SSD收集数据,但是,它将无法报告特定于提供者的各种属性的确切值:
sh$ sudo smartctl -a /dev/sdb smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 120) seconds. Offline data collection capabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 11) minutes. SCT capabilities: (0x003d) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID
在上方,您可以看到全新SSD的输出。 即使没有特定提供者的数据的规范化或元信息,该数据也是可以理解的,例如我的
“ Unknown_SSD_Attribute”。 我只能希望
smartctl
未来版本在数据库中具有该驱动器模型上的数据,并且我可以更好地识别潜在问题。
使用smartctl在Linux上测试您的SSD
到目前为止,我们已经审查了正常驱动器运行期间收集的数据。 但是,SMART协议还支持一些用于脱机测试的命令,以运行按需诊断。
除非另有说明,否则可以在正常磁盘操作期间执行脱机测试。 因为测试和主机I / O请求将竞争,所以在测试过程中磁盘性能将下降。 SMART规范定义了几种类型的独立测试:
简短的独立测试( -t short
)这样的测试将检查电气和机械性能以及磁盘读取性能。 简短的自治测试通常只需要几分钟(通常是2到10分钟)。
扩展的独立测试( -t long
)该测试花费几乎两倍的时间。 这通常只是简短的独立测试的更详细的版本。 此外,此测试还将扫描磁盘的整个表面以查找数据错误,而没有时间限制。 测试的持续时间将与磁盘的大小成正比。
独立运输测试( -t conveyance
)建议将该测试工具包作为检查设备运输过程中可能发生的损坏的较快方法。
以下是从上述相同驱动器中获取的示例。 我建议你猜哪一个:
sh$ sudo smartctl -t short /dev/sdb smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build) Copyright (C) 2002-16, 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 2 minutes for test to complete. Test will complete after Mon Mar 12 18:06:17 2018 Use smartctl -X to abort test.
检查正在进行中。 让我们等待完成以查看结果:
sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb' smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build) Copyright (C) 2002-16, 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
让我们在另一个驱动器上运行相同的测试:
sh$ sudo smartctl -t short /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, 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 2 minutes for test to complete. Test will complete after Mon Mar 12 21:59:39 2018 Use smartctl -X to abort test.
再一次,我们将其发送睡眠两分钟,然后查看结果:
sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb' smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, 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
有趣的是,在这种情况下,我们看到磁盘和计算机的制造商似乎已经对磁盘进行了测试(使用寿命为0小时和12小时)。 我自己绝对比他们更关心驱动器的状态。 因此,由于我已经显示了快速测试,因此我也将运行高级测试以了解如何进行。
sh$ sudo smartctl -t long /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, 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 110 minutes for test to complete. Test will complete after Tue Mar 13 00:09:08 2018 Use smartctl -X to abort test.
显然,这次等待的时间要比简短测试的时间长得多。 让我们来看看:
sh$ sudo bash -c 'sleep $((110*60)) && smartctl -l selftest /dev/sdb' [sudo] password for sylvain: smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, 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
在最后一个测试中,请注意使用简短测试和扩展测试获得的结果之间的差异,即使它们是一个接一个地执行。 好吧,也许此驱动器的状态不是很好! 我注意到在第一个读取错误之后测试停止了。 因此,如果要获取有关所有读取错误的全面信息,则必须在每个错误之后继续进行测试。 我敦促您看一看写得很好的smartctl(8)手册页,以获取有关
-t select
,
N-max
和
-t select
更多信息,以便能够执行此操作:
sh$ sudo smartctl -t select,810665230-max /dev/sdb smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Selective self-test routine immediately in off-line mode". SPAN STARTING_LBA ENDING_LBA 0 810665230 976773167 Drive command "Execute SMART Selective self-test routine immediately in off-line mode" successful. Testing has begun.
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build) Copyright (C) 2002-16, 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
结论
毫无疑问,SMART正是应添加到工具包中的技术,用于监视服务器驱动器的运行状况。
SMART Disk Monitoring Daemon smartd(8) ,
.
, , SMART . , , – , , . , RAID !
, !