Blocksync.py kullanarak VM'leri Kopyalamaya İlişkin Ayrıntılı Talimatlar
Bu talimatlar LVM tarafından sağlanan bir diski kullanan bir VM için geçerlidir ve Python'un her ana bilgisayarda olduğunu varsayar.
Blocksync.py betiğini https://gist.github.com/rcoup/1338263 adresinden indirin ve / home / user klasörünüzdeki hem kaynak hem de hedef konağa yerleştirin.
öncü
- Kullanıcınız için her iki makineye (kaynak ve hedef) 'ssh' erişiminiz olması gerekecektir.
Her iki makinede de 'root'a' sudo 'erişimine sahip olmanız gerekir.
Alternatif olarak, her şeyi root olarak yapabilirsiniz, ancak yalnızca ssh anahtarınız size en azından hedef makineye root erişimi sağlıyorsa. ** Bu durumda, kullanıcı adını komut satırlarından kaldırın.
Örnek Ayarlar
- Sanal makine, chewie olarak bilinen dom0 sunucusunda
- Dom0 sunucusunda arzu edilen hedef dördüncü olarak bilinir ve burada dahili bir IP vardır. 10.10.10.38 (örneğin)
- Gerçek durumumuzda centos 7'yi her iki makinede dom0 işletim sistemi olarak kullanıyoruz
- Bu örnekte VIRTUAL Makinesi'ne LARRY denir.
- İşlemi yapan kullanıcı USER (adınız olacak)
- DOM0 gerçek fiziksel sunucu anlamına gelir
prosedür
Kaynak ana bilgisayardaki ilk adımlar
- Şu anda makineye sahip olan dom0 ana bilgisayarına giriş yapın ("kaynak" ana bilgisayarı), örneğin:
ssh user@chewie.domainname.com.au
- Kullanıcın olarak kal, bu yüzden sudo kullanıcısı olma *
sudo virsh - tüm
- Makine tanımını aşağıdaki gibi kullanarak boşaltın:
sudo virsh dumpxml larry> larry.xml
Dökülmüş tanımı yeni makineye kopyalayın ("hedef" ana bilgisayar), örneğin:
scp -p larry.xml 10.10.10.38:larry.xml
iç ipi hedef dom0 sunucu adınızla değiştirebilirsiniz ** Not: Hedef için ip adresini kullanmak en iyisidir, örneğin: scp -p larry.xml kullanici@10.10.10.38: larry.xml
Anahtarlar nedeniyle kopyalayamıyorsanız, cat larry.xml dosyasını kopyalayın ve kopyalayın. Sonra başka bir makineye ssh gönderebilir, dosya oluşturabilir ve yapıştırabilirsiniz.
Kullanarak VM diskinin boyutunu ve adını bulun
sudo lvs - B birimleri
.
** Yukarıdaki komut tam olarak bayt cinsinden gösterilmelidir. ** Makinenin disk adı listenin ilk sütununda, ikincideki birim grubunda ve sonda boyutundadır. ** Aygıt adını / dev // olarak belirle ** 'll' komutuyla kontrol edin Örneğin, bu çıktıda: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Havuz Menşei Verileri% Meta% Taşıma Günlüğü Cpy% Senk Dönüştürme
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
Hedef ana bilgisayardaki ilk adımlar
- Hedef ana bilgisayara giriş yapın, örneğin
ssh user@darth.domainname.com.au
- Kendi kullanıcı olarak kal. yani kök olmayın.
Bir birim tanım dosyası oluşturun, örneğin:
vi larry.domainname.com.au-vol.xml
veya nano larry.domainname.com.au-vol.xml
aşağıdaki satırlarla: NOT - Boyutu, orijinal VM'den bayt cinsinden almanız ve aşağıdaki betiğe koymanız gerekecektir. Kaynak makinenin büyüklüğü için komut sudo lvs - birim B idi.
<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>
Not: Bu tanım VM larry için 69793218560 Bytes disk içindir, gerçek VM için gereken şekilde değiştirin.
Not: yolun adı ve son bölümü eşleşmeli ve yeni disk adı olarak kullanılacaktır.
Tanımdan yeni disk kullanarak
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
Vol larry.domainname.com.au larry.domainname.com.au-vol.xml adresinden oluşturulduğunu söyler.
Disk aygıtı dosyasını erişilebilir duruma getirin:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au
Örneğin üzerine kopyalanan xml tanımını düzenleyin:
vi larry.xml
Dosyadaki disk tanımını bulun ("source dev =" için arama yapın) ve cihazı yeni oluşturulanla değiştirin (vm'yi görmek için ls / dev / centos / yapabilirsiniz), örneğin: / dev / drbd4 -> / dev / centos / larry.domainname.com.au
Bu köprü değişimi bizim durumumuz için eşsizdi.
** Arabirim stanzalarındaki "br1" referanslarını bulun ve "br0" olarak değiştirin, örneğin kaynak köprüsünü değiştiriyorsunuz, böylece satır bu şekilde
Kaynak ana bilgisayarda son adımlar
Kaynak sunucuya giriş yapın, örn.
ssh user@chewie.domainname.com.au
En iyi uygulama, son senkronizasyonu yapmadan önce kaynak ana bilgisayardaki VM'yi kapatmak olacaktır ancak yapılması gerekmez. (virsh kapatma NameOfMachine)
Zaten kaynak sunucuda değilse, blocksync.py betiğini https://gist.github.com/rcoup/1338263 adresinden indirin.
Kullanıcı adınız kullanıcı ise (örneğin) blocksync.py betiğini her iki makineye / home / user ve chown kullanıcısına kopyalayın: user ve chmod 755 betiğini.
- Zaten hedef ana bilgisayarda değilse, oraya kopyalayın, örneğin:
scp -p blocksync.py kullanıcı@10.10.10.38: blocksync.py
- Kaynak diski hedef diske kopyalamak için kullanın, örn.
Kopyalamayı yapan komut
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Not: İlk aygıt adı 'lvs' komutundan belirlenen kaynak ana bilgisayar içindir; bu bir [[chewie]] kaynak ana bilgisayardan.
Not: Bu , hedef diskin içeriğini imha edecektir , /dev/mapper/centos-larry.domainname.com.au adresinin doğru olduğundan emin olun!
Not: senkronizasyon çok uzun sürecektir - gigabayt başına yaklaşık 100 saniye, yani: 60 gigabayt disk için 90 dakika.
Ancak, VM kullanımdayken bir senkronizasyon yapabilirsiniz; sonraki senkronizasyonlar yüzde 25 daha hızlı olabilir
Komut kullandığı parametreleri yazdıracak (kullanımdan kaldırılmış bir modül hakkında bir mesaj olabilir, bu sorun değil). Daha sonra, kullandığı ssh komutunu görüntüler ve çalıştırır (bunu yaparken yalnızca yetkili personelin mesajını göreceksiniz). Senkronizasyonu sırasında, kopyalanan toplam blok sayısını ve ortalama hızını gösterecektir. Sonunda, aldığı saniye sayısı ile bir tamamlama mesajı yazdırır.
Bilinecek şeyler
Senkronizasyonu CTRL C ile iptal edebilir ve komutu tekrar çalıştırarak daha sonra yeniden başlatabilirsiniz.
Hedef ana bilgisayarda son adımlar
- Hedef ana bilgisayara giriş yapın, örneğin
ssh user@darth.domainname.com.au
- Sanal makineyi oluşturun, örneğin:
virsh larry.xml tanımla
- Yeni tanımlanan makineyi başlatın, örneğin:
sudo virsh başlangıç larry
- Ana bilgisayar önyüklemesinde başlatmak için işaretleyin, örneğin:
sudo virsh autostart larry
Not: Sanal Makinenin ayrıntılarını yeni ortama uyacak şekilde değiştirmek gerekebilir.