SSDの寿命を確認する

古都の老兵
2025-11-07
2025-11-07

はじめに

 以前こちらでsmartctlを使ってHDDの状態を確認する方法について紹介しましたが、昨今ではストレージはSSDが主流になっています。ご存知の様にSSDには総書込み量に限界があります。殆どの場合は気にする必要がありませんが、SSDストレージをキャッシュやバックアップ領域として日々大量に書込みや削除を行っている様な、特に大量の小さなファイルを書込み&削除を繰り返している様な使い方をしている場合、限界を迎える場合がありますので現在の状況を把握しておく事が重要です。

SSDの寿命について

 SSDの寿命は多くの場合、TBW(Tera Bytes Written)で表される事が殆どだと思います。これはSSDに対してどのくらいのデータを書き込むまで保証出来るかを示す耐久性指標です。例えば、ウェスタンデジタル(WD)社のコンシューマー向けである WD Blue 3D NAND SATA SSD の2TBであれば、500TBWとなっています。一見すると直ぐに寿命を迎えそうに感じますが、毎日 100GB 書き込んだとしても13.7年程掛かります。個人がPCで使う事を考えると、まず毎日100GBのデータを書き換えるような事は無いと思いますので、殆ど気にする必要はないでしょう。
 尚、同じWDでもNAS向けと謳っているのRedシリーズの場合、同じ2TBでもTBWは1300TBと2倍以上の耐久性があります。また、サーバー向けのSSDドライブは480GB程のSSDであってもTBWは4380TBといった冗談のような耐久性があります。流石に高いだけありますね。

確認するには

 ストレージの情報についてはsmartctlコマンドでSMART情報を確認します。

# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/bus/0 -d megaraid,0 # /dev/bus/0 [megaraid_disk_00], SCSI device
/dev/bus/0 -d megaraid,1 # /dev/bus/0 [megaraid_disk_01], SCSI device
/dev/bus/0 -d megaraid,2 # /dev/bus/0 [megaraid_disk_02], SCSI device
/dev/bus/0 -d megaraid,3 # /dev/bus/0 [megaraid_disk_03], SCSI device

 上記の例だと megaraid のドライバーを使っている事が分かります。またディスクの番号は0~4までの4台存在している事も確認できます。

 使っているRAIDコントローラ、デバイス番号が判明したら各ディスクの状態を確認していきます。

# smartctl -a -d megaraid,0 /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-570.42.2.el9_6.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     WD Blue SA510 2.5 2TB
Serial Number:    25152X4A2E05
LU WWN Device Id: 5 001b44 4a5bb822f
Firmware Version: 530500WD
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Sep 19 11:25:02 2025 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 :
 :
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   ---    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   ---    Old_age   Always       -       44413
 12 Power_Cycle_Count       0x0032   100   100   ---    Old_age   Always       -       24
165 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       40780384486054
166 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       642
167 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       146
168 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       895
169 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       1025
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
173 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       726
174 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       17
187 Reported_Uncorrect      0x0032   100   100   ---    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       1
194 Temperature_Celsius     0x0022   084   037   ---    Old_age   Always       -       16 (Min/Max 15/37)
199 UDMA_CRC_Error_Count    0x0032   100   100   ---    Old_age   Always       -       0
230 Unknown_SSD_Attribute   0x0032   099   099   ---    Old_age   Always       -       0x6342483c6342
232 Available_Reservd_Space 0x0033   100   100   004    Pre-fail  Always       -       100
233 Media_Wearout_Indicator 0x0032   100   100   ---    Old_age   Always       -       1483515
234 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       1556472
241 Total_LBAs_Written      0x0030   253   253   ---    Old_age   Offline      -       372641
242 Total_LBAs_Read         0x0030   253   253   ---    Old_age   Offline      -       699197
244 Unknown_Attribute       0x0032   000   100   ---    Old_age   Always       -       0

 実行結果の途中を省略していますが、総書込み量は SMART Attributes Data のID241が示しています。ただ、上記の実行結果では「Total_LBAs_Written」となっています。LBAはLogical Block Addressing(論理ブロックアドレス)ですが、論理ブロックのサイズはストレージによって異なりますので、実行結果の「START OF INFORMATION SECTION」の情報を確認します。

=== START OF INFORMATION SECTION ===
Device Model:     WD Blue SA510 2.5 2TB
Serial Number:    25152X4A2E05
LU WWN Device Id: 5 001b44 4a5bb822f
Firmware Version: 530500WD
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        Not in smartctl database [for details use: -P showall]
 

 上記のデーターでは Sectore Size が 512bytes になっていますが、Device is の部分が「Not in smartctl database」となっており、smartのデータベースに存在デバイスであり、これらの数値が実態にあっているか分かりません。

smart データベースの更新

 smartデータベースを更新するには、update-smart-drivedb コマンドを実行します。

# update-smart-drivedb
/usr/share/smartmontools/drivedb.h updated from branches/RELEASE_7_2_DRIVEDB

 更新後に再度smartctlを確認します。

# smartctl -a -d megaraid,0 /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.0-570.42.2.el9_6.x86_64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     WD Blue / Red / Green SSDs
Device Model:     WD Blue SA510 2.5 2TB
Serial Number:    25152X4A2E05
LU WWN Device Id: 5 001b44 4a5bb822f
Firmware Version: 530500WD
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Sep 19 13:57:31 2025 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 :
 :

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   ---    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   ---    Old_age   Always       -       44413
 12 Power_Cycle_Count       0x0032   100   100   ---    Old_age   Always       -       24
165 Block_Erase_Count       0x0032   100   100   ---    Old_age   Always       -       40780384486054
166 Minimum_PE_Cycles_TLC   0x0032   100   100   ---    Old_age   Always       -       642
167 Max_Bad_Blocks_per_Die  0x0032   100   100   ---    Old_age   Always       -       146
168 Maximum_PE_Cycles_TLC   0x0032   100   100   ---    Old_age   Always       -       895
169 Total_Bad_Blocks        0x0032   100   100   ---    Old_age   Always       -       1025
170 Grown_Bad_Blocks        0x0032   100   100   ---    Old_age   Always       -       0
171 Program_Fail_Count      0x0032   100   100   ---    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   ---    Old_age   Always       -       0
173 Average_PE_Cycles_TLC   0x0032   100   100   ---    Old_age   Always       -       726
174 Unexpected_Power_Loss   0x0032   100   100   ---    Old_age   Always       -       17
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   ---    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       1
194 Temperature_Celsius     0x0022   084   037   ---    Old_age   Always       -       16 (Min/Max 15/37)
199 UDMA_CRC_Error_Count    0x0032   100   100   ---    Old_age   Always       -       0
230 Media_Wearout_Indicator 0x0032   099   099   ---    Old_age   Always       -       0x6342483c6342
232 Available_Reservd_Space 0x0033   100   100   004    Pre-fail  Always       -       100
233 NAND_GB_Written_TLC     0x0032   100   100   ---    Old_age   Always       -       1483515
234 NAND_GB_Written_SLC     0x0032   100   100   ---    Old_age   Always       -       1556472
241 Host_Writes_GiB         0x0030   253   253   ---    Old_age   Offline      -       372641
242 Host_Reads_GiB          0x0030   253   253   ---    Old_age   Offline      -       699197
244 Temp_Throttle_Status    0x0032   000   100   ---    Old_age   Always       -       0

 Device is:  が「In smartctl database」となりました。また、ID241の表記も「Host_Writes_GiB」に変わりました。どうやらこのデバイスの241の数値は本当はLBAではなく、GiBの様です。上記の372641だと、372TB程書き込まれている事になります。また、ID9は稼働時間のようですので、44413時間だと1850日=約5年程稼働している事になります。
 その他も「Unknown_Attribute」だった所が無くなり、表記されるようになりました。 

最後に

 5年で372TBはかなり使われている方だろうと思います。通常のWebやDBサーバーだと1年で2TBも書き込んでいない場合もあるようです。結局は使い方次第なのですが、小さなファイルを大量に書いたり消したりを繰り返しているような処理が多いサーバーは書込み量が多くなる傾向があります。
 何れにしても現状の使用量を知る事で、あとどのくらいデバイスが持つかといった指標になると思いますので、知っておくに越したことはないでしょう。
 尚、SSDのTBWについてはSSD毎に異なりますので、ご自身が使っているSSDについてはメーカーのHP等でご確認ください。