結論:異常を感じたら検査より先にバックアップする

I/Oエラー、読み込み停止、異音、ファイル破損などが起きている場合、繰り返し検査する前に重要データを別媒体へ退避します。セルフテストはドライブへアクセスするため、故障が進んだ装置へ追加負荷を与える可能性があります。

  1. 対象ディスクを正確に特定する
  2. 健康情報とOSログを保存する
  3. 重要データをバックアップする
  4. 必要な場合だけ短時間テストを行う
  5. 異常の継続や増加を見て交換を判断する

対象ディスクを特定する

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

実際のパッケージ名や利用可能なバージョンはディストリビューションで確認してください。

SATA SSD・HDDをsmartctlで確認する

sudo smartctl -x /dev/sda

-xは利用可能なSMART情報、属性、エラー、セルフテスト履歴などを広く表示します。メーカーや接続方式によって項目名と意味が異なるため、単一のRAW_VALUEだけで交換可否を断定しません。

確認項目見方
総合ヘルス判定失敗なら直ちにバックアップ。合格でも故障を否定しない
Reallocated / Pending / UncorrectableHDDでは増加傾向と読み取りエラーを重視する
温度一時値だけでなく負荷時の推移とメーカー仕様を確認する
Power_On_Hours使用期間を把握する参考。寿命を単独で決める値ではない
Self-test log過去のテスト失敗と該当位置を確認する

セルフテストを実行する

バックアップと対象確認が済み、ドライブがテストをサポートしている場合に実行します。

sudo smartctl -t short /dev/sda
sudo smartctl -l selftest /dev/sda

開始コマンドには完了までの目安が表示されます。直後ではなく、指定時間後にログを確認します。長時間テストは稼働時間とI/O負荷を考慮して計画します。

NVMe SSDを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によるファイルシステム検査で解説しています。

交換を検討する条件

交換時は接続規格、フォームファクター、容量、耐久性を確認します。判断基準はLinux用SSDの選び方にまとめています。

参考資料

著者について

intrajp。Linux、クラウドインフラ、Kubernetesなどの技術情報を発信しています。この記事は、健康情報を一つの数値で断定せず、バックアップを優先する手順としてまとめました。

運営者情報と記事の方針を見る