grubでbootできなくなった2048 sector以内のディスク障害

1.概要

去年のことですが、500GBのディスクがクラッシュのメッセージを出力して、grubによるブートができなくなりました。しかし、不思議なことにfsckを実行するとエラーなし、各パーティション内のファイルも参照できます。パーティションテーブルを再構築して、再度試しても状況は同じになります。

ディスクのクラッシュは何度も経験し、PCから取り外してUSB接続で確認する機器を利用して検査をしています。クラッシュした場合は異音がするのですぐにわかります。異音がない場合でもディスクを認識できなくなり、異常なことに気が付きます。

今回のケースは異音もなく、ディスクも正常に認識され、fsckの実行やgpartedによる初期化も問題ないのですが、OSを再導入してGrubブートを実行するとエラーになり止まってしまいます。この内容に関して記述します。

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?

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )