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つ目のアレイ(ミラーサーバー)を誤って拡張したのに、取得しようと思っていたパリティドライブがないのですか?これらのアレイを一貫して拡張するには、何ができますか、または何をすべきでしたか?
私も彼の問題にぶつかりました。いくつかのテストの後、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