如何检查SSD剩余寿命或介质的磨损程度?


31

众所周知,SSD的预定使用寿命有限。如何在Linux中检查SSD的当前健康状况?

大多数Google搜索结果会要求您在SMART信息中查找一个称为Media_Wearout_Indicator的百分比字段,或者诸如长期数据耐力之类的其他行话指标-不存在-是的,我确实检查了两个SSD,它们都缺少这些字段。我可以继续找到第三个SSD,但是我觉得这些领域不是标准化的。

为了演示这个问题,这里有两个例子。


对于第一个SSD,尚不清楚哪个字段指示损耗水平。但是,只有一个Unknown_Attribute的RAW值在1到100之间,因此我只能假设这就是我们要寻找的:

    $ sudo smartctl -A /dev/sda                                             
    smartctl 6.2 2013-04-20 r3812 [x86_64-linux-3.11.0-14-generic] (local build)
    Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

    === START OF READ SMART DATA SECTION ===                                 
    SMART Attributes Data Structure revision number: 1                       
    Vendor Specific SMART Attributes with Thresholds:                        
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      5 Reallocated_Sector_Ct   0x0002   100   100   000    Old_age   Always       -       0
      9 Power_On_Hours          0x0002   100   100   000    Old_age   Always       -       6568
     12 Power_Cycle_Count       0x0002   100   100   000    Old_age   Always       -       1555
    171 Unknown_Attribute       0x0002   100   100   000    Old_age   Always       -       0
    172 Unknown_Attribute       0x0002   100   100   000    Old_age   Always       -       0
    173 Unknown_Attribute       0x0002   100   100   000    Old_age   Always       -       57
    174 Unknown_Attribute       0x0002   100   100   000    Old_age   Always       -       296
    187 Reported_Uncorrect      0x0002   100   100   000    Old_age   Always       -       0
    230 Unknown_SSD_Attribute   0x0002   100   100   000    Old_age   Always       -       190
    232 Available_Reservd_Space 0x0003   100   100   005    Pre-fail  Always       -       0
    234 Unknown_Attribute       0x0002   100   100   000    Old_age   Always       -       350
    241 Total_LBAs_Written      0x0002   100   100   000    Old_age   Always       -       742687258
    242 Total_LBAs_Read         0x0002   100   100   000    Old_age   Always       -       1240775277

因此,该SSD使用了其重写寿命的57%,对吗?


在另一个磁盘上,SSD_Life_Left属性引人注目,但对于看起来健康的SSD,除非其处于危险之中(我们将在几天后看到),否则其Raw值0(表明剩余寿命为0%)不太可能,并且如果显示“已经使用了0%的寿命”,则对于已磨损的硬盘(已磨损=已使用了一年以上)也不可能。

    > sudo /usr/sbin/smartctl -A /dev/sda
    smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.11.6-4-desktop] (SUSE RPM)
    Copyright (C) 2002-13, 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
      1 Raw_Read_Error_Rate     0x000f   104   100   050    Pre-fail  Always       -       0/8415644
      5 Retired_Block_Count     0x0033   100   100   003    Pre-fail  Always       -       0
      9 Power_On_Hours_and_Msec 0x0032   100   100   000    Old_age   Always       -       4757h+02m+17.130s
     12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1371
    171 Program_Fail_Count      0x0032   000   000   000    Old_age   Always       -       0
    172 Erase_Fail_Count        0x0032   000   000   000    Old_age   Always       -       0
    174 Unexpect_Power_Loss_Ct  0x0030   000   000   000    Old_age   Offline      -       52
    177 Wear_Range_Delta        0x0000   000   000   000    Old_age   Offline      -       2
    181 Program_Fail_Count      0x0032   000   000   000    Old_age   Always       -       0
    182 Erase_Fail_Count        0x0032   000   000   000    Old_age   Always       -       0
    187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
    194 Temperature_Celsius     0x0022   030   030   000    Old_age   Always       -       30 (Min/Max 30/30)
    195 ECC_Uncorr_Error_Count  0x001c   104   100   000    Old_age   Offline      -       0/8415644
    196 Reallocated_Event_Count 0x0033   100   100   000    Pre-fail  Always       -       0
    231 SSD_Life_Left           0x0013   100   100   010    Pre-fail  Always       -       0
    233 SandForce_Internal      0x0000   000   000   000    Old_age   Offline      -       3712
    234 SandForce_Internal      0x0032   000   000   000    Old_age   Always       -       1152
    241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       -       1152
    242 Lifetime_Reads_GiB      0x0032   000   000   000    Old_age   Always       -       3072

使用SMART属性时,较低的值会更糟,因为驱动器始终会警告该值是否小于(或等于?)阈值。话虽如此,有一个磨损指示器非常好,但是我希望您不要将珍贵的数据信任任何存储设备。您应该以RAID方式运行多个存储设备。
Alexios

您怎么知道我的数据“宝贵”?它只是公司的KnowledGabase到我的笔记本电脑的脱机副本。我要指出的是,人们经常会假设采用sysop方案。无论如何,谢谢您的评论。
坦克手六四2014年

所有数据都是宝贵的。:)我们从这个原则开始,然后转到珍贵的数据(例如摄影师的数码照片)和较不珍贵的数据(操作系统-易于更换,但是停机,如果需要的话会浪费时间/收入)代替它)。
Alexios 2014年

两种驱动器都在耐久性极限之内。第一个驱动器只有约350 GiB,而第二个驱动器只有1.1 TiB。我不确定这是怎么回事...
bwDraco

Answers:


19

在第一个示例中,我认为您指的是Intel驱动器上的“ Media Wearout Indicator”(媒体磨损指示器),该属性为233。是的,它的范围是0-100,其中100是全新的未使用的驱动器,并且0完全磨损。根据您的意见,此字段似乎不存在。

在第二个示例中,请阅读有关SSD_Life_Left官方文档。在该页面上:

此属性的RAW值始终为0,没有任何意义。而是检查标准化的VALUE。它从100开始,表示剩余SDD寿命的大约百分比。当Flash块被标记为坏块时,它通常会减少,请参见Retired_Block_Count的RAW值

完全理解smartctl(8)的意思,而不要作假设,这一点非常重要。不幸的是,SMART工具并不总是与最新的SSD及其属性保持同步。因此,并非总是有一种干净的方法来告诉芯片已写入多少次。最好的办法是查看“ Power_On_Hours”(在您的情况下为“ 6568”),确定平均磁盘利用率,然后将其平均。

您应该能够查找驱动器规格,并确定用于制造芯片的过程。32纳米工艺芯片将比24纳米工艺芯片具有更长的写入寿命。但是,似乎“平均”地,您可能期望大约3,000到4,000次写入,最小为1,000次,最大为6,000次。因此,如果您有64GB的SSD,那么假设损耗均衡,则应该期望将总共192TB至256TB的数据写入SSD。

例如,如果您要保持对驱动器的11 KBps的利用率,则可以预期每小时写入约40 MB。在6568开机小时,您已将大约260 GB写入磁盘。知道您可能会承受大约200 TB的总写操作,那么在失败之前,由于芯片已经耗尽,您有600年的失败时间。您的磁盘可能会由于电容器磨损或电压调节而发生故障。


9
很清楚,谢谢。最好使用smartctl或其API将这些知识制作成GUI工具。毕竟,使用计算器作为计算机的输入设备,而坐在电脑前的人作为处理器,这与发明计算机的精神背道而驰!
Tankman六四2013年

您的链接似乎已失效
Skeleton Bow

15

对于Samsung SSD,请检查SMART属性177(平均磨损计数)。

ID#177磨损均衡计数

此属性表示媒体编程和擦除操作的次数(已擦除块的次数)。此值与SSD的寿命直接相关。此属性的原始值显示P / E周期的总数。

资料来源:http : //www.samsung.com/global/business/semiconductor/minisite/SSD/M2M/download/07_Communicating_With_Your_SSD.pdf

磨损水平指示器从100开始,从我所知道的线性下降到1。值为1时,驱动器将超过其所有额定p / e周期,但实际上,驱动器的总耐用性可能会大大超过该值。

来源:http : //www.anandtech.com/show/7173/samsung-ssd-840-evo-review-120gb-250gb-500gb-750gb-1tb-models-tested/3

我建议您接受关于用一粒盐超过该值的最后声明。


链接现在已经死了。
微积分骑士

我认为他们的Wear_Leveling_Count顺序是向后的。我有2个三星SSD,一个约4年的RAW_VALUE为42,另一个约1个月的RAW_VALUE为0。似乎是从0开始并向上递增。
John Eikenberry

4

如果您没有Intel品牌的SSD:请当心!我有一个三星SSD,并且完全被smartmontools / smartctl的错误属性标签所误导。如果您除了英特尔之外还有其他任何东西-您可以在https://askubuntu.com/a/460463/65722上找到我有关(精神)疼痛的故事,对您 有所帮助。

希望您的信息质量与花时间挖掘的比率比我的好!


0

有一台带有LSI raid卡的服务器,我已经安装了7台三星SSD。

就是这样

  • / dev / sda是​​我的操作系统SSD,被Raid Controller标记为JBOD。
  • 其他7个SSD仅显示为/ dev / sdb,因为它们是RAID 0(或RAID-?)。

获取RAID控制器后面的磁盘信息的诀窍是

smartctl --scan

{output is}
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/bus/0 -d megaraid,8 # /dev/bus/0 [megaraid_disk_08], SCSI device
/dev/bus/0 -d megaraid,9 # /dev/bus/0 [megaraid_disk_09], SCSI device
/dev/bus/0 -d megaraid,10 # /dev/bus/0 [megaraid_disk_10], SCSI device
/dev/bus/0 -d megaraid,11 # /dev/bus/0 [megaraid_disk_11], SCSI device
/dev/bus/0 -d megaraid,12 # /dev/bus/0 [megaraid_disk_12], SCSI device
/dev/bus/0 -d megaraid,13 # /dev/bus/0 [megaraid_disk_13], SCSI device
/dev/bus/0 -d megaraid,14 # /dev/bus/0 [megaraid_disk_14], SCSI device
/dev/bus/0 -d megaraid,15 # /dev/bus/0 [megaraid_disk_15], SCSI device

然后获取smartctl信息,例如

  • WEAR_LEVELING_COUNT
  • POWER_ON_HOURS
  • TEMPERATURE_CELCIUS 和所有其他好东西

为每个磁盘做

smartctl -d megaraid,8 -all /dev/bus/0
smartctl -d megaraid,9 -all /dev/bus/0
smartctl -d megaraid,10 -all /dev/bus/0
{down to}
smartctl -d megaraid,15 -all /dev/bus/0

smartctl的语法是smartctl [options] <device>

当多个磁盘未显示为多个设备(例如/ dev / sdb,/ dev / sdc,/ dev / sdd等)时,这就是您进入并通过RAID卡的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.