Apakah ada cara sederhana untuk memindahkan / menyalin volume logis dari satu grup volume ke yang lain? (LVM2)
15
Saya mengatur ulang sekelompok disk di server saya di rumah dan saya menemukan diri saya dalam posisi ingin memindahkan sekelompok volume logis LVM ke grup volume lain. Apakah ada cara sederhana untuk melakukan hal ini? Saya melihat penyebutan suatu cplvperintah tetapi ini sepertinya sudah lama atau bukan sesuatu yang pernah tersedia untuk Linux.
Jika Anda dapat mengatur agar volume logis berada di subset terpisah volume fisik dari sisa grup volume sumber ( lvconvert sourcevg/sourcelv /dev/pv1 ...dapat membantu), Anda dapat menggunakan vgsplituntuk membagi lv menjadi vg baru dan vgmergeuntuk menggabungkan vg baru ke dalam target vg.
Meskipun LVM memiliki fitur mirroring, Anda tidak dapat (secara bijaksana) menggunakannya untuk membuat salinan di antara grup volume, karena kedua kaki cermin harus hidup pada vg yang sama dan asosiasi tidak dapat dipatahkan .
Anda dapat menyalin volume LVM ke yang lain dengan cara Anda menyalin volume apa pun ke yang lain: buat target lv dengan ukuran yang sesuai, lalu salin isinya 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-tama ambil snapshot sumber lv lvcreate -s, lalu salin snapshot.
Brilliant Gilles .... vgsplit / vgmerge mungkin akan baik-baik saja: Saya dapat menggunakan pvmove setelah itu untuk memindahkan luasan fisik ke disk baru dan kemudian menghapus volume lama dari VG.
jkp
Sayang, ini tidak berhasil bagi saya pada akhirnya karena ukuran yang berbeda. Jika itu bukan masalah bagi Anda, saya sarankan metode ini akan lebih mudah.
jkp
Setelah dd(jika Anda tidak terburu-buru untuk membuang volume lama), jangan lupa untuk mengubah UUID dari sistem file baru: tune2fs -U acak / dev / targetvg / targetlv
Saya ulangi: ini tidak berfungsi untuk dua grup volume yang terpisah
kissgyorgy
Pertama vgextendvg1 dengan pv baru, kemudian pvmovelv Anda ke pv baru, vgsplitvg sementara yang Anda vgmergedi vg2. Kemudian pvmovelagi lv ke vg2 pv asli, vgreducevg2 untuk membaca pv perantara. Atau untuk menghindari salinan perantara, Anda dapat menggabungkan dulu vg1 di vg2, lv1 pvmove, dan vgsplitlagi vg1 dari vg2. Ini harus menjawab keberatan dari @ MattBianco dan @kissgyorgy dan setara dengan solusi @Gilles tetapi mengganti snapshot dan tingkat rendah dddengan apvmove
marcz
1
Sampai dengan LVM di Debian peregangan (9.0), yaitu 2.02.168-2, itu mungkin untuk melakukan copy dari volume logis di seluruh kelompok volume dengan menggunakan kombinasi dari vgmerge, lvconvert, dan vgsplit. Karena langkah adalah kombinasi dari salinan dan penghapusan, ini juga akan berfungsi untuk bergerak.
Atau, Anda dapat menggunakan pvmoveuntuk hanya memindahkan volume.
Sesi contoh lengkap mandiri menggunakan perangkat loop dan
lvconvertikuti.
Ringkasan: kita menciptakan kelompok volume vg1dengan volume logis lv1, dan vg2dengan lv2, dan membuat salinan dari lv1dalam vg2.
Secara opsional, tuliskan sesuatu lv1agar Anda nanti dapat memeriksa apakah salinannya telah dibuat dengan benar. Jadikan vg1tidak aktif.
vgchange -a n vg1
Jalankan perintah gabung dalam mode uji. Ini bergabung lv1menjadi 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 cermin RAID 1 dari lv1menggunakan lvconvert. The <> Argumen mengatakan lvconvertuntuk membuat salinan cermin
lv1_copydi /dev/loop2.
dd
(jika Anda tidak terburu-buru untuk membuang volume lama), jangan lupa untuk mengubah UUID dari sistem file baru: tune2fs -U acak / dev / targetvg / targetlvpvmove dapat memindahkan data antar volume fisik: Panduan Administrator LVM
sumber
vgextend
vg1 dengan pv baru, kemudianpvmove
lv Anda ke pv baru,vgsplit
vg sementara yang Andavgmerge
di vg2. Kemudianpvmove
lagi lv ke vg2 pv asli,vgreduce
vg2 untuk membaca pv perantara. Atau untuk menghindari salinan perantara, Anda dapat menggabungkan dulu vg1 di vg2, lv1pvmove
, danvgsplit
lagi vg1 dari vg2. Ini harus menjawab keberatan dari @ MattBianco dan @kissgyorgy dan setara dengan solusi @Gilles tetapi mengganti snapshot dan tingkat rendahdd
dengan apvmove
Sampai dengan LVM di Debian peregangan (9.0), yaitu 2.02.168-2, itu mungkin untuk melakukan copy dari volume logis di seluruh kelompok volume dengan menggunakan kombinasi dari
vgmerge
,lvconvert
, danvgsplit
. Karena langkah adalah kombinasi dari salinan dan penghapusan, ini juga akan berfungsi untuk bergerak.Atau, Anda dapat menggunakan
pvmove
untuk hanya memindahkan volume.Sesi contoh lengkap mandiri menggunakan perangkat loop dan
lvconvert
ikuti.Ringkasan: kita menciptakan kelompok volume
vg1
dengan volume logislv1
, danvg2
denganlv2
, dan membuat salinan darilv1
dalamvg2
.Buat file.
Siapkan perangkat loop pada file.
Buat volume fisik pada perangkat loop (inisialisasi perangkat loop untuk digunakan oleh LVM).
Buat kelompok Volume
vg1
danvg2
di/dev/loop1
dan/dev/loop2
masing-masing.Buat volume logis
lv1
danlv2
terusvg1
danvg2
masing - masing.Buat sistem file ext4 di
lv1
danlv2
.Secara opsional, tuliskan sesuatu
lv1
agar Anda nanti dapat memeriksa apakah salinannya telah dibuat dengan benar. Jadikanvg1
tidak aktif.Jalankan perintah gabung dalam mode uji. Ini bergabung
lv1
menjadilv2
.Dan kemudian nyata.
Kemudian buat pasangan cermin RAID 1 dari
lv1
menggunakanlvconvert
. The <> Argumen mengatakanlvconvert
untuk membuat salinan cerminlv1_copy
di/dev/loop2
.Lalu belah cermin. LV baru sekarang
lv1_copy
.Jadikan
vg2
tidak aktif.Kemudian (mode pengujian)
Nyata
Output yang dihasilkan:
CATATAN:
1) Sebagian besar dari perintah ini perlu dijalankan sebagai root.
2) Jika ada duplikasi nama volume logis dalam dua grup volume,
vgmerge
akan menolak untuk melanjutkan.3) Saat digabung:
Dan di split:
sumber