Hard-Disk

如何檢查 SSD 的剩餘壽命或介質的磨損程度?

  • May 19, 2021

我們都知道 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

在您的第一個範例中,我認為您指的是英特爾驅動器上的“媒體磨損指示器”,它是屬性 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”,確定您的平均磁碟使用率,然後取平均值。

您應該能夠查找您的驅動器規格,並確定用於製造晶片的過程。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 年的時間才能失敗。由於電容器磨損或電壓調節,您的磁碟可能會出現故障。

引用自:https://unix.stackexchange.com/questions/106678