4つのパーティション(sda2、sdb2、sdc2、sdd2)で構成される/ boot用のRAID1md0があります。 2TB HDDでGPTを使用しているので、各ディスクの最初のパーティション(sda1、...)は1メガバイトのbios_grubパーティションです。
また、LVM用のRAID10 md1(/を含む)とスワップ用のRAID0 md2もあり、どちらも4つのドライブすべてのパーティションから構築されています。
mdadm永続スーパーブロックのバージョンは0.9です。
Grubは、4つのドライブすべて(hd0、hd1、hd2、hd3)にgrub-install --modules="mdraid lvm" '(hd0)'
のようなものでインストールされました。
問題。
再起動すると、grub2は「エラー:そのようなディスクはありません」で失敗し、「grubrescue>」プロンプトが表示されます。 ls
コマンドは、4つのディスクとそのパーティションのみを表示しますが、_md*
_デバイスは表示しません。 _insmod normal
_を再試行すると、「エラー:そのようなディスクはありません。」が表示されます。 'root'と 'prefix'を調べると、 '(md0)/ grub'のようなものが表示されます。これは正しいです。 set prefix=(hd0,2)/grub
を実行してから_insmod normal
_を実行すると、正常に起動できます。
質問です。
Grub2がmd0を認識しないのはなぜですか?
これまでのところ、私が見ることができる唯一の解決策は、ハードコードされた作業プレフィックス(grub-mkimage --prefix = '(hd0,2)/ grub')を使用してgrubイメージを手動でビルドし、grub-setupを使用してそれぞれにイメージを書き込むことです。ディスク。ただし、このソリューションは醜く、エラーが発生しやすくなります(エラーを回避するには、grub-installがこれら2つのコマンドを呼び出す方法を調査する必要があります)。より良い解決策をいただければ幸いです。 (注:これはリモートサーバーであるため、実際には「再起動デバッグ」を実行できません。)
RAIDは、依然としてブートローダーIMHOの灰色の領域の1つです。
最近RAID1システムを構築し、数時間後にLILO/GRUB/GRUB2を取得してレイドを検出しようとした後、あきらめて、検出された最初のHDDの最初のパーティションを使用するように指示し、HDDに次の障害が発生した場合に確認しました。 HDDはすでに正しいMBR /ブートローダーなどと並んでいました...
つまり、起動し、カーネルを取得して最初のHDDからinitfsを実行し(RAIDなし)、カーネルを起動して、すべてのRAIDをカーネルに任せます。 GRUB/LILOはドライブに物理的に書き込みを行わないため、ドライブに損傷を与えることはありません。
基本的に、ブートローダーの段階ではRAIDをすべて無視しました。
grubが最初に行う場合でも、カーネルはRAIDアレイを再アセンブルする必要があります。起動中にドライブに障害が発生しない限り、RAID1システムでgrubがraidを認識する必要がある本当の理由はありません。
P.S. SWAPをraid0する必要はありません。この機能はすでにカーネルに含まれています。 FSTABで両方のスワップデバイスの優先度を1に設定するだけです
/dev/sda2 none swap sw,pri=1 0 0
/dev/sdb2 none swap sw,pri=1 0 0
ect....
また、通常の操作中に1つのスワップドライブに障害が発生した場合、システムに障害が発生する可能性が非常に高くなります。 (上記のようにfstabからではなく、raid1スワップを実行できます)