結論:異常を感じたら検査より先にバックアップする
I/Oエラー、読み込み停止、異音、ファイル破損などが起きている場合、繰り返し検査する前に重要データを別媒体へ退避します。セルフテストはドライブへアクセスするため、故障が進んだ装置へ追加負荷を与える可能性があります。
- 対象ディスクを正確に特定する
- 健康情報とOSログを保存する
- 重要データをバックアップする
- 必要な場合だけ短時間テストを行う
- 異常の継続や増加を見て交換を判断する
対象ディスクを特定する
lsblk -d -o NAME,MODEL,SERIAL,SIZE,ROTA,TRAN
findmnt --target /var/lib/docker
ROTA=1は一般に回転媒体、ROTA=0はSSDなどの非回転媒体を示します。USBケース経由ではモデルやSMART情報が正しく取得できない場合があります。デバイス名は再接続で変わり得るため、モデルとシリアルを併記します。
検査ツールを用意する
# Debian・Ubuntu系
sudo apt install smartmontools nvme-cli
# Fedora・RHEL系
sudo dnf install smartmontools nvme-cli
実際のパッケージ名や利用可能なバージョンはディストリビューションで確認してください。
smartctl -aと-xの違い:SATA SSD・HDDを確認する
対象を確認したら、まず-aで機種情報、総合判定、SMART属性やログを表示します。/dev/sdaは例です。パーティションの/dev/sda1ではなく、確認したい物理ドライブを指定してください。
# SMART情報の確認(セルフテストを新しく開始する操作ではない)
sudo smartctl -a /dev/sda
# 対応する拡張ログなども含めて、より広く確認
sudo smartctl -x /dev/sda
ATAでは-aに総合判定、属性、エラーログ、セルフテスト履歴などが含まれます。-xは対応する追加情報も取得するため、詳しく調べるときの候補です。どちらも読み取り中心の情報取得ですが、休止中のHDDが起動する場合があります。表示項目はドライブと接続方式によって異なります。
| 確認項目 | 見方 |
|---|---|
| 総合ヘルス判定 | 失敗なら直ちにバックアップ。合格でも故障を否定しない |
| Reallocated / Pending / Uncorrectable | HDDでは増加傾向と読み取りエラーを重視する |
| 温度 | 一時値だけでなく負荷時の推移とメーカー仕様を確認する |
| Power_On_Hours | 使用期間を把握する参考。寿命を単独で決める値ではない |
| Self-test log | 過去のテスト失敗と該当位置を確認する |
smartctl -aの出力例と列の読み方
次は説明用に作成したSATA HDDの出力例です。実機の測定結果ではありません。項目名や数値はメーカー・機種で異なるため、この例と同じかどうかだけで判断しないでください。
SMART overall-health self-assessment test result: PASSED
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 4200
194 Temperature_Celsius 0x0022 065 050 000 Old_age Always - 35
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
| 列・表示 | 読み方 |
|---|---|
VALUE | ドライブが算出した現在の正規化値。RAW_VALUEそのものでも、健康度の百分率でもない |
WORST | ドライブが記録した正規化値の最悪値。扱いにメーカー差がある |
THRESH | メーカーが設定したしきい値。対応する属性でVALUEがしきい値以下になると問題として報告される |
WHEN_FAILED | FAILING_NOWは現在、In_the_pastは過去のしきい値到達を示す。-でも故障を否定するものではない |
RAW_VALUE | メーカー固有の生データ。回数・時間・温度などの場合があるが、単位と符号化は機種仕様で確認する |
Pre-fail/Old_age | 属性の分類。Pre-failと表示されるだけで故障寸前という意味にはならない |
この例では代替処理済み・処理待ち・回復不能の各項目が0ですが、それだけで安全とは言い切れません。HDDでは値の増加と読み取りエラーの有無を追います。SSDの属性番号やRAW_VALUEへHDDの解釈をそのまま当てはめず、メーカー情報も確認します。
PASSEDなのにエラーがある場合
PASSEDは総合判定であり、全セクターの読み取りや将来の故障を保証する表示ではありません。属性、セルフテスト履歴、OSのI/Oエラーを併せて確認します。履歴が空でも、一度もテストしていない場合があるため、テスト成功とは区別してください。
結果を保存して変化を見る
同じドライブの前回記録と比較できるよう、日時付きファイルへ保存します。以下はBashの例です。機種・シリアルで同一ドライブと確認し、共有するときはシリアルなどを伏せます。
smart_report="smart-sda-$(date +%Y%m%d-%H%M%S).txt"
sudo smartctl -a /dev/sda > "$smart_report" 2>&1
smart_status=$?
printf 'smartctl exit status: %s\n' "$smart_status"
cat "$smart_report"
smartctlの終了ステータスはビットマスクです。0以外は、デバイスを開けない、SMARTコマンドが失敗した、健康状態や履歴に問題がある、などの複数の意味を持ちます。終了値だけで「故障」と決めず、保存した出力と公式マニュアルのEXIT STATUSを確認します。
セルフテストを実行する
バックアップと対象確認が済み、ドライブがテストをサポートしている場合に実行します。
sudo smartctl -t short /dev/sda
sudo smartctl -l selftest /dev/sda
開始コマンドには完了までの目安が表示されます。直後ではなく、指定時間後にログを確認します。長時間テストは稼働時間とI/O負荷を考慮して計画します。
NVMe SSDをsmartctl・nvme-cliで確認する
smartctlはNVMeにも対応しています。対象を確認してから実行します。次の2行はコントローラーと名前空間を指定する例で、両方を実行する必要はありません。対応するデバイスとドライバーでは、どちらの指定でも健康情報を取得できます。情報の対象範囲は機種の対応状況によります。
sudo smartctl -a /dev/nvme0
sudo smartctl -a /dev/nvme0n1
/dev/nvme0n1は名前空間で、パーティションの/dev/nvme0n1p1とは異なります。NVMeの出力には、SATA HDDの属性表と同じ列は通常ありません。
次は説明用に作成したNVMe出力の抜粋です。実機の測定結果ではありません。
Critical Warning: 0x00
Temperature: 39 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 3%
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Critical Warning: 0x00は、この警告フィールドにビットが立っていない状態です。Percentage Used: 3%はメーカー推定による耐久性消費の目安で、厳密な残り寿命の百分率ではありません。温度、エラー履歴、OSログと合わせて見ます。
nvme-cliで確認する場合は、次のように対象を一覧して健康情報を表示します。
sudo nvme list
sudo nvme smart-log /dev/nvme0
| 項目 | 確認内容 |
|---|---|
| critical_warning | 温度、予備領域、信頼性などに関する警告ビット |
| percentage_used | メーカー推定による耐久性消費の目安。100未満でも故障は起こり得る |
| available_spare | 利用可能な予備領域としきい値 |
| media_errors | 回復不能なデータ整合性エラー |
| num_err_log_entries | エラーログ件数。内容と増加状況を追加確認する |
| unsafe_shutdowns | 正常なシャットダウン手順を経なかった回数 |
NVM Expressはpercentage_usedを耐久性確認の重要な属性として説明しています。ただし、値の解釈と保証条件は製品仕様も確認します。
OS側のI/Oエラーも確認する
sudo journalctl -k -b | grep -Ei 'I/O error|nvme|ata|reset|timeout'
dmesg --level=err,warn
ケーブル、電源、USB変換、コントローラー、ドライバーなど、媒体以外が原因の場合もあります。タイムアウトやリセットの発生時刻とSMART情報を一緒に記録します。
SMARTとfsckの違い
SMARTは物理ドライブが報告する状態、fsckはファイルシステムの論理的な整合性を確認します。目的が異なります。
fsckを実行してはいけません。対象形式の公式手順を確認し、バックアップ、アンマウント、レスキュー環境を準備します。ext4とXFSで異なる具体的な手順は、fsck・e2fsck・xfs_repairによるファイルシステム検査で解説しています。
交換を検討する条件
- SMARTの重大警告や総合判定失敗がある
- 回復不能エラーや代替処理待ちセクターが増えている
- OSログでI/Oエラーやリセットが繰り返される
- セルフテストが同じ位置または複数位置で失敗する
- 業務上必要な信頼性を満たせず、保証や予防交換の条件に該当する