mdadm
は、レベル1からレベル10への配列の拡張をサポートしていないようです。
RAID 1に2つのディスクがあります。2つの新しいディスクを追加し、アレイを4つのディスクのRAID 10アレイに変換します。
私の現在の戦略:
rsync
RAID 10アレイを備えたRAID 1アレイ。問題は、ステップ5の冗長性の欠如です。
もっと良い方法はありますか?
Linux softraidを使用すると、2つのディスクのみでRAID 10アレイを作成できます。
以下で使用されるデバイス名:
md0
は、タイプ/レベルRAID1の古いアレイです。md1
は、タイプ/レベルがRAID10の新しいアレイです。sda1
およびsdb2
はnew、空のパーティション(データなし)です。sda2
およびsdc1
は(重要なデータを含む)古いパーティションです。ユースケースに合わせて名前を置き換えます。たとえば、 lsblk
現在のレイアウトを表示します。
)バックアップ、バックアップ、バックアップ、バックアップoh、バックアップ
1)新しいアレイを作成します(4つのデバイス:2つの既存、2つの欠落):
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
この例では、レイアウトsda1
には対応するものが欠けており、sdb2
には別の対応するものがありません。この時点では、md1
のデータは安全ではありません(欠落しているメンバーを追加するまで、実質的にはRAID0です)。
作成された配列のレイアウトやその他の詳細を表示するには、次のコマンドを使用します。
mdadm -D /dev/md1
注意!配列のレイアウトを保存する必要があります:
# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u
2)フォーマットしてマウントします。 /dev/md1
はすぐに使用できるはずですが、フォーマットしてからマウントする必要があります。
)ファイルをコピーします。たとえば、古いRAID 1から新しいRAID 10にデータをコピーするrsync(これはコマンドの例にすぎません。rsyncのマニュアルページをお読みください)
rsync -arHx / /where/ever/you/mounted/the/RAID10
4)古いRAID1(md0)の最初の部分を失敗させ、新しいRAID10(md1)に追加します
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2
注意!これにより、sda2
からデータが消去されます。 md0
は引き続き使用可能ですが、他のRAIDメンバーが完全に機能している場合に限られます。
また、これによりmd1
で同期/復元プロセスが開始されます。ステータスを確認するには、以下のいずれかのコマンドを使用します。
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
待機リカバリが完了するまで。
5)新しいアレイにGRUBをインストールします(そこからブートしている場合)。一部のLinuxレスキュー/ブートCDが最適です。
6)新しいアレイで起動します。正常に動作した場合は、古いアレイを破棄し、残りのディスクを新しいアレイに追加します。
返品不可のポイント
この時点で、古いmd0アレイの最後のメンバーのデータを破棄します。すべてが機能していることを必ず確認してください。
mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1
そして再び-waitmd1
のリカバリが完了するまで。
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
7) mdadm設定を更新
/etc/mdadm/mdadm.conf
を更新してください(md0を削除してください)。
そして、設定をinitramfsに保存します(再起動後に利用可能になります)
update-initramfs -u
Mark Turnerと同じ手順に従いますが、RAIDアレイを作成するときに、不足している2つのディスクについて言及します。
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
その後、他の手順に進みます。
つまり、合計4つのディスク(うち2つは欠落しています)でRAID10を作成し、再同期して、その後に他の2つのディスクを追加します。
2 TBの2つのディスクmdadm RAID 1上のLVMから4つのディスクRAID 10(元の2つ+新しいディスク2つ)上のLVMへの移行が終了しました。
@aditsuが述べたように、アレイを作成するときはドライブの順序が重要です。
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing
上記のコードは、2つのディスクが欠落している使用可能なアレイを提供します(ディスク全体を使用していない場合は、パーティション番号を追加します)。 3番目のディスクが追加されるとすぐに、同期が開始されます。 3番目の同期が完了する前に、4番目のディスクを追加しました。 3番目のディスクが終了するまでスペアとして表示され、同期が開始されました。
私の状況の手順:
適切なバックアップを作成します。
2つのディスクが欠落している劣化した4ディスクRAID 10アレイを作成します(欠落しているディスクを#2および4と呼びます)。
気になるファイルを変更/追加しないよう妻に伝えます
失敗し、RAID 1アレイから1つのディスク(ディスク4)を取り外します。
物理エクステントをRAID 1アレイからRAID 10アレイに移動して、ディスク2を空にします。
アクティブなRAID 1アレイを終了し、空になったディスク(ディスク2)をRAID 10アレイに追加して、再同期が完了するまで待ちます。
RAID 1から削除した最初のディスク(ディスク4)をRAID 10アレイに追加します。
妻を先に進めなさい。
ステップ7で、ドライブ1、2、[〜#〜]または[〜#〜] 4は、アレイを強制終了せずに失敗する可能性があります(ディスク4の再同期中に)。ドライブ3が故障すると、アレイ上のデータはトーストされます。
Raid1をraid10に移動しましたが、このページは役に立ちましたが、上記の回答にはいくつか欠けているものがあります。特に私の目的はext4の誕生を維持することでした。
セットアップは:
前に述べたように:ゼロステップはバックアップである必要があり、プロセスで何か問題が発生し、極端なデータ損失が発生する可能性があります
[〜#〜]バックアップ[〜#〜]
新しいレイドのセットアップ
新しいレイドを作成する
mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
(レイアウトが重要であることがわかりました。2番目と4番目は、デフォルトの「近い」レイドで重複しているようです)
移行する
今データを取得しています...私は最初に動作したrsyncを使用しようとしましたが、出生時間を維持できませんでした...古いレイドから新しいレイドにddを使用してください clone
dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
IT for WAIT
USR1をそのプロセスに送信することで確認できます
kill -s USR1 <pid>
レイドを修正する
gpartedは素晴らしいツールです。パーティションを確認して修正し、数回クリックするだけで、ディスクのフルサイズにサイズ変更するように指示します;)
そのパーティションに新しいuuidを設定し、それを使用してfstabを更新します(uuidを変更します)
レイドをconfに保存する
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
古いものを削除します
vim /etc/mdadm/mdadm.conf
古いものを破壊する
最初のものに失敗し、それを新しいレイドに追加する
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
次に、そのデバイスでgptを作成し、新しい空のパーティションを設定します
mdadm /dev/md127 --add /dev/sdc1
IT for WAIT
で確認できます
cat /proc/mdstat
2つ目を停止
mdadm --stop /dev/md0
次に、最後のデバイスでgptを作成し、新しい空のパーティションを再度設定します
mdadm /dev/md127 --add /dev/sdd1
WAIT FOR IT again
私はLVMでそれをしました。初期構成:-sda2、sdb2-上部にraid1 md1を作成しました。 sda1とsdb1は、/ bootパーティションの2番目のraid1に使用されました。 -md1はボリュームグループスペースのpvであり、lvmがいくつかあります。
ディスクsdcとsddを追加して、sda/sdbのようなパーティションを作成しました。
そう:
md10を次のように作成しました:
mdadm --create/dev/md10 --level raid10 --raid-devices = 4/dev/sdc2行方不明/ dev/sdd2
その上でvgを拡張します。
pvcreate/dev/md10 vgextend space/dev/md10
ボリュームをmd1からmd10に移動しました:
pvmove -v/dev/md1/dev/md10
(完了を待ちます)4.ボリュームグループを減らします。
vgreduce space /dev/md1
pvremove /dev/md1
アレイmd1を停止します。
mdadm -S/dev/md1
古いmd1からmd10にディスクを追加します。
mdadm -a/dev/md10/dev/sda2/dev/sdb2
/etc/mdadm/mdadm.confの構成を更新します。
mdadm -E --scan >>/dev/mdadm/mdadm.conf
(そしてそこに古いmd1を削除します)
すべてがライブシステムで実行され、アクティブなボリュームがkvmに使用されます;)