RAID上のルートでのLinuxブート

RAIDアレイにあるルートファイルシステムでLinuxカーネルをロードするには、次のパラメーターをカーネルに渡す必要があります(Grubの動作例)。 私たちにとって重要なオプションは、パラメーターの1行目と2行目です。

title Gentoo Linux 3.0.8 Hardened

kernel (hd0,0)/linux-3.0.8-hardened/linux \

root=/dev/md0 \

md=0,/dev/sda1,/dev/sdc1 \

rootfstype=ext4 \

rootflags=nodelalloc,data=ordered,journal_checksum,barrier=1,acl,user_xattr \

panic=15 \

vga=792







パラメータ値:

1. root = / dev / md0は、ルートFSからデバイスファイルの名前を設定します。

2. md = 0、/ dev / sda1、/ dev / sdc1

このパラメーターについて詳しく説明します。 次の形式があります。

md=md_device_number,raid_level,chunk_size_factor,fault_level,dev0,dev1,...,devn









もう一つ重要な点があります。 ドキュメントには、ドライバーがスーパーブロックバージョン0.90.0およびmd-1をサポートすることが記載されています。

しかし、デフォルトでmdadmによって作成されるスーパーブロックバージョン1.2のRAID-1から起動しますが、成功しませんでした。 バージョン0.90.0でアレイを再作成する必要があり、その後ダウンロードが成功しました。 おそらく、バージョン1.1と1.2を除いて、バージョン1.0のサポートを意味していました。

mdadmスイッチ--metadata = 0.90を指定して、スーパーブロックバージョン0.90で配列を作成できます。たとえば、次のようになります。

$ mdadm --create /dev/md0 -n 2 -l 1 --metadata=0.90 /dev/sd[ac]1









アレイが既に作成されているが、スーパーブロックのバージョンが1.2の場合、上記のコマンドで新しいアレイを作成し、古いアレイから新しいアレイにデータを転送するだけで、バージョン0.90に変更できます。 つまり データバックアップ必須!

次に、その理由を説明します。 テスト配列のデータを失うことなく、スーパーブロックを1.2から0.90に置き換える可能性を特に確認しました。 今後は、そのような可能性はないと言います。 いずれにせよ、私は成功しませんでした。 あなたがこれを行う方法を知っているなら-教えてください、私は感謝します。

理論的には、ご想像のとおり、次のコマンドでスーパーブロックを消去できます。



#!!! . !!!

$ mdadm --zero-superblock /dev/sd[ac]1







ディスク同期なしで新しいアレイを作成します(--assume-clean)が、コマンドでバージョン0.90を作成します。

$ mdadm --create /dev/md0 --assume-clean -n 2 -l 1 --metadata=0.90 /dev/sd[ac]1









動作します。 アレイは作成され、パーティションテーブルは残ります(ext4を持つ1つのパーティションがアレイに作成されました)が、以前に(スーパーブロックをクリーニングする前に)作成されたファイルシステム(ext4)は、破損したスーパーブロックを誓ってマウントを拒否します。 アレイv1.2とv0.90のこのFSのスーパーブロックを比較すると、それらが異なることがわかりました。 さらに、メインスーパーブロックもバックアップスーパーブロックも保存されません(ブロック1および8193)。 だからチームも

$ mount -o sb=8193,nocheck -t ext4 /dev/md0 /mnt/test







保存しません。 つまり データについては、RAIDアレイのスーパーブロックのバージョンの変更が行われましたx ...一般に、それは悪いことです。



したがって、新しいアレイを作成し、そこにデータを転送する方が、より重要で、最も安全です。

ちなみに、同じバージョンの破損したスーパーブロック(バージョン1.2のアレイがあり、同じバージョンの破損したスーパーブロックを復元しているとしましょう)を上記の2つのコマンドで修復すると、データは正常に機能します。 --assume-cleanスイッチのおかげで、アレイの各ディスクに新しいスーパーブロックのみが作成され、データ自体には影響しません。



MDドライバーのドキュメント



All Articles