PR
PR

UbuntuでSSDの寿命と健康状態を確認する!smartctlコマンドの使い方

記事内に広告が含まれています。

UbuntuでSSDの寿命を確認するには、smartctlコマンドを使用します。

smartctlは、ハードディスク(HDD)やSSDの健康状態を自己診断するS.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)システムを操作するための強力なコマンドラインツールです。

smartmontoolsのインストール

smartctlコマンドを使用するためには、「smartmontools」パッケージをインストールする必要があります。

$ sudo apt update
$ sudo apt install smartmontools

基本的な使用方法

実行には管理者権限が必要なため、通常は「sudo」を付けて実行します。

$ sudo smartctl [オプション] [デバイスパス]

よく使うオプションの概要

  • -a, --all: 製造元情報、対応機能、現在の健康状態、エラーログなど、そのドライブの全S.M.A.R.T.情報を表示します。
  • -d [type]: 自動認識しない外付けドライブやRAID環境の場合に使用します。(USBでの外付けなら sat、NVMeなら nvme など)
  • -H:ドライブの総合的な健康状態(Health Status)のみを表示します。
  • -l error:エラーの履歴を表示します。
  • -t short: 簡易テスト(数分)を実施します。
  • -t long: 全部のセクタをスキャンする詳細テスト(数時間)を実施します。
  • -l selftest: 実施した自己診断テストの結果を表示します。
  • --xall, -x: すべての拡張ログを含めた最も詳細な情報を表示します。

デバイスのスキャン

まずは「smartctl --scan」コマンドで、接続されているストレージのデバイスパス(/dev/sdaなど)を確認します。

※外付けストレージやRAIDなどはスキャンされない場合があります。

$ smartctl --scan
/dev/sda -d scsi

「/dev/sda」が接続されていることが確認できました。

smartctlコマンド実行

確認したデバイスパスを使って、実際に以下のように実行します。

$ sudo smartctl -a /dev/sda

SSDの寿命を調べる方法

以下のコマンドを実行することで、SSDの寿命に関する項目を確認できます。

$ sudo smartctl -a /dev/sda

SSDの接続規格には主にNVMeとSATAの2通りがあり、それぞれで表示結果や見るべき項目が異なります。順に説明していきます。

NVMe SSDの場合

NVMe規格のSSDでは表示項目が統一されているため、以下の項目を確認することで残りの寿命を把握できます。

Percentage Used
メーカーが保証する書き込み寿命(Endurance)に対する使用率です。
  • 0%:新品に近い状態
  • 100%:メーカーが保証する書き込み寿命に達した状態
  • 100%超え:100%を超えても即故障するわけではありませんが、予備領域が減り、いつ故障してもおかしくない状態
Available Spare
予備領域の残り(%)です。
通常は100%ですが、これが減り始めると物理的な劣化が進んでいるサインです。
Data Units Written
今まで書き込んだデータの総容量が表示されます。
製品カタログなどに記載されている TBW (Total Bytes Written) と比較することで、物理的な限界まであとどのくらい余裕があるか推測できます。

※今回は手元にNVMe規格のSSDがないため、実際の実行例は省略します。

SATA SSDの場合

SATA SSDはメーカーやモデルによって項目名(ID)が異なりますが、主に以下の項目に注目します。

Percent_Lifetime_RemainまたはSSD_Life_Left
寿命の目安となる、残り寿命のパーセンテージを表示します。
  • VALUE:残りの寿命(%) 100から始まり、0に近づくほど寿命が近いことを意味します。
  • RAW_VALUE:使用した寿命(%)0から始まり、100に近づくほど寿命が短い(消耗している)ことを意味します。
$ sudo smartctl -a /dev/sda | grep -E "ATTRIBUTE_NAME|Percent_Lifetime_Remain"
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
202 Percent_Lifetime_Remain 0x0031   020   020   ---    Pre-fail  Offline      -       80

残りの寿命(VALUE)が20%になっているので、私のSSDはかなり使い込まれている状態ですね…。

Wear_Leveling_Count
SSD全体のブロックがどれだけ平均的に書き換えられたかを、メーカーが設定した寿命(最大消去回数)に基づいた「パーセンテージ」や「カウント」で表します。
  • VALUE:書き換え上限に対してどれだけ消耗しているか「%」で表示。100が新品で、0に近づくと寿命です。
  • RAW_VALUE:実際の書き換え回数です。
$ sudo smartctl -d sat -a /dev/sdb | grep -E "ATTRIBUTE_NAME|Wear_Leveling_Count"
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
177 Wear_Leveling_Count     0x0013   099   099   017    Pre-fail  Always       -       14
Ave_Block-Erase_Count
SSD内の全ブロックが実際に何回消去(書き換え)されたかの物理的な平均回数を示します。
「全ブロックの総消去回数 ÷ 全ブロック数」で算出された平均の実数です。
  • VALUE:消去の上限に対してどれだけ消耗しているか「%」で表示。100が新品で、0に近づくと寿命です。
  • RAW_VALUE:実際の平均消去回数
$ sudo smartctl -a /dev/sda | grep -E "ATTRIBUTE_NAME|Ave_Block-Erase_Count"
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
173 Ave_Block-Erase_Count   0x0032   020   020   ---    Old_age   Always       -       2412
【豆知識】NANDの種類による耐久性の違い
使用されているNANDフラッシュメモリによって、書き換え可能回数の目安が異なります。ご自身のSSDの型番と「NAND」で検索すると確認できるかもしれません。
  • QLC:約1,000回(大容量・低価格)
  • TLC:約3,000回(主流・バランス型)
  • MLC:約10,000回 (高耐久・高価)
  • SLC:約100,000回(業務用高耐久・高価)
Total_LBAs_Written
データの総書き込み容量です。
製品カタログに記載されている TBW (Total Bytes Written) と比較することで、物理的な限界まであとどのくらい余裕があるか推測できます。

Total_LBAs_Written が表示されない場合の書き込み量確認方法

SATA SSDで Total_LBAs_Written が見当たらない場合、-x オプションを使用してデータ書き込みサイズを計算することができます。

まずは「INFORMATION SECTION」に表示されている「Sector Sizes」を確認します。

$ sudo smartctl -x /dev/sda | grep "Sector Sizes"
Sector Sizes:     512 bytes logical, 4096 bytes physical

次に Device Statistics の項目にある Logical Sectors Written(書き込まれたセクタ数)を確認します。

$ sudo smartctl -x /dev/sda | grep "Logical Sectors Written"
0x01  0x018  6     94883700242  ---  Logical Sectors Written

この「セクタ数」に先ほどの「セクタサイズ(512 bytes)」を掛けることで、書き込んだ総データサイズを算出できます。

SSDのパッケージに書かれているTBWは一般的に「1000」単位で計算されるため、以下のように bc コマンドで計算してみます。

$ echo "scale=2; 94883700242 * 512 / 1000 / 1000 / 1000 / 1000" | bc
48.58

計算の結果、約48.58TB分のデータを書き込んだことが確認できました!

各オプションの詳細な使用例と見方

ここからは、目的別に各オプションの詳しい出力結果の見方を解説します。(※以下の出力例は私の環境のものです)

-a, --all:全情報の表示

ドライブの全S.M.A.R.T.情報を表示します。

出力結果は、主に以下の5つの大きなブロック(セクション)で構成されています。

基本情報(=== START OF INFORMATION SECTION ===)

モデル名、シリアルナンバー、容量、ファームウェアなどが記載されています。

全体的な健康状態(=== START OF READ SMART DATA SECTION ===)

ドライブ自身が判定した総合結果です。PASSEDなら致命的な問題なし、FAILEDなら危険な状態です。

詳細な健康指標 (SMART Attributes Data Structure)

稼働時間、温度、寿命の目安となるパーセンテージなどが一覧になっています。

寿命の目安となる「残り寿命のパーセンテージ(Percent_Lifetime_Remain)」や「総書き込み量に関する指標」がここに含まれるため、ドライブの劣化具合を具体的に読み取ることができます。(※メーカーによって表示される項目名が微妙に異なります)

エラーの記録 (SMART Error Log)

過去に発生したエラー履歴です。

正常ならNo Errors Logged(エラー記録なし)と表示されます。

セルフテストの履歴 (SMART Selective self-test log)

過去に実行された自己診断テスト(ショートテストやロングテスト)の履歴が記録されています。

$ sudo smartctl -a /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron Client SSDs
Device Model:     Crucial_CT120M500SSD1
Serial Number:    xxxxxxxxxxxx
##### 中略 #####
User Capacity:    120,034,123,776 bytes [120 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
##### 中略 #####
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
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

...[中略:General SMART Values 等]...

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
  1 Raw_Read_Error_Rate     0x0032   100   100   ---    Old_age   Always       -       11143
  5 Reallocate_NAND_Blk_Cnt 0x0032   100   100   ---    Old_age   Always       -       98304
  9 Power_On_Hours          0x0032   100   100   ---    Old_age   Always       -       64197
 12 Power_Cycle_Count       0x0032   100   100   ---    Old_age   Always       -       6547
##### 中略 #####
202 Percent_Lifetime_Remain 0x0031   020   020   ---    Pre-fail  Offline      -       80

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     64197         -
# 2  Short offline       Completed without error       00%     64197         -
##### 中略 #####
#20  Vendor (0xff)       Completed without error       00%     10932         -
#21  Vendor (0xff)       Completed without error       00%     10789         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
##### 中略 #####
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more

デバイスタイプの指定:-d [type]

自動認識しない外付けドライブなどに使用します。

typeはUSB変換アダプタ経由のHDDなら「sat」、NVMeなら「nvme」を指定します。

以下は、壊れたMacBookからSSDを取り出してUSB経由(sat)で接続している例です。

$ sudo smartctl -d sat -a /dev/sdb
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     APPLE SSD SM256C
Serial Number:    xxxxxxxxxxxx
LU WWN Device Id: 5 0000f0 000000000
Firmware Version: AXM09A1Q
##### 以下省略 #####

健康状態だけを確認:-H

ドライブの総合的な健康状態(Health Status)だけを確認したい時に使用します。

確認すべきポイントは一番最後の行で、結果は基本的に以下のどちらかになります。

  • PASSED (合格):正常な状態です。
  • FAILED! (不合格・警告):寿命の限界(しきい値)を超えているか、重大な故障の兆候があります。
$ sudo smartctl -H /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

エラー履歴のみを確認:-l error

エラーログの履歴を表示します。

$ sudo smartctl -l error /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged

簡易自己診断テストの実行:-t short

SSD内部の簡易テストを開始します。

実行すると、メッセージの最後の方に、テストにかかる予想時間が表示されます。

今回の場合「Please wait 2 minutes for test to complete.」と表示されているので、2分ほどでテストが完了するようです。

$ sudo smartctl -t short /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, 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 Apr  6 19:22:20 2026 JST
Use smartctl -X to abort test.

結果の確認方法:-l selftest

数分待った後に -l selftest オプションを使って結果を確認します。

「Test_Description」が「Short offline」と表示されているのが、「-t short」でのテスト結果となります。

「Status」が「Completed without error」となっていれば合格です。

$ sudo smartctl -l selftest /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, 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
# 1  Short offline       Completed without error       00%     64197         -
# 2  Short offline       Completed without error       00%     64192         -
# 3  Vendor (0xff)       Completed without error       00%     35605         -
##### 以下省略 #####

テストが終了していない場合は「Self-test routine in progress」といったステータスが表示されます。

$ sudo smartctl -l selftest /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, 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
# 1  Short offline       Self-test routine in progress 90%     64197         -
# 2  Short offline       Completed without error       00%     64192         -
# 3  Vendor (0xff)       Completed without error       00%     35605         -
##### 以下省略 #####

詳細テストの実行:-t long

全セクタをスキャンする詳細テストです。

容量によっては数時間かかります。

$ sudo smartctl -t long /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, 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 9 minutes for test to complete.
Test will complete after Mon Apr  6 19:33:32 2026 JST
Use smartctl -X to abort test.

結果の確認方法

テストの結果は、「-l selftest」オプションを使用することで確認することができます。

「Test_Description」が「Extended offline 」と表示されているのが、「-t long」でのテスト結果となります。

$ sudo smartctl -l selftest /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, 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
# 1  Extended offline    Completed without error       00%     64197         -
# 2  Short offline       Completed without error       00%     64197         -
# 3  Short offline       Completed without error       00%     64192         -
# 4  Vendor (0xff)       Completed without error       00%     35605         -
# 5  Vendor (0xff)       Completed without error       00%     18047         -
##### 以下省略 #####

すべての拡張ログを表示:--xall, -x

「-a」では見られない、新しい規格の拡張ログや、統計を表示することができます。

「-x」で追加される重要な項目

  • SCT Temperature History:アスキーアート(***)で描かれる1分刻みの温度グラフ。熱対策のトラブルシューティングに役立ちます。
  • Device Statistics:これまでの総読み書き量(Logical Sectors Written / Read)などを確認できます。TBWを計算する際に必須となることが多いです。
$ sudo smartctl -x /dev/sda 
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-107-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron Client SSDs
Device Model:     Crucial_CT120M500SSD1
Serial Number:    xxxxxxxxxxxx
##### 中略 #####
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
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

##### 中略 #####

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     -O--CK   100   100   ---    -    11145
  5 Reallocate_NAND_Blk_Cnt -O--CK   100   100   ---    -    98304
  9 Power_On_Hours          -O--CK   100   100   ---    -    64216
##### 中略 #####
202 Percent_Lifetime_Remain P---CK   020   020   ---    -    80
206 Write_Error_Rate        -OSR--   100   100   ---    -    0

General Purpose Log Directory Version 1
SMART           Log Directory Version 1 [multi-sector log support]
Address    Access  R/W   Size  Description
0x00       GPL,SL  R/O      1  Log Directory
0x01           SL  R/O      1  Summary SMART error log
##### 中略 #####
0xe0       GPL,SL  R/W      1  SCT Command/Status
0xe1       GPL,SL  R/W      1  SCT Data Transfer

SMART Extended Comprehensive Error Log Version: 1 (16383 sectors)
No Errors Logged

SMART Extended Self-test Log Version: 1 (1 sectors)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     64197         -
# 2  Short offline       Completed without error       00%     64197         -
##### 中略 #####
#18  Vendor (0xff)       Completed without error       00%     11243         -
#19  Vendor (0xff)       Completed without error       00%     11228         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
##### 中略 #####
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

SCT Status Version:                  3
SCT Version (vendor specific):       1 (0x0001)
Device State:                        Active (0)
Current Temperature:                    36 Celsius
Power Cycle Min/Max Temperature:     26/39 Celsius
Lifetime    Min/Max Temperature:     26/39 Celsius
Under/Over Temperature Limit Count:   0/0

SCT Temperature History Version:     2
Temperature Sampling Period:         1 minute
Temperature Logging Interval:        1 minute
Min/Max recommended Temperature:      0/70 Celsius
Min/Max Temperature Limit:           -5/75 Celsius
Temperature History Size (Index):    478 (378)

Index    Estimated Time   Temperature Celsius
 379    2026-04-07 14:06    36  *****************
 ...    ..( 41 skipped).    ..  *****************
 421    2026-04-07 14:48    36  *****************
##### 中略 #####
 307    2026-04-07 20:52    36  *****************
 ...    ..( 70 skipped).    ..  *****************
 378    2026-04-07 22:03    36  *****************

SCT Error Recovery Control command not supported

Device Statistics (GP Log 0x04)
Page  Offset Size        Value Flags Description
0x01  =====  =               =  ===  == General Statistics (rev 2) ==
0x01  0x008  4            6553  ---  Lifetime Power-On Resets
##### 中略 #####
0x07  =====  =               =  ===  == Solid State Device Statistics (rev 1) ==
0x07  0x008  1               8  N--  Percentage Used Endurance Indicator
                                |||_ C monitored condition met
                                ||__ D supports DSN
                                |___ N normalized value

Pending Defects log (GP Log 0x0c) not supported

SATA Phy Event Counters (GP Log 0x11)
ID      Size     Value  Description
0x0001  4            0  Command failed due to ICRC error
0x000a  4            3  Device-to-host register FISes sent due to a COMRESET

コメント

タイトルとURLをコピーしました