GNU/Linux >> Linux の 問題 >  >> Linux

あるボリューム グループから別のボリューム グループに論理ボリュームを移動/コピーする簡単な方法はありますか? (LVM2)

ソースボリュームグループの残りの部分とは別の物理ボリュームのサブセットに論理ボリュームを配置できる場合 (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.

Linux
  1. 最後のN行をあるファイルから別のファイルにコピーしますか?

  2. CentOS / RHEL :物理ボリュームを既存のボリューム グループから別のボリューム グループに移動します。

  3. CentOS / RHEL :ボリューム グループをあるシステムから別のシステムに移動する方法

  1. あるディレクトリから別のディレクトリに最新の上位 10 個のファイルをコピーする方法は?

  2. ある Git リポジトリから別のリポジトリにコミットをコピーする方法は?

  3. あるドライブから別のドライブにファイル システム階層全体をコピーする

  1. Linuxでパーミッションをあるファイルから別のファイルにコピーまたは複製する方法

  2. Linuxで100万枚の画像をあるディレクトリから別のディレクトリに移動する最速の方法は何ですか?

  3. htopでテキストをコピーする方法はありますか?