grubでbootできなくなった2048 sector以内のディスク障害
1.概要
去年のことですが、500GBのディスクがクラッシュのメッセージを出力して、grubによるブートができなくなりました。しかし、不思議なことにfsckを実行するとエラーなし、各パーティション内のファイルも参照できます。パーティションテーブルを再構築して、再度試しても状況は同じになります。2.詳細
障害を解析した訳ではないので、詳細に関しては不明瞭な点が多数あります。grubを利用したbootだけがだめになってしまたディスクのようです。別の代替ディスクに交換して、環境を再構築すると問題はなくなりました。つまり、ディスクはクラッシュしていたと言うことですが、gparted, fsck, fdisk, mkfsでエラーにならない故障でした。
fdiskでディスクを調べていて、2048セクター以前の領域はユーザ側で利用できないことに気が付きました。0〜2047セクターなので、2048 * 512 = 1MBの領域です。ここには、パーティションテーブル以外にもbootに必要な情報が保管されていると認識しています。
私の環境はmsdosパーティションテーブルを利用しているので、MBRが存在します。今回の故障はMBRは無事ですが、2047セクター内のmsdosパーティションテーブル以降の場所でクラッシュが起きたようです。ユーザーが普通利用する領域は無事なので、fsckではディスクに問題はなく、データディスクとしては使えるようです。
このディスクは分解して廃棄しました。しかし、こんな故障の仕方もあるんだと思ったので、ブログの記事にしました。今回記事を見直して、備忘録として残すことにしました。
3.所見
ディスクでエラーが発生した場合、代替シリンダを利用してエラーが発生した領域を正常な領域と入替えて利用する仕組みがありました。代替シリンダを利用する方法は物理的な初期化が必要と聞いたことがありますが、具体的な方法は良くわかっていません。
ディスクが容量が少ない上、高価なときには、クラッシュが発生している領域を利用しないパーティションをダミーで作成して、利用することもありました。今では、やらない手段となっています。
最近はSSDに変わっていますが、私の経験ではSSDで1箇所でも物理的な問題が発生すると問題領域を利用不可にする仕組みは使えません。ディスクとSSDではストレージ領域の使われ方が大きく異なっているようです。
参考
[本ブログ内参照]・LinuxMintでStorageデバイスの内容を完全消去する方法
[外部サイト参照]
・Why does the partition start on sector 2048 instead of 63?
コメント
コメントを投稿