Grup volume terdiri dari seluruh volume fisik. Volume fisik terdiri dari banyak luasan (luasan biasanya 4MB); setiap tingkat mungkin milik volume logis yang berbeda. Untuk mentransfer volume logis ke grup lain, Anda tidak bisa begitu saja mentransfer luasan, karena hal itu dapat membagi volume fisik antara VG sumber dan VG target.
Yang dapat Anda lakukan adalah mentransfer satu atau lebih PV dari VG sumber ke VG target, dengan vgsplit
memerintah. Anda dapat menentukan PV mana yang ingin Anda transfer, atau LV mana (tetapi hanya satu per satu). Jika Anda menentukan LV, itu dan LV lain di VG sumber harus berada di PV terpisah. VG tujuan akan dibuat jika tidak ada VG dengan nama yang ditentukan.
vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99
Anda mungkin perlu menggunakan pvmove
pertama untuk mengatur volume logis yang ingin Anda pindahkan ke PV terpisah.
Jika Anda ingin mempertahankan batas fisik VG dan memindahkan data, tidak ada alat bawaan, tetapi Anda dapat membuat cermin lalu menghapus yang asli.
Pada LVM di bentangan Debian (9.0), yaitu 2.02.168-2, dimungkinkan untuk menyalin volume logis di seluruh grup volume menggunakan kombinasi vgmerge
, lvconvert
, dan vgsplit
. Karena pemindahan adalah kombinasi dari salinan dan penghapusan, ini juga akan berfungsi untuk pemindahan.
Sebagai alternatif, Anda dapat menggunakan pvmove
untuk hanya memindahkan volume.
Sesi contoh mandiri lengkap menggunakan perangkat loop danlvconvert
mengikuti.
Rangkuman:kami membuat grup volume vg1
dengan volume logis lv1
, dan vg2
dengan lv2
, dan buat salinan lv1
di vg2
.
Buat file.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Siapkan perangkat loop pada file.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Buat volume fisik pada perangkat loop (inisialisasi perangkat loop untuk digunakan oleh LVM).
pvcreate /dev/loop1 /dev/loop2
Buat grup volume vg1 dan vg2 masing-masing di /dev/loop1 dan /dev/loop2.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Buat volume logis masing-masing lv1 dan lv2 pada vg1 dan vg2.
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Buat sistem file ext4 di lv1 dan lv2.
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Secara opsional, tulis sesuatu di lv1 sehingga nanti Anda dapat memeriksa salinan yang dibuat dengan benar. Jadikan vg1 tidak aktif.
vgchange -a n vg1
Jalankan perintah gabungan dalam mode uji. Ini menggabungkan vg1 menjadi vg2.
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
Dan kemudian nyata.
vgmerge -A y -l -v vg2 vg1
Kemudian buat pasangan mirror RAID 1 dari lv1
menggunakan lvconvert
. dest-pv
argumen memberi tahu lvconvert
untuk membuat salinan cermin di /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Kemudian membagi cermin. LV baru sekarang adalah lv1_copy
.
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Buat vg2/lv1
tidak aktif.
lvchange -a n /dev/vg2/lv1
Lalu (mode pengujian)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Sungguh
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Keluaran yang dihasilkan:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
CATATAN:
1) Sebagian besar perintah ini harus dijalankan sebagai root.
2) Jika ada duplikasi nama volume logis di kedua grup volume, vgmerge
akan menolak untuk melanjutkan.
3) Saat digabungkan, volume logis di vg1
harus tidak aktif. Dan secara terpisah, volume logis di vg2
milik vg1
harus tidak aktif. Dalam kasus kita, ini adalah lv1
.
Saya akan menawarkan milik saya:
umount /somedir/
lvdisplay /dev/vgsource/lv0 --units b
lvcreate -L 12345b -n lv0 vgtarget
dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress
mount /dev/vgtarget/lv0 /somedir/
jika semuanya baik, hapus sumbernya
lvremove vgsource/lv0