パソコンやサーバーに搭載されている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
S.M.A.R.T.情報の確認
LinuxでS.M.A.R.T.情報を確認するときは、smartctlコマンドを使った方法が一般的です。
smartctlコマンドはsmartmontoolsに含まれるツールで、LinuxだけでなくWindows向けにも提供されています。
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.情報を定期的に確認して、異常があった場合にメール通知させることもできます。