web-dev-qa-db-ja.com

mdadm:RAID0アレイの奇妙さの増大

RackspaceのCloudBlockStorageをデバイスとして使用して、3つのRackspaceCloudServerでmdadmを使用して3つのRAID0アレイを作成しました。各アレイには、独自のCBSボリュームのセットがあります。 RS-CBSのドライブの上限は1TBであり、より大きなストレージが必要でした。サーバーの1つはデータストレージ用で、2つ目はそのサーバーのライブミラー、3つ目は夜間のスナップショットです。このコマンドを使用して、各サーバーにアレイを作成しました。

mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/xvdb1 /dev/xvdd1 /dev/xvde1

アレイを拡張するときが来て、これが初めての拡張であったため、最も重要度の低いサーバーであるスナップショットサーバーから始めました。新しいボリュームを追加し、少し手を加えて、次のコマンドを思い付きました。

mdadm --grow /dev/md0 --raid-devices=4 --add /dev/xvdf1

Mdadmのマニュアルページによると、RAID0を拡張できないとのことなので、mdadmはそれをRAID4に変換し、拡張してから、元に戻します。 (元に戻すことはありませんが、それは別の問題です)。配列の形状は変わりますが、サイズは変わりません。私の想定では、新しいドライブがアレイのパリティドライブになりました。必要なスペースを確保するために、別のボリュームを追加しました。

mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdg1

これにより、形状が変更され、期待していた500 GBが追加されたので、resize2fs /dev/md0を実行して、問題ありません。 2TBのスペース。

だから、これは奇妙さが起こる場所です。ミラーサーバーでアレイを拡張するように切り替えます。前の手順から、必要なスペースを確保するために2つのボリュームを追加する必要があることがわかっているので、次のコマンドを使用します。

mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdf1 /dev/xvdg1

形が変わり、見た目は問題ありませんが、resize2fs /dev/md0の後にdf -halを実行すると、拡張され、予想していた2.0TBではなく2.5TBのスペースが報告されていることがわかります。これは、最初の実行から作成したと想定し、アレイに使用可能なすべてのスペースを使用したパリティドライブを作成しなかったかのようです。

異なって見えたのは、ミラーサーバーでの形状変更後のmdadm -D /dev/md0の出力でした。私はこれをRAIDデバイスで見ました:

    Number   Major   Minor   RaidDevice State
   0     202       17        0      active sync   /dev/xvdb1
   1     202       49        1      active sync   /dev/xvdd1
   2     202       65        2      active sync   /dev/xvde1
   5     202       97        3      active sync   /dev/xvdg1
   4     202       81        4      active sync   /dev/xvdf1
   5       0        0        5      removed

cat /proc/mdstatの出力は、RAID4に変換されたことを示しています。

    Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid4 xvdg1[5] xvdf1[4] xvdd1[1] xvdb1[0] xvde1[2]
      2621432320 blocks super 1.2 level 4, 512k chunk, algorithm 5 [6/5] [UUUUU_]

unused devices: <none>

だから私の懸念は...最初のアレイ(スナップショットサーバー)を誤って拡張したので、2.5 TBになっているはずですが、私のエラーは2.0 TBしか与えていないのですかまたは、2つ目のアレイ(ミラーサーバー)を誤って拡張したのに、取得しようと思っていたパリティドライブがないのですか?これらのアレイを一貫して拡張するには、何ができますか、または何をすべきでしたか?

5
Ken S.

私も彼の問題にぶつかりました。いくつかのテストの後、Software RAID0アレイを拡張できます。

成長コマンドに含めることが理にかなっていると考える場合、オプションは--backup-fileであるオプションを見つけました。ハードウェアで行った場合と同じようにRAID0アレイを現実的に拡張することを考えると、アレイを破棄して再作成するためにデータを別の場所にコピーする必要があります。そうでない場合は、数学を拡張する必要があります。 (実際には)余分なスペースのないRAID0アレイ。

私が見つけたもう1つのことは、RAID 0アレイに1つのドライブを追加するだけではなく、2つのドライブを追加した場合にのみ機能し、それ以上は試していません。

したがって、RAID 0アレイを拡張するコマンドは(あなたの場合)次のようになります。

mdadm --grow /dev/md0 --raid-devices=5 \
  --backup-file=/drive/With/Enough/Space/growth.bak --add /dev/xvdf1 /dev/xvdg1
3
Jorge