Pada dasarnya, saya ingin memindahkan / menyalin beberapa volume logis (lv) ke grup volume baru (vg). Grup volume baru berada pada set volume fisik baru. Adakah yang tahu cara melakukannya dengan aman tanpa merusak data di dalam volume logis itu ??
partitioning
hard-drive
lvm
tak seorangpun
sumber
sumber
Jawaban:
vgmerge memungkinkan Anda menggabungkan dua VG. Anda juga dapat menggunakan pvmove untuk memindahkan data dalam VG, dan vgsplit jika Anda ingin kembali ke beberapa VG.
sumber
Tidak ada alasan untuk menyalinnya ke file .img terlebih dahulu, cukup lakukan lvcreate dulu, lalu salin langsung ke:
sumber
Oke, saya bisa menangani situasi dengan cara saya sendiri. Berikut langkah-langkah yang saya ambil:
1) Ambil snapshot dari volume logis penargetan.
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
2) Buat salinan gambar dari konten snapshot menggunakan
dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Buat volume logis baru dengan ukuran yang cukup di grup volume penargetan (baru).
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Tulis data ke volume logis baru dari cadangan gambar menggunakan
dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) hapus snapshot dan cadangan gambar menggunakan
lvremove
danrm
masing - masing.Itu semua orang ... Semoga ini bisa membantu seseorang :)
sumber
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: kami membuat grup volume vg1 dengan volume logis lv1, dan vg2 dengan lv2, dan membuat salinan lv1 di vg2.
Buat file.
Atur perangkat loop pada file.
Buat volume fisik pada perangkat loop (inisialisasi perangkat loop untuk digunakan oleh LVM).
Buat grup volume vg1 dan vg2 di / dev / loop1 dan / dev / loop2 masing-masing.
Buat volume logis lv1 dan lv2 masing-masing pada vg1 dan vg2.
Buat filesystem ext4 di lv1 dan lv2.
Secara opsional, tulis sesuatu di lv1 sehingga nanti Anda dapat memeriksa salinan yang dibuat dengan benar. Jadikan vg1 tidak aktif.
Jalankan perintah gabung dalam mode uji. Ini menggabungkan lv1 menjadi lv2.
Dan kemudian nyata.
Kemudian buat pasangan cermin RAID 1 dari
lv1
menggunakanlvconvert
. Argumen <> memberi tahulvconvert
untuk membuat salinan mirrorlv1_copy
aktif/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
Keempat jawaban sejauh ini semuanya kehilangan bahwa ukuran pasti dari volume seringkali tidak diketahui.
lvdisplay
hanya menunjukkan nilai yang dibulatkan ke 2 tempat desimal danman lvdisplay
hanya menunjuk ke perintah lain untuk opsi yang tersedia. Berikut ini memilih MiB, yang cukup akurat dengan ukuran blok LVM standar 4 MiB:lvdisplay --units m
MiB juga unit default untuk
--size
darilvcreate
. Jika ragu, periksa kembali ukuran yang benar denganlvdisplay
setelah membuat volume target. Kemudian lanjutkan seperti pada jawaban lain untuk membuat salinan. Selanjutnya, saya akan merekomendasikan untuk memverifikasi salinan , misalnya dengancmp
.Di sini mengapa snapshot digunakan dan apa yang dilindungi dan tidak dilindungi:
Snapshot dibuat agar semua data disalin seperti pada saat snapshot dibuat. Aktivitas pada volume sumber selama proses penyalinan tidak akan tercermin dalam salinan.
Cuplikan juga melindungi volume sumber dari kesalahan manusia di
dd
baris perintah. Jika Anda secara tidak sengaja menulis ke snapshot, hanya data snapshot yang akan rusak dan Anda cukup menghapus snapshot dan memulai dari awal.Volume target tidak dilindungi selama proses penyalinan. Jika admin lain (atau proses otomatis seperti os-prober of
dracut
) me-mount volume yang tidak lengkap, mount mungkin mengacaukan hal-hal. (Bahkan mount baca-saja masih dapat menulis entri jurnal ke volume.)sumber
Saya akan menawarkan sendiri:
jika semuanya baik, hapus sumbernya
sumber
Jika Anda perlu menyalin volume logis dari VG A ke VG B lainnya, saya menemukan varian menarik yang digunakan
partclone
. Cuplikan kemudian salin dengan dd adalah metode yang baik tetapi mungkin lambat jika sistem file Anda tidak penuh. Solusi ini sangat cepat karena hanya menyalin blok yang digunakan.di
--size
sini adalah berapa banyak penulisan dapat terjadi sebelum snapshot akan dinonaktifkannew_lv_size
minimal harus ukuran sumber LVfs_type
bisaext4
,fat32
,btrfs
,xfs
, ... setiap FS didukung oleh partclonesumber