Instruksi terperinci tentang Menyalin VM menggunakan blocksync.py
Instruksi ini berlaku untuk VM menggunakan disk yang disediakan LVM dan mengasumsikan bahwa Python ada di masing-masing host
Unduh skrip blocksync.py dari https://gist.github.com/rcoup/1338263 dan masukkan host sumber dan tujuan di folder / home / pengguna Anda.
Pendahulu
- Anda harus memiliki akses 'ssh' ke kedua mesin (sumber dan target) untuk pengguna Anda.
Anda juga perlu memiliki 'sudo' akses ke 'root' di kedua mesin.
Atau, Anda bisa melakukan semuanya sebagai root, tetapi hanya jika kunci ssh Anda memberi Anda akses root ke setidaknya mesin target. ** Dalam hal ini, hapus nama pengguna dari baris perintah.
Pengaturan Contoh
- Mesin virtual ada di host dom0 yang dikenal sebagai chewie
- Tujuan yang diinginkan pada host dom0 dikenal sebagai darth dan memiliki IP internal di sini 10.10.10.38 (untuk contoh kami)
- Dalam kasus kami yang sebenarnya, kami menggunakan centos 7 sebagai sistem operasi dom0 pada kedua mesin
- Mesin VIRTUAL dalam hal ini kami bergerak disebut LARRY
- Pengguna yang melakukan tindakan adalah USER (yang akan menjadi nama Anda)
- DOM0 berarti server fisik aktual
Prosedur
Langkah awal pada host sumber
- Login ke host dom0 yang saat ini memiliki mesin (host "sumber"), misalnya:
ssh user@chewie.domainname.com.au
- Tetap sebagai pengguna Anda, jadi jangan menjadi pengguna sudo * Buat daftar mesin
sudo virsh --semua
- Dump definisi mesin menggunakan, misalnya:
sudo virsh dumpxml larry> larry.xml
Salin definisi yang dibuang ke mesin baru (host "target"), misalnya:
scp -p larry.xml 10.10.10.38:larry.xml
Anda dapat mengubah ip internal ke nama server dom0 tujuan Anda ** Catatan: yang terbaik adalah menggunakan alamat ip untuk target, misalnya: scp -p larry.xml user@10.10.10.38: larry.xml
Jika Anda tidak dapat menyalin karena kunci, larry.xml kucing dan menyalinnya Kemudian Anda dapat ssh ke mesin lain dan membuat file dan menempelkannya.
Temukan ukuran dan nama disk VM menggunakan
sudo lvs - unit B
.
** Perintah di atas harus menunjukkan ukuran tepat dalam byte. ** Nama disk mesin ada di kolom pertama daftar, grup volumenya di kolom kedua, dan ukuran di yang terakhir. ** Tentukan nama perangkat sebagai / dev // ** Periksa dengan perintah 'll' Misalnya, dalam output ini: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Pool Asal Data% Meta% Pindahkan Log Cpy% Sync Konversi
lv_root vg1 -wi-ao ---- 53687091200B
lv_swap vg1 -wi-ao ---- 17179869184B
vm_vsrv1 vg1 -wi-ao ---- 193273528320B
vm_vsrv10 vg1 -wi-ao ---- 64424509440B
vm_vsrv11 vg1 -wi-ao ---- 161061273600B
vm_vsrv12 vg1 -wi-ao ---- 204010946560B
vm_vsrv2 vg1 -wi-ao ---- 140110725120B
vm_vsrv3 vg1 -wi-ao ---- 128849018880B
vm_larry vg1 -wi-ao ---- 69793218560B
vm_vsrv5 vg1 -wi-ao ---- 257698037760B
vm_vsrv6 vg1 -wi-ao ---- 64424509440B
vm_vsrv7 vg1 -wi-ao ---- 161061273600B
vm_vsrv8 vg1 -wi-ao ---- 64424509440B
vm_vsrv9 vg1 -wi-ao ---- 214748364800B
Langkah awal pada host target
- Login ke host target, mis
ssh user@darth.domainname.com.au
- Tetap sebagai pengguna Anda sendiri. yaitu tidak menjadi root.
Buat file definisi volume, misalnya:
vi larry.domainname.com.au-vol.xml
atau nano larry.domainname.com.au-vol.xml
dengan baris berikut: CATATAN - Anda harus mengambil ukuran dalam byte dari VM asli dan dimasukkan ke dalam skrip di bawah ini. Perintah pada mesin sumber untuk ukuran adalah sudo lvs - unit B
<volume type='block'>
<name>larry.domainname.com.au</name>
<capacity unit='bytes'>69793218560</capacity>
<allocation unit='bytes'>69793218560</allocation>
<target>
<path>/dev/centos/larry.domainname.com.au</path>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>6</group>
<label>system_u:object_r:fixed_disk_device_t:s0</label>
</permissions>
</target>
</volume>
Catatan: definisi ini untuk disk 69793218560 Bytes untuk VM larry, ubah seperlunya untuk VM aktual.
Catatan: nama dan bagian terakhir dari jalur harus cocok dan akan digunakan sebagai nama disk baru.
Buat disk baru dari definisi, menggunakan
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
ia akan mengatakan Vol larry.domainname.com.au dibuat dari larry.domainname.com.au-vol.xml
Buat file perangkat disk dapat diakses:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au
Edit definisi xml yang disalin, misalnya:
vi larry.xml
Temukan definisi disk dalam file (cari "source dev =") dan ganti perangkat dengan yang baru saja dibuat (Anda dapat ls / dev / centos / untuk melihat vm), misalnya: / dev / drbd4 -> / dev / centos / larry.domainname.com.au
Perubahan jembatan ini unik untuk situasi kami.
** Temukan referensi ke "br1" di antarmuka antarmuka dan ubah menjadi "br0" misalnya Anda mengubah sumber jembatan sehingga baris seperti ini
Langkah terakhir pada host sumber
Login ke host sumber, mis
ssh user@chewie.domainname.com.au
Praktik terbaik adalah mematikan VM pada host sumber sebelum melakukan sinkronisasi terakhir tetapi tidak perlu dilakukan. (NamaOutMachine mematikan)
Jika belum ada pada host sumber, unduh skrip blocksync.py dari https://gist.github.com/rcoup/1338263
Jika nama pengguna Anda adalah pengguna (misalnya), maka salin skrip blockync.py ke kedua mesin ke / home / pengguna dan pengguna chown: pengguna dan chmod 755 skrip.
- Jika belum ada di host target, salin di sana, misalnya:
scp -p blocksync.py user@10.10.10.38: blocksync.py
- Gunakan itu untuk menyalin disk sumber ke disk target, misalnya
Perintah yang melakukan penyalinan
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Catatan: nama perangkat pertama adalah untuk host sumber, sebagaimana ditentukan dari perintah 'lvs'; yang ini dari host sumber [[chewie]].
Catatan: ini akan menghancurkan isi disk target, pastikan bahwa /dev/mapper/centos-larry.domainname.com.au benar!
Catatan: sinkronisasi akan memakan waktu lama - sekitar 100 detik per gigabyte, yaitu: 90 menit untuk disk 60 gigabyte.
Namun, Anda dapat melakukan sinkronisasi saat VM sedang digunakan; sinkronisasi berikutnya dapat mencapai 25 persen lebih cepat
Script akan mencetak parameter yang digunakannya (mungkin ada pesan tentang modul yang sudah usang, ini tidak masalah). Selanjutnya, ini menampilkan perintah ssh yang digunakan dan menjalankannya (Anda akan melihat pesan hanya staf yang berwenang ketika melakukan ini). Selama sinkronisasi, ini akan menampilkan total blok yang sedang berjalan dan kecepatan rata-rata. Akhirnya, ia mencetak pesan penyelesaian dengan jumlah detik yang dibutuhkan.
Yang Harus Diketahui
Anda dapat membatalkan sinkronisasi dengan CTRL C dan memulai kembali nanti dengan menjalankan perintah lagi
Langkah terakhir pada host target
- Login ke host target, mis
ssh user@darth.domainname.com.au
- Buat mesin virtual, misalnya:
virsh mendefinisikan larry.xml
- Mulai mesin yang baru didefinisikan, misalnya:
sudo virsh mulai larry
- Tandai untuk memulai pada boot host, misalnya:
sudo virsh autostart larry
Catatan: mungkin perlu mengubah detail VM agar sesuai dengan lingkungan baru.