md デバイスを管理するツールは次の場所にあります。 http://www..kernel.org/pub/linux/utils/raid/.... 下記のカーネルコマンドで、md デバイスからブートすることができます。 永続的スーパーブロックのない、古い RAID アレイの場合: md=,,<チャンクサイズ係数>,<フォールトレベル>,dev0,dev1,...,devn 永続的スーパーブロックのある RAID アレイの場合: md=,dev0,dev1,...,devn 0 は md0 を意味します。以下、 1 は md1, 2 は md2, 3 は md3, 4 は md4 -1 はリニアモード 0 はストライプモード その他のモードは、永続的スーパーブロックがある場合のみサポートされます。 <チャンクサイズ係数> (RAID-0 と RAID-1 のみ) 4K << n でチャンクサイズとなるようにセットしてください。 <フォールトレベル> 完全に無視されます。 dev0-devn 例: /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1 loadlin のコマンドライン (Harald Hoyer ) は、次のように なるでしょう。 e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro ------------------------------- md ドライバは、多種多様な異なるスーパーブロック・フォーマットをサポート できます (まだやってはいませんが、できます)。 カーネルは、スーパーブロックでどのフォーマットが使われているかを自動検出は *しません*。教えてやる必要があります。 昔からの事情のため、スーパーブロック・フォーマット '0' は、他のものとは 異なる扱われ方をします。 一般的な規則 - 全てのスーパーブロック・フォーマットに適合 --------------------------------------------------------- アレイは、全てのデバイスに適切なスーパーブロックを書き込むことにより「作成 されます」。特定の md 仮想デバイスと、これらの各デバイスを関連付けることに より、アレイは「アセンブルされます」。完全にアセンブルされれば、アレイに アクセスすることができます。 どのアレイもユーザ空間のツールを使って作成します。ツールは全てのデバイスに スーパーブロックを書き込みます。ツールは通常、アレイを 'unclean' とマーク するか、もしくは、カーネル md ドライバが適切な冗長性を生成 (RAID-1 では コピー、RAID-4/5 ではパリティ計算) できるように幾つかのデバイスを missing とします。 アレイがアセンブルされるとき、最初に SET_ARRAY_INFO ioctl で初期化されます。 特に、これにはメジャーバージョン番号とマイナーバージョン番号が含まれます。 メジャーバージョン番号は、どのスーパーブロック・フォーマットを使用するかを 選択するものです。マイナー番号は、例えば各デバイス上のどこを探せばスーパー ブロックがあるかを示すなどといった、そのフォーマットの扱いを調整するのに 使われることがあります。 そのあと、ADD_NEW_DISK ioctl により各デバイスが追加されます。ADD_NEW_DISK は 特に、追加するデバイスを識別するメジャー番号とマイナー番号を提供します。 アレイは、RUN_ARRAY ioctl で開始します。 開始すれば、新しいデバイスを追加することができます。追加するデバイスには 適切なスーパーブロックが書き込まれている必要があり、ADD_NEW_DISK のときに 一緒に渡します。 エラーを起こしたか、または、まだアクティブにされていないデバイスは、 HOT_REMOVE_DISK でアレイから取り外すことができます。 フォーマット 0 のスーパーブロックのアレイと、スーパーブロックを 持たない (非永続的) アレイに適合する固有規則 --------------------------------------------------------------- SET_ARRAY_INFO ioctl でアレイの記述をおこなうことにより (レベル、チャンク サイズ等)、アレイは「作成されます」。これは、major_version==0 かつ、 raid_disks != 0 である必要があります。その後、初期化されていないデバイスを ADD_NEW_DISK で追加できます。ADD_NEW_DISK に渡される構造体では、デバイスの 状態とアレイにおける役割を指定する必要があります。 RUN_ARRAY で開始すれば、初期化されていないスペアを HOT_ADD_DISK で追加する ことができます。