LinuxでHDDやSSDの健康状態を確認する方法(smartctl)

LinuxでHDDやSSDの健康状態を確認する方法(smartctl)

パソコンやサーバーに搭載されているHDDやSSDには、S.M.A.R.T.と呼ばれる自己診断機能が搭載されており、S.M.A.R.T.情報を読み取ることでHDDやSSDの健康状態を確認することができます。

そこでここではRedHat互換のAlmaLinuxを例に、smartctlコマンドを使ってS.M.A.R.T.情報を読み取り、HDDやSSDの健康状態を確認する方法を紹介します。

S.M.A.R.T.とは

Self-Monitoring, Analysis and Reporting Technology(S.M.A.R.T.)は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)の障害の早期発見・故障の予測を目的としてディスクドライブに搭載されている機能で、各種の検査項目をリアルタイムに自己診断し、その状態を数値化し、ユーザーはその数値を後述しているsmartctlなどのツールを用いて確認することができます。

S.M.A.R.T.情報をチェックしても、すべての故障を予期することはできませんが、経年劣化や故障の前兆を知るのに非常に有効な機能です。

参照:Self-Monitoring, Analysis and Reporting Technology - Wikipedia

WindowsでHDDやSSDの健康状態を確認する方法「CrystalDiskInfo」
WindowsでHDDやSSDの健康状態を確認する方法「CrystalDiskInfo」
WindowsでHDDやSSDに搭載されている自己診断機能S.M.A.R.T.の情報を分かりやすく表示してくれるツール「CrystalDiskInfo」を紹介します。

S.M.A.R.T.情報の確認

LinuxでS.M.A.R.T.情報を確認するときは、smartctlコマンドを使った方法が一般的です。

smartctlコマンドはsmartmontoolsに含まれるツールで、LinuxだけでなくWindows向けにも提供されています。

smartmontools

smartctlのインストール

smartmontoolsは、以下のコマンドでインストールできます。

# dnf install smartmontools

smartctlの使い方

smartctlコマンドでS.M.A.R.T.情報を確認するときは、まず以下のコマンドで搭載されているHDDやSSDのデバイス名を調べます。

# smartctl --scan
/dev/sda -d ata # /dev/sda, ATA device

手っ取り早くエラーが発生していないか確認したいときは、以下のようにデバイス名を指定して実行し「No Errors Logged」と表示されていれば、おおむね健康状態に問題はありません。

# smartctl -l error /dev/sda

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

S.M.A.R.T.情報の検査項目を詳細に確認したいときは、以下のようにデバイス名を指定して実行し、出力行の「SMART Attributes Data Structure revision number: 1」欄に、以下のように検査項目ごとの値が表示されています。

# smartctl -a /dev/sda ・・・・・
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS   VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     ------  100   100   000    -    0
  5 Reallocated_Sector_Ct   ------  100   100   000    -    0
  9 Power_On_Hours          ------  100   100   000    -    5992
 12 Power_Cycle_Count       ------  100   100   000    -    4875
192 Power-Off_Retract_Count ------  100   100   000    -    76
194 Temperature_Celsius     ------  100   100   000    -    35
195 Hardware_ECC_Recovered  ------  100   100   000    -    80150
196 Reallocated_Event_Count ------  100   100   016    -    0
197 Current_Pending_Sector  ------  100   100   000    -    0
199 UDMA_CRC_Error_Count    ------  100   100   050    -    1
160 Unknown_Attribute       ------  100   100   000    -    0
161 Unknown_Attribute       ------  100   100   000    -    43
163 Unknown_Attribute       ------  100   100   000    -    2
164 Unknown_Attribute       ------  100   100   000    -    1237725
165 Unknown_Attribute       ------  100   100   000    -    1261
166 Unknown_Attribute       ------  100   100   000    -    1161
167 Unknown_Attribute       ------  100   100   000    -    1220
168 Unknown_Attribute       ------  100   100   000    -    3000
169 Unknown_Attribute       ------  100   100   000    -    62
232 Available_Reservd_Space ------  100   100   000    -    100
177 Wear_Leveling_Count     ------  100   100   050    -    3889
181 Program_Fail_Cnt_Total  ------  100   100   000    -    0
182 Erase_Fail_Count_Total  ------  100   100   000    -    0
241 Total_LBAs_Written      ------  100   100   000    -    1562273
242 Total_LBAs_Read         ------  100   100   000    -    904268
・・・・・

検査項目の中で、特に重要な項目としては以下が挙げられ、これらの項目の数値が継続的に増えている場合は故障の前兆と考えられます。

  • Raw_Read_Error_Rate:読み取りエラーの発生回数
  • Reallocated Sectors Count:代替処理されたセクタ数

また、smartctlコマンドには、S.M.A.R.T.情報を確認すだけでなく、セルフテストを実施することができ、テストモードは、short/Extend/Conveyance の3種類が用意されています。

  • Short:簡単なテスト(1~2分くらい)
  • Long:詳細なテスト。(1〜数時間)
  • Conveyance:輸送中に障害が起きやすいセクタのみのテスト(1~2分くらい)

たとえば、Shortテストを実行したいときは、以下のようにデバイスを指定して実行します。なお、テストはバックグラウンドで実行されます。

# smartctl -t short /dev/sda

セルフテストの結果は、以下のようにコマンドで確認でき「Completed without error」と表示されていれば問題ありません。

# smartctl -l selftest /dev/sda

=== 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%    2870         -

あとがき

なお、smartmontoolにはサービスとして動作させる機能(smartd)も同梱されており、サービスを起動しておくことで、S.M.A.R.T.情報を定期的に確認して、異常があった場合にメール通知させることもできます。