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

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

我们都知道SSD的预定寿命是有限的。如何在 Linux 中检查 SSD 当前的健康状态?

大多数 Google 搜索结果会要求您查找称为 Media_Wearout_Indicator 的百分比字段的 SMART 信息,或其他术语指标,例如长期数据耐用性(这些指标并不存在),是的,我确实检查了两个 SSD,两者都缺少这些字段。我可以继续寻找第三个SSD,但我觉得这些字段不标准化。

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


对于第一个 SSD,尚不清楚哪个字段指示磨损级别。然而,只有一个 Unknown_Attribute 的 RAW VALUE 介于 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 ATTRIBUTE 很突出,但其原始值为 0(表示剩余寿命为 0%),对于表面上健康的 SSD 来说不太可能,除非它碰巧处于危险之中(我们将在几天后看到),并且如果它显示“已使用 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

答案1

在你的第一个例子中,我认为你指的是英特尔驱动器上的“媒体磨损指示器”,它是属性233。是的,它的范围是0-100,其中100是全新的、未使用的驱动器,并且0 完全磨损。根据你的输出,这个字段似乎不存在。

在您的第二个示例中,请阅读关于 SSD_Life_Left 的官方文档。每一页:

该属性的RAW值始终为0并且没有任何意义。请检查标准化值。它从 100 开始,表示 SDD 剩余寿命的大致百分比。当闪存块被标记为坏时,它通常会减少,请参阅 Retired_Block_Count 的 RAW 值

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

您应该能够查找驱动器规格,并确定用于制造芯片的工艺。 32nm工艺芯片将比24nm工艺芯片具有更长的写入寿命。然而,“平均而言”,您可能会预期大约 3,000 到 4,000 次写入,最少 1,000 次,最多 6,000 次。因此,如果您有 64GB SSD,那么假设采用磨损均衡,您应该预计总共有 192TB 到 256TB 的数据写入 SSD。

举例来说,如果您的驱动器维持 11 KBps 的利用率,那么每小时写入的数据量预计约为 40 MB。在开机 6568 个小时后,您已向磁盘写入了大约 260 GB 的数据。知道您可能可以维持大约 200 TB 的总写入量,在发生故障之前,您还有大约 600 年的时间才会因芯片磨损而发生故障。由于电容器磨损或电压调节,您的磁盘可能会出现故障。

答案2

对于 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

我建议您对最后关于超过该值的说法持保留态度。

答案3

如果您没有英特尔品牌 SSD:请小心!我有一块三星 SSD,我完全被 smartmontools /smartctl 错误的属性标签误导了。如果您除了英特尔之外还有其他任何东西 - 您可能会在以下位置找到我的(愚蠢的)痛苦故事https://askubuntu.com/a/460463/65722 有帮助。

愿你的信息质量与挖掘时间的比率比我更好!

答案4

有一个服务器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 次
  • 开机时间
  • 温度_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 [options] <device>

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

相关内容