web-dev-qa-db-ja.com

Linux LVMを使用して、ストライプの数を変更し、論理ボリュームを「リバランス」できますか?

2つのRAID1mdデバイスを物理ボリュームとしてボリュームグループに追加して、RAID10を作成しました。残念ながら、論理ボリュームを作成したときにストライプの数を指定するのを忘れたようです(遅れました)。

PV         VG     Fmt  Attr PSize   PFree  
/dev/md312 volume lvm2 a-   927.01G 291.01G
/dev/md334 volume lvm2 a-   927.01G 927.01G

pvmoveを使用して、論理ボリュームのすべてのデータをある物理ボリュームから別の物理ボリュームに移動できることを知っています。また、lvextendはストライプの数を変更するための-iスイッチをサポートしているようです。これら2つを組み合わせる方法はありますか?ストライプの数を変更し、割り当てポリシーに基づいてストライプ全体でデータを「リバランス」しますか?

Ross Walkerによるこのメール 2010年3月からそれは不可能ですが、おそらくそれ以来これは変更されています。

3
mss

pvmoveは非常に遅いです。小さなダウンタイム中にレイアウトを再作成すると、おそらく高速になります。

ダウンタイムが発生しない場合は、劣化したraid1ディスクを基盤となるディスクとしてmd334をストライプミラーとして再作成します(つまり、LVMではなくRaid 10にmdを使用します)。次に、pvmoveをmd334に実行し、md312を削除し、ディスクのmd-signaturesをワイプして、2つの劣化したraid1に2つのディスクを追加します(完全な冗長性に戻ります)。

Md-devicesをスタックできるかどうかはわかりませんが、それが不可能な理由はわかりません。 pvmoveの間、冗長性はありません。

アップデート2011-08-17:CentOS5.6で手順をテストしました-動作します。結果は次のとおりです。

cat /proc/mdstat

性格:[raid1] [raid0]

md10:アクティブraid0 md3 [1] md1 [0] 1792ブロック64kチャンク

md3:アクティブraid1 loop0 [1] loop1 [0] 960ブロック[2/2] [UU]

md1:アクティブraid1 loop2 [1] loop3 [0] 960ブロック[2/2] [UU]

セットアップをシミュレートするために、最初にloop0とloop2で構成されるミラーを使用して/ dev/md0をセットアップします。 md0をディスクとしてVGをセットアップしました。次に、そのVG内にLVを作成し、LV内にファイルシステムを作成してマウントし、ファイルを書き込みました。

次に、/ dev/md1とmd3をloop1respで構成される劣化したraid1デバイスとしてセットアップします。 loop3。その後、raid10デバイスを作成し、md1とmd3からraid0を構築しました。

VGにmd10を追加しました。次に、md0をmd10にpvmoveします。 VGからmd0を削除しました。 md0を停止し、loop0とloop2をワイプしました。劣化したraid1のサイズを、2つのデバイスを使用できるように変更しました。 md3にloop0を、md1にloop2をホット追加しました。

ファイルシステムは、プロセス全体を通してマウントされたままでした。

2
Nils