私のシステムには3つのドライブがあります。これらはすべてVG内のPVです。
このVGにはいくつかのLVがあります。そのうちの1つは、2つのドライブ/ PVにまたがるかなり大きな規模です。 3番目のドライブは、LV全体を収容するのに十分な大きさです。これが私が望むものです。
これが私が言うことです。ここに私のPVがあります(例えば、pvcreate
パーティションではなくドライブ全体で実行されています)。
/dev/sda -> 10TB drive
/dev/sdb -> 4TB drive
/dev/sdc -> 3TB drive
3つのPVと複数のLVの両方を含むVGがあります。私は1つだけに興味があります:
MyData -> 5TB LV
によると、LVがオンになっていますlsblk -f
。MyData
両方 /dev/sdb
そして/dev/sdc
。デフォルトでは、このシステムは1つのドライブから始めてさらに追加しました。私も小さなLVから始めて、より大きく使用lvextend
/lvresize
作成しました。
私がしたいことは動いています。全体的な到着しましたMyData
。/dev/sda
ドキュメントを見ると、pvmove
次のことができることがわかりました。
pvmove -n MyData /dev/sdb /dev/sda
pvmove -n MyData /dev/sdc /dev/sda
これが私が望むようになるはずです。
1つのコマンドでこれを行う方法はありますか?tmux
両方のコマンドを同時に実行できますか?
これにより、すべての範囲が(断片化されずに)連続的に作成されますか/dev/sda
?
答え1
最も簡単な場合はそうです。そう動作します。
ただし、LV を大量に作成、削除、サイズ変更すると、範囲の断片化が発生する可能性があります。このような場合は、もう少し詳しく見てみると良いでしょう。
# check where there is free space
pvs
# check in detail if free space is contiguous
pvdisplay --maps /dev/sda
# show LV segments that require moving, in order
lvs -o seg_le_ranges VG/LV
この時点では、何をどこに移すべきかについて明確なアイデアが必要です。
ステップバイステップの例:
# pvdisplay --maps /dev/sdx1
--- Physical volume ---
PV Name /dev/sdx1
VG Name HDD
[...]
Physical extent 10650 to 11174:
FREE
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdz1:11128-11143
MyData HDD /dev/sdz2:7450-7457
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz1:11128-11143 /dev/sdx1:10650-11174
/dev/sdz1: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10665
MyData HDD /dev/sdz2:7450-7457
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz2:7450-7457 /dev/sdx1:10666-11174
/dev/sdz2: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10673
MyData HDD /dev/sdz3:0-11
# pvmove -n HDD/MyData /dev/sdz3:0-11 /dev/sdx1:10674-11174
/dev/sdz3: Moved: 100.00%
# lvs -o lv_name,vg_name,seg_le_ranges HDD/MyData
LV VG LE Ranges
MyData HDD /dev/sdx1:10650-10685
両方のインスタンスを並列に実行しようとするとpvmove
失敗します。
Skipping locked LV VG/MyData.
All data on source PV skipped. It contains locked, hidden or non-top level LVs only.
No data to move for VG.
したがって、順番に行わなければなりません。それ以外の場合は正常に動作します。
まったく異なるアプローチは、lvcreate
新しいLVを作成してデータをコピーしてから、コピーが良好ですべてが機能することを確認したら、古いlvremove
LVをコピーすることです。
基本的には昔ながらのオフラインです。欠点(エラーをコピーしたりデータが失われる可能性があります)がありますが、利点もあります。ソースファイルシステムは変更されずに保持されるため、元に戻すことはできますが、元に戻すことはできませpvmove
ん(すべてを元の場所に戻す必要はありません)。