ストレージ(HDDやSSDなど)は、OSやアプリだけでなく、ユーザーが作成したデータの保存にも使用される。
常にデータの読み書きが行われるため、ストレージには寿命がある(自分は消耗品と考えている)。
しかし、個体差がかなりあるため、いつ故障するのかは予測がつきにくい。
SMARTとは、大半のストレージが持っている自己診断機能。
SMARTから得られる情報を見ることで、ストレージの障害を早期に発見することが出来る。
ただし、健康なストレージでも突然死する可能性はあるため、あくまで目安と考えた方が良い。
SMARTの情報はストレージのメーカーや機種によって仕様が異なる。
また、USB接続で外付けしているストレージの場合、製品に使われているチップ(コントローラー)にも依存する。
結果的に、SMART情報はOS標準では読み取れなくて、対応するソフトを使用する必要がある。
Windowsの場合、「CrystalDiskInfo」というソフトが有名だが、Linuxでは使えない。
以降では、LinuxでSMART情報を表示する方法を記載する。
なお、これ以降はストレージのことをディスクと呼ぶ(物理的な製品自体をストレージと呼び、ソフトウェア上ではドライブやディスクと呼ぶことが多い)。
ソフトのインストール
# Debian系 sudo apt install smartmontools # RedHat系 sudo dnf install smartmontools
各種情報の表示
# ディスクの一覧を表示 sudo smartctl --scan # SMARTの対応状況やディスクの情報を表示 sudo smartctl -i /dev/sda # 全てのSMART情報を表示 sudo smartctl -a /dev/sda
SMART情報の表示例(抜粋)
SMART情報はメーカーや機種によって表示される項目が異なる。
確認する個所は以下の通り。
| VALUE | 現在の値。常に変動する数値。 |
| WORST | 最悪値。過去に計測した最も悪い時の数値。 |
| THRESH | 異常の有無を判断する閾値。 メーカーが定める値だが、設定されてない場合もある。 |
| TYPE | 項目の種類。 Pre-fail:ディスクが故障する可能性を示す項目 Old_age:ディスクの設計上の寿命を示す項目 |
| WHEN_FAILED | 現在の値(VALUE)が閾値(THRESH)を超えているか否か。 「-」なら問題なし。 ただし、閾値が設定されてない場合、自分で値の増減を定期的に監視する必要がある。 |
| RAW_VALUE | SMART情報のリアルタイムのデータ。 |
ID# ATTRIBUTE_NAME VALUE WORST THRESH TYPE UPDATED WHEN_ RAW_
FAILED VALUE
1 Raw_Read_Error_Rate 100 100 000 Pre-fail Always - 0
5 Reallocated_Sector_Ct 100 100 000 Pre-fail Always - 0
9 Power_On_Hours 100 100 000 Old_age Always - 6737
12 Power_Cycle_Count 100 100 000 Old_age Always - 965
170 Grown_Failing_Block_Ct 100 100 000 Pre-fail Always - 4395
171 Program_Fail_Count 100 100 000 Old_age Always - 0
172 Erase_Fail_Count 100 100 000 Old_age Always - 0
173 Wear_Leveling_Count 098 098 000 Pre-fail Always - 131
174 Unexpect_Power_Loss_Ct 100 100 000 Old_age Always - 3
183 SATA_Iface_Downshift 100 100 000 Old_age Always - 0
184 End-to-End_Error 100 100 000 Pre-fail Always - 0
187 Reported_Uncorrect 100 100 000 Old_age Always - 0
188 Command_Timeout 100 100 000 Old_age Always - 0
189 Factory_Bad_Block_Ct 100 100 000 Old_age Always - 177
195 Hardware_ECC_Recovered 100 100 000 Old_age Always - 0
196 Reallocated_Event_Count 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 100 100 000 Old_age Always - 0
202 Percent_Lifetime_Used 098 098 000 Old_age Offline - 2
206 Write_Error_Rate 100 100 000 Old_age Always - 0
ディスクの自己診断テスト
自己診断テストには、以下のようなものがある。
short 簡易的な自己診断
long または Extended 詳細な自己診断
Conveyance ディスク輸送中に受ける可能性があるダメージの有無を確認
メーカーや機種によってテストの対応有無や所要時間は変わる。
short や Conveyance は10分以内に終わることが多いが、long または Extended は数時間かかることもある。
# ディスクが対応しているテストの種類と所要時間を表示 sudo smartctl -c /dev/sda # 自己診断テストを実行 # 自己診断はバックグラウンドで行われるため、実行時に表示される # 終了予定時間(Test will complete after ~の部分)まで # 待ってから、テスト結果の確認を行う sudo smartctl -t short /dev/sda sudo smartctl -t long /dev/sda sudo smartctl -t conveyance /dev/sda # 実行中の自己診断テストをキャンセル sudo smartctl -X /dev/sda # 自己診断テストの結果を表示 # 過去の結果も表示され、最新の結果は一番上に表示される sudo smartctl -l selftest /dev/sda
