回答:
論理ボリュームを、ソースボリュームグループの残りの部分とは別の物理ボリュームのサブセットに配置できる場合(lvconvert sourcevg/sourcelv /dev/pv1 ...
役立つ場合があります)、vgsplit
lvを新しいvgに分割しvgmerge
、新しいvgを目標平均
LVMにはミラーリング機能がありますが、ミラーの両方のレッグが同じvgに存在する必要があり、関連付けを解除できないため、ボリュームグループ間でコピーを作成するために(正常に)使用することはできません。
任意のボリュームを別のボリュームにコピーする方法で、LVMボリュームを別のボリュームにコピーできますdd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M
。適切なサイズのターゲットlvを作成してから、でコンテンツをコピーします。ソースボリュームがアクティブな場合、LVMを使用して一貫したコピーを作成できます。最初にソースlvのスナップショットを取得しlvcreate -s
、次にスナップショットをコピーします。
dd
(古いボリュームを急ぐ必要がない場合)、新しいファイルシステムのUUIDを変更することを忘れないでください:tune2fs -U random / dev / targetvg / targetlv
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmoveは物理ボリューム間でデータを移動できます:LVM管理者ガイド
vgextend
新しいpvを持つvg1、次に新しいpv pvmove
へのlv 、vg2にvgsplit
ある一時的なvg vgmerge
。次にpvmove
、lvからvg2の元のpv、vgreduce
vg2で中間pvの読み取りを取得します。または中間コピーを避けるために、することができますVG2、中に単に最初のマージVG1 pvmove
LV1、及びvgsplit
VG2から再びVG1。これは、@マット・ビアンコと@kissgyorgyの異議に答えると@Gillesの溶液と同等ですが、スナップショットと低レベルを交換する必要があるdd
ことでpvmove
Debianのストレッチ(9.0)でのLVMのとおり、すなわち2.02.168-2、それはの組み合わせを使用して、ボリューム・グループにまたがる論理ボリュームのコピーを行うことは可能だvgmerge
、lvconvert
とvgsplit
。移動はコピーと削除の組み合わせであるため、これは移動に対しても機能します。
または、pvmove
ボリュームを移動するだけで使用できます。
ループデバイスを使用した完全な自己完結型のセッション例は
lvconvert
次のとおりです。
要約:vg1
論理ボリュームlv1
、およびvg2
でボリュームグループを作成しlv2
、lv1
inのコピーを作成しvg2
ます。
ファイルを作成します。
truncate pv1 --size 100MB
truncate pv2 --size 100MB
ファイルにループデバイスを設定します。
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
ループデバイス上に物理ボリュームを作成します(LVMで使用するためにループデバイスを初期化します)。
pvcreate /dev/loop1 /dev/loop2
ボリュームグループを作成vg1
し、vg2
上/dev/loop1
と/dev/loop2
それぞれ。
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
論理ボリュームを作成lv1
し、lv2
上vg1
とvg2
それぞれ。
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
lv1
およびでext4ファイルシステムを作成しますlv2
。
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
オプションでlv1
、コピーが正しく作成されたことを後で確認できるように、何かを書き込みます。確認しvg1
、非アクティブ。
vgchange -a n vg1
テストモードでマージコマンドを実行します。これはにマージlv1
されlv2
ます。
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
そして実際に。
vgmerge -A y -l -v vg2 vg1
次に、を使用してRAID 1ミラーペアを作成lv1
しlvconvert
ます。<>引数が伝えlvconvert
ミラーコピーを作成すること
lv1_copy
に/dev/loop2
。
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
次に、ミラーを分割します。新しいLVは今lv1_copy
です。
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
確認しvg2
、非アクティブ。
vgchange -a n vg2
その後(テストモード)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
まじ?実際に
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
結果の出力:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
ノート:
1)これらのコマンドのほとんどは、rootとして実行する必要があります。
2)2つのボリュームグループ内の論理ボリュームの名前に重複がある場合、vgmerge
続行を拒否します。
3)マージ時:
Logical volumes in `vg1` must be inactive
分割して:
Logical volume `vg2/lv1` must be inactive.