2012/12/12

古いハードディスクの不調とゼロフィル

ハードディスクが壊れた様子だったので Ubuntu 12.04 の LiveUSB を作りパソコンを起動して、そこからスマート情報を確認すると、次のようになっていました。



このディスクの場合は、15項目ありました。

SMART情報の読み方はよく分からないのですが、正規化値(比較用に加工した値のようです)を見ると良くない(と思われる)ものが4点ありました。
  1. 001:Read Error Rate:57
  2. 007:Seek Error Rate:76
  3. 009:Power-On Hours:70(3.0年)
  4. 195:Hardware ECC Recovered:57
また、「197:Current Pending Sector Count」の値(生値:加工前のデータ)は「39」セクタとなっていて、全体が「赤字」で強調されていました。評価は「警告」となっていますので、「この値が問題なんだろな」ということが私にもわかります。

そして、あまり目立たないんですが、「198:Uncorrectable Sector Count」の値も「39」セクタとなっています。説明には「セクタの読み書きの際に発生した回復不可能なエラーの総数。この値が上昇した場合、ディスクの表面や機械的な部分、もしくはその両方に不具合が発生していることを表しています。」とあります。

「回復不可能なエラー」とあったんですが、次の方法で回復出来ました。

$ sudo dd if=/dev/zero of=/dev/sda bs=4096

「回復不可能なエラー」の主語は、「ハードディスクのコントローラーが」ということのようです。ddコマンドを使ったディスク全体(と言ってもユーザに解放された領域に限るわけですが・・・)をゼロで埋める作業(ゼロフィルというらしいです)で回復したので「不可能」とは限定的な意味だったようです。


「198:Uncorrectable Sector Count」、「197:Current Pending Sector Count」、それぞれの値は「0」となりました。「005:Reallocated Sector Count」の値は「0」のままなので、代替処理されずに回復することができたようです。

セルフテストも失敗することはなくなりました。

この後、OSのインストールを行い、数日経過しましたが、不都合なく使えています。

振り返ると、今回の不具合はディスク表面の問題だったようです。割と古いディスク(7年もの)なので、経年劣化で Seek Error や Read Error の評価が低めなんだと思います。ただ、このディスクのSMART情報を確認したのは今回が初めてだったので、初期状態も経過も不明です。

今回のケースでは、SMART情報が役立ちました。私は有益な情報だと思いましたけど、普段から確認する習慣があれば状況を把握しやすかったのではないか、という反省もあります。

無駄に終わった作業:

パソコンが起動しないと結構あわててしまうようです。

LiveCD で起動できることを確認できたので、ハードディスクに問題があることはすぐに分かったのですが、いきなりOSの再インストールをはじめてしまいました。

古いパソコンなので、インストール中にエラーメッセージが表示されたことから CD-ROM Drive にも不具合があるかもしれないと思い、別のパソコンで LiveUSB を作ってインストールを何度か繰り返しもしました。

fsckコマンドで、「ファイルシステムの検査と修復」も試しましたけど、不良セクタの数字が変わるだけで状況は変わりませんでした。

そして、ゼロフィルで復旧出来たわけですが、ここでも試行錯誤がありました。

最初に、

$ sudo dd if=/dev/zero of=/dev/sda

としてddコマンドを実行したのですが、「書き込めません」とメッセージがでて途中で停止します。

何度が繰り返しましたが、初回を除き毎回同じセクタ位置で停止します。

ところが、

$ sudo dd if=/dev/zero of=/dev/sda bs=4096

とオプションでブロックサイズを変更したところ、1度でパスしました。

最初のddコマンドで不良セクタが1つ回復した感触があったので、いろいろと試す気持ちになったのですが、512バイトを4Kバイトに変えただけですんなりとパスできたことが不思議でしかたありません。

この後、ブロックサイズを512バイトに戻してゼロフィルを試してみると、今度はパスしました。すっかり不良セクタは回復しているようでした。

オプションの変更が効果的だったのか、たまたまなのか、私にはわからないですが、このディスクの不調には「ゼロフィルが効果的」だったことはわかりました。

SMART情報を正しく読み取れれば、余計なことをせずに復旧できたのではないかと思います。