web-dev-qa-db-ja.com

3つまたは4つ(またはそれ以上)のディスクソフトウェアraid10を使用して起動可能な冗長Debianシステムを作成するにはどうすればよいですか?

起動可能で、ソフトウェアraid10があり、1つ以上の(起動可能な)ディスクを取り出しても起動するDebianシステムを作成するにはどうすればよいですか?できるだけ少ないディスク、できれば3または4を使用したいと思います。また、レイドの一部である各ディスクは起動可能である必要があります。

私はraid10を選択しています。これは、最も高速な冗長RAIDレベルであり、それでもかなりのスペースが得られるためです。 RAID5または6は遅すぎます(理論上の制限がある場合があります http://www.zdnet.com/blog/storage/why-raid-5-stops-working-in-2009/162 )そしてraid1は私に十分なスペースを与えず、柔軟性がありません。 raid0は冗長ではありません。

2
aseq

ここで奇妙なもの、つまり3つのディスクから構築されたソフトウェアraid10について説明します(知識のある人々は3つのディスクraid10を信じていないことが知られています)。 4つのドライブベイを備えた1Uサーバーがあり、ストレージディスクまたはホットスペアとして1つのベイを空けたいとします。ディスクはすべて同じサイズですが、最小サイズのディスクに従ってパーティションを作成する限り、必要ありません。

Debian CDまたはUSBスティックを貼り付けて、システムのインストールを開始します。ディスクのパーティション分割を開始する部分に到達したら、次の手順を実行します...

レイドの一部である各ディスクには、レイドの一部ではない約1GBの起動可能なパーティションが必要です。これらのパーティションは通常どおり作成します。サイズはまったく同じである必要があります。それらを起動可能としてマークします。ディスクの1つのマウントポイントは/ bootである必要があり、他のディスクはマウントされていないままにしておくことができます。

/dev/sda1 - /boot
/dev/sdb1 - not mounted
/dev/sdc1 - not mounted

通常の場所に個別のパーティションを作成したい場合(私はそうします)、これを行うことができます:

/dev/sd[abc]2 - swap  (Yes we have redundant swap, why not, it ought to be faster than swap outside the raid10)
/dev/sd[abc]3 - /
/dev/sd[abc]4 - /usr
/dev/sd[abc]5 - /tmp
/dev/sd[abc]6 - /var
/dev/sd[abc]7 - /opt
/dev/sd[abc]8 - /home

それ以外の場合は、スワップ用に1つのパーティションを作成し、各ディスクに1つの大きなパーティションを作成します。ソフトレイド(mdadm)をパーティション化することはできないため、最初にパーティションを作成することに注意してください。 (編集:カーネル2.6.28以降、他のブロックデバイスと同じようにレイドを分割することができますが、上記の方法が好きです。)

最初のパーティションを除く各パーティションからレイドを作成します。例えば:

mdadm --create /dev/md0 --level=10 --raid-devices=3 /dev/sd[abc]2

などなど。

Debianのインストールでは、mdadmコマンドの代わりに適切なメニューオプションを使用します。これは説明のためだけのものです。システムに4番目のディスクがある場合は、ホットスペア、レイドの4番目のメンバー、またはストレージとして追加します。ただし、後者を行わない限り、他のディスクと同じパーティションテーブルと起動可能なプロパティを共有していることを確認してください。それはあなたにお任せします。

ちなみに、インストールメニューはパーティションとレイドの作成に関して少し混乱する可能性があります。迷子になったり、メニューシステムが罵倒され始めたりした場合は、最初からやり直してください。 :-)

いつものようにDebianをインストールするだけです。 grubのインストール段階に到達したら、通常よりも少し多くのことを行う必要があります。

/ dev/sda1が/ bootにマウントされていると仮定します。 MBRが/ dev/sda、/ dev/sdb、および/ dev/sdcの両方に保存されていることを確認してください。したがって、3つのディスクすべてがブートディスクであることをgrubに伝えます。

システム全体がインストールされると、システムを起動できるようになり、3ディスクraid10上で起動可能なDebianシステムが機能するようになります。ただし、ディスクに障害が発生した場合に備えて、まだ完全に冗長化されていません。つまり、別のディスクから魔法のように起動することはありません。これを実現するには、/ dev/sda1のブートパーティションを他のディスクに正確にコピーする必要があります。

そのためにddを使用します(bs = 500Mはddを大幅に高速化し、500Mをシステムのメモリの約2/3に調整します):

dd bs=500M if=/dev/sda1 of=/dev/sdb1
dd bs=500M if=/dev/sda1 of=/dev/sdc1

次に、BIOSが3つのディスクすべてから起動するように構成されていることを確認します。順序は関係ありません。 BIOSが任意のディスクから起動しようとする限り、ディスクの1つに障害が発生した場合、UUIDはまったく同じであるため、システムは他のディスクから自動的に起動します。

小さな問題があります。カーネルのアップグレードなど、/ bootが変更された場合は、ddコマンドを繰り返すことを忘れないでください。必要に応じて、毎週のcronジョブにします。

これは常に楽しいです。BIOSの起動優先度を変更して冗長システムをテストしてください。そして、運が良ければ、実行中に1つのディスクをヤンクアウトしてテストしてください。 :-)実際、それが完全に冗長であることを絶対に確認するためにそれをしなければならないと思います、なぜ他に問題を経験するのですか?とはいえ、それは楽しい運動です。すべてを正しく行った場合(そして私が正しく書き留めた場合)、レイドが低下してもシステムは起動します。ハードウェアRAIDを使用する場合と同じように。 2、3、4、およびそれ以上のディスクを備えたさまざまな1Uおよび2Uサーバーでテストしました。

これはraid1でも機能します。

ちなみに、レイドの一部ではないブートパーティションを使用する必要があります。そうしないと、システムが起動できません。レイドを開始する方法が必要です。これはソフトレイドであるため、レイドが認識されるためには、最初にカーネルをロードする必要があります。

6
aseq

返信が遅れましたが、私がしばらくやっていたことをしてくれませんでしたか?

ほとんどのサーバーで2ドライブRAID1インストールを使用しています。

それらの設定方法は、md0が/ bootとしてマウントされ、約250MBのraid1であるのに対し、md1は/としてマウントされ、各ドライブのスワップ領域を除いたドライブの残りの容量です。

このように、/ bootへの変更は、起動時にBIOSが指示したものを使用する場合でも、両方のドライブに応じてミラーリングされます。

ドライブごとにgrub-install/dev/sd *を再実行して、有効な/ bootを含めることを忘れないでください。 OSは自動的に/ bootを相互に適切に同期させます。

2
OdinYggd