GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada cara sederhana untuk memindahkan/menyalin volume logis dari satu grup volume ke grup volume lainnya? (LVM2)

Jika Anda dapat mengatur agar volume logis berada pada subset terpisah dari volume fisik dari grup volume sumber lainnya (lvconvert sourcevg/sourcelv /dev/pv1 ... dapat membantu), Anda dapat menggunakan vgsplit untuk memisahkan lv menjadi vg baru dan vgmerge untuk menggabungkan vg baru ke vg target.

Meskipun LVM memiliki fitur pencerminan, Anda tidak dapat (secara wajar) menggunakannya untuk membuat salinan antar grup volume, karena kedua kaki cermin harus berada di vg yang sama dan asosiasi tidak dapat diputus.

Anda dapat menyalin volume LVM ke volume lain dengan cara menyalin volume apa pun ke volume lain:buat target lv dengan ukuran yang sesuai, lalu salin isinya dengan dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M . Jika volume sumber aktif, Anda dapat memanfaatkan LVM untuk membuat salinan yang konsisten:pertama ambil snapshot lv sumber dengan lvcreate -s , lalu salin snapshot.


pvmove -n lvol1 /dev/sdb1 /dev/sdc1

pvmove dapat memindahkan data antar volume fisik:Panduan Administrator LVM


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 pada /dev/loop1 dan /dev/loop2 masing-masing.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Buat volume logis lv1 dan lv2 pada vg1 dan vg2 masing-masing.

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. Buat vg1 tidak aktif.

vgchange -a n vg1

Jalankan perintah gabungan dalam mode uji. Ini menggabungkan lv1 ke dalam lv2 .

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 . Argumen <> memberi tahu lvconvert untuk membuat salinan cerminlv1_copy 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 tidak aktif.

vgchange -a n vg2

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:

Logical volumes in `vg1` must be inactive

Dan terbagi:

Logical volume `vg2/lv1` must be inactive.

Linux
  1. CentOS / RHEL :Pindahkan Volume Fisik dari Grup Volume yang ada ke Grup Volume lain

  2. CentOS / RHEL :Cara memindahkan Grup Volume dari satu sistem ke sistem lainnya

  3. Cara menyalin tabel dari satu database mysql ke database mysql lainnya

  1. Bagaimana cara menyalin 10 file terbaru teratas dari satu direktori ke direktori lain?

  2. Bagaimana cara menyalin komit dari satu repo Git ke yang lain?

  3. Apa cara tercepat untuk memindahkan sejuta gambar dari satu direktori ke direktori lain di Linux?

  1. Linux – Memindahkan Volume Logis Dari Satu Grup Volume ke Grup Volume Lainnya?

  2. Bagaimana Cara Menyalin Pengaturan Dari Satu Mesin Ke Mesin Lainnya?

  3. Salin file besar dari satu server Linux ke yang lain