ソースボリュームグループの残りの部分とは別の物理ボリュームのサブセットに論理ボリュームを配置できる場合 (lvconvert sourcevg/sourcelv /dev/pv1 ...
役立つかもしれません)、vgsplit
を使用できます lv を新しい vg と vgmerge
に分割するには 新しい vg をターゲット vg にマージします。
LVM にはミラーリング機能がありますが、ボリューム グループ間でコピーを作成するために (正気で) 使用することはできません。これは、ミラーの両方のレッグが同じ vg に存在する必要があり、関連付けを解除できないためです。
任意のボリュームを別のボリュームにコピーするのと同じ方法で、LVM ボリュームを別のボリュームにコピーできます。適切なサイズのターゲット lv を作成し、dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M
を使用してコンテンツをコピーします。 .ソース ボリュームがアクティブな場合は、LVM を利用して一貫性のあるコピーを作成できます。最初に lvcreate -s
でソース lv のスナップショットを作成します。 、次にスナップショットをコピーします。
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmove は物理ボリューム間でデータを移動できます:LVM 管理者ガイド
Debian Stretch (9.0) の LVM、つまり 2.02.168-2 では、vgmerge
の組み合わせを使用して、ボリューム グループ間で論理ボリュームのコピーを実行できます。 、 lvconvert
、および vgsplit
.移動はコピーと削除の組み合わせであるため、これは移動にも機能します。
または、 pvmove
を使用できます ボリュームを移動するだけです。
ループ デバイスと lvconvert
を使用した完全な自己完結型のサンプル セッション
まとめ:ボリューム グループ vg1
を作成します 論理ボリューム lv1
を使用 、および vg2
lv2
で 、および lv1
のコピーを作成します 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
lv1
から RAID 1 ミラー ペアを作成します。 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.