🐧 Linux 総合学習プラットフォーム
ストレージ/ファイルシステム ・ 中級

ディスクの健康診断と修復(smartctl・fsck)

ディスクにも人間ドックのような自己診断があり、それがS.M.A.R.T.です。smartctlコマンドで代替セクタ数や残り寿命の兆候を読み取れます。一方fsckは、ファイルシステムそのものの整合性を検査し壊れを直す道具です。ここでは日頃の健康チェックの見方と、壊れたときの直し方、そして「直すより買い替えが正解」な場面の見極め方まで扱います。

パソコンやサーバーが急に不安定になったとき、真っ先に疑うべき場所の一つがディスクだ。ディスクにも人間ドックのような自己診断機能があり、それがS.M.A.R.T.(スマート)と呼ばれる仕組みになる。

S.M.A.R.T.は、ディスク自身が内部で記録している健康状態の指標だ。これを読み取るためのコマンドがsmartctlになる。壊れる前の「兆候」をつかめるのが最大の価値だ。

💡
ポイントディスクの故障は前触れなく起きることもあるが、多くの場合はS.M.A.R.T.の数値にじわじわと悪化の兆しが現れる。定期的に見ておくことで、致命的なデータ喪失の前に手を打てる。
🔗
たとえS.M.A.R.T.は、ディスクの人間ドックの結果表のようなものだ。血液検査の数値がじわじわ悪化するように、代替セクタの数がじわじわ増えていく様子から、大病(故障)の予兆を読み取れる。

🩺 smartctlで健康状態を見る

現在の健康状態の全体像を見るには smartctl -a を使う。-a はallの略で、対応している全項目をまとめて表示させる指定だ。

$ sudo smartctl -a /dev/sda === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED ID# ATTRIBUTE_NAME VALUE WORST THRESH RAW_VALUE 5 Reallocated_Sector_Ct 100 100 036 0 9 Power_On_Hours 100 100 000 8142 197 Current_Pending_Sector 100 100 000 0

一番上の overall-health self-assessment test result が PASSED であれば、ディスクは自己診断上は正常と判断している状態だ。ここがFAILEDになっていたら、それだけで即座に対応を検討すべきサインになる。

🔍 見るべき項目はここ

全項目を細かく覚える必要はない。まず注目すべきは代替セクタ系の2つの項目だ。

Reallocated_Sector_Ct(代替処理済みセクタ数)は、読み書きに失敗して既に別の場所へ肩代わりさせたセクタの数を表す。Current_Pending_Sector(保留中の不良セクタ数)は、読み込みに失敗していて今後代替されるかもしれない候補の数だ。

つまずきこの2つのRAW_VALUEが0より大きい状態が続いていたり、じわじわ増え続けていたりする場合は要注意のサインだ。0のうちは静観してよいが、増加傾向が見えたらバックアップの頻度を上げるなど早めの備えをしておきたい。

Power_On_Hours(累計稼働時間)も併せて見ておくとよい。ディスクにも寿命の目安があるため、稼働時間が長いディスクほど、他の項目の変化にも敏感になっておく価値がある。

overall-health: PASSED自己診断の総合結果Reallocated_Sector_Ct代替済みセクタ数増加傾向なら要注意Current_Pending_Sector保留中の不良セクタ数0以外が続くなら要注意

より踏み込んで調べたいときは、smartctl -t short でディスクに短時間の自己テストを実行させることもできる。数分後に結果がログへ記録され、-a で改めて確認できる。

$ sudo smartctl -t short /dev/sda Short self-test has begun. Please wait 2 minutes for test to complete.

🩹 fsckでファイルシステムを修復する

smartctlが見るのは「ディスクという物理装置」の健康状態だった。一方fsck(file system checkの略)が見るのは、その上に載っているファイルシステムの整合性だ。

突然の電源断や異常終了の後、ファイルシステム内部の管理情報(どのブロックがどのファイルに属しているか等)に矛盾が生じることがある。fsckはこの矛盾を検査し、可能な範囲で修復してくれる。

$ sudo fsck /dev/sdb1 fsck from util-linux 2.38 e2fsck 1.46.5 (30-Dec-2021) /dev/sdb1: clean, 128331/655360 files, 2199831/2621440 blocks

clean と表示されれば矛盾は見つからなかったということだ。矛盾が見つかった場合は、修復してよいかを1件ずつ尋ねられることが多く、-y を付けるとすべて自動でyesとして進められる。

🚫 鉄則: マウント中のディスクにfsckをかけない

fsckを使ううえで絶対に守るべき鉄則が一つある。検査・修復の対象にするディスクは、事前にumountでアンマウントしておくということだ。

マウントされたまま、つまりOSが読み書きし続けている最中のファイルシステムにfsckをかけると、fsckが見ている情報とOSが今まさに書き換えている情報が食い違い、かえってデータを壊しかねない。

つまずきどうしてもルートファイルシステムのようにアンマウントできない場合は、専用の起動メディアから起動してオフラインの状態で検査するか、次回起動時に自動でfsckを走らせる仕組みを使う。稼働中に無理やり実行するのは避ける。
マウント中umount 実行アンマウント済みfsck 実行OK安全に修復

🔄 交換が正解な場面を見極める

smartctlで代替セクタが増え続けている、fsckをかけても同じ場所のエラーが繰り返し検出される。こういうサインが出始めたディスクに対しては、延命よりも交換を選ぶのが実務での正解になることが多い。

💡
ポイント一度物理的に劣化し始めたディスクは、修復してもまた同じ箇所や別の箇所でエラーが再発しやすい。データを守る責任を負っている以上、「まだ動いているから」で使い続けるより、早めに新しいディスクへ移行する判断の方が結果的に安く済む。
🔗
たとえこれは寿命の近いタイヤを騙し騙し使い続けるようなものだ。パンクを直しても別の場所からまた空気が漏れ始める。早めに履き替える方が、走行中のトラブルを避けられる。

S.M.A.R.T.で日頃から兆候をつかみ、fsckで整合性を保ちつつ、危ないサインが続くディスクは潔く交換する。この3つの組み合わせが、実務でデータを守るための基本姿勢になる。

この項目に出てくる用語

S.M.A.R.T.すまーと
ディスクが内部で記録している自己診断機能。故障の兆候を数値で読み取れる。
不良セクタふりょうせくた
読み書きに失敗するようになったディスク上の記録単位。

関連コマンド

smartctlfsck

▶ 学習アプリでこの続きを学ぶ・演習する