Detaillierte Anweisungen zum Kopieren von VMs mit blocksync.py
Diese Anweisungen gelten für eine VM, die eine von LVM bereitgestellte Festplatte verwendet, und setzen voraus, dass sich Python auf jedem der Hosts befindet
Laden Sie das Skript blocksync.py von https://gist.github.com/rcoup/1338263 herunter und legen Sie sowohl den Quell- als auch den Zielhost in Ihrem Ordner / home / user ab.
Vorläufer
- Sie müssen für Ihren Benutzer 'ssh'-Zugriff auf beide Computer (Quelle und Ziel) haben.
Sie müssen auch auf beiden Rechnern 'sudo'-Zugriff auf' root 'haben.
Alternativ können Sie alles als Root ausführen, aber nur, wenn Sie mit Ihrem SSH-Schlüssel als Root mindestens auf den Zielcomputer zugreifen können. ** Entfernen Sie in diesem Fall den Benutzernamen aus den Befehlszeilen.
Beispieleinstellungen
- Die virtuelle Maschine befindet sich auf dem dom0-Host, der als chewie bezeichnet wird
- Das gewünschte Ziel auf dem dom0-Host, bekannt als darth, hatte hier eine interne IP 10.10.10.38 (für unser Beispiel)
- In unserem aktuellen Fall verwenden wir auf beiden Computern Centos 7 als dom0-Betriebssystem
- Die VIRTUELLE Maschine, die wir in diesem Fall bewegen, heißt LARRY
- Der Benutzer, der die Aktion ausführt, ist USER (dies ist Ihr Name).
- DOM0 bedeutet den tatsächlichen physischen Server
Verfahren
Erste Schritte auf dem Quellhost
- Melden Sie sich bei dem dom0-Host an, auf dem sich derzeit der Computer befindet (der "Quell" -Host), z. B .:
ssh user@chewie.domainname.com.au
- Bleiben Sie als Ihr Benutzer, werden Sie also kein sudo-Benutzer
sudo virsh --all
- Sichern Sie die Maschinendefinition mit:
sudo virsh dumpxml larry> larry.xml
Kopieren Sie die gedumpte Definition auf den neuen Rechner (den "Ziel" -Host), zB:
scp -p larry.xml 10.10.10.38:larry.xml
Sie können die interne IP-Adresse in den Namen Ihres Dom0-Zielservers ändern. ** Hinweis: Am besten verwenden Sie die IP-Adresse für das Ziel, z. scp -p larry.xml user@10.10.10.38: larry.xml
Wenn Sie aufgrund von Schlüsseln die cat larry.xml nicht kopieren und kopieren können, können Sie ssh in eine andere Maschine kopieren und eine Datei erstellen und diese einfügen.
Ermitteln Sie die Größe und den Namen der VM-Festplatte mithilfe von
sudo lvs --units B
.
** Der obige Befehl sollte die Größe genau in Bytes anzeigen. ** Der Laufwerksname des Computers befindet sich in der ersten Spalte der Liste, die Volume-Gruppe in der zweiten und die Größe in der letzten. ** Ermitteln Sie den Gerätenamen als / dev // ** Überprüfen Sie ihn mit einem 'll'-Befehl. Beispiel für diese Ausgabe: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Pool Ursprungsdaten% Meta% Move Log Cpy% Sync Convert
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
Erste Schritte auf dem Zielhost
- Melden Sie sich beim Zielhost an, z
ssh user@darth.domainname.com.au
- Bleiben Sie als Ihr eigener Benutzer. dh werde nicht root.
Erstellen Sie eine Volume-Definitionsdatei, zB:
vi larry.domainname.com.au-vol.xml
oder nano larry.domainname.com.au-vol.xml
mit den folgenden Zeilen: HINWEIS - Sie müssen die Größe in Byte von der ursprünglichen VM übernehmen und in das folgende Skript einfügen. Der Befehl auf dem Quellcomputer für Größe lautete sudo lvs --units 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>
Hinweis: Diese Definition gilt für eine 69793218560-Byte-Festplatte für VM Larry. Ändern Sie sie nach Bedarf für die tatsächliche VM.
Hinweis: Der Name und der letzte Teil des Pfads müssen übereinstimmen und werden als neuer Laufwerksname verwendet.
Erstellen Sie die neue Festplatte aus der Definition mit
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
Es wird Vol larry.domainname.com.au aus larry.domainname.com.au-vol.xml angezeigt
Machen Sie die Datenträger-Gerätedatei zugänglich:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au
Bearbeiten Sie die kopierte XML-Definition, zB:
vi larry.xml
Suchen Sie die Festplattendefinition in der Datei (suchen Sie nach "source dev =") und ersetzen Sie das Gerät durch das soeben erstellte (Sie können ls / dev / centos / verwenden, um vm anzuzeigen), z. B .: / dev / drbd4 -> / dev / centos / larry.domainname.com.au
Dieser Brückenwechsel war einzigartig für unsere Situation.
** Suchen Sie in den Zeilengruppen der Benutzeroberfläche nach Verweisen auf "br1" und ändern Sie sie in "br0", z
Letzte Schritte auf dem Quellhost
Melden Sie sich beim Quellhost an, z
ssh user@chewie.domainname.com.au
Die beste Vorgehensweise wäre, die VM auf dem Quellhost herunterzufahren, bevor die endgültige Synchronisierung durchgeführt wird, dies ist jedoch nicht erforderlich. (Virsh Shutdown NameOfMachine)
Laden Sie das blocksync.py-Skript von https://gist.github.com/rcoup/1338263 herunter, sofern es nicht bereits auf dem Quellhost vorhanden ist
Wenn Ihr Benutzername beispielsweise user ist, kopieren Sie das Skript blocksync.py auf beide Rechner in / home / user und chown user: user und chmod 755 das Skript.
- Wenn nicht bereits auf dem Zielhost vorhanden, kopieren Sie ihn dorthin, z. B .:
scp -p blocksync.py user@10.10.10.38: blocksync.py
- Verwenden Sie diese Option, um die Quelldiskette auf die Zieldiskette zu kopieren, z
Befehl, der den Kopiervorgang ausführt
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Hinweis: Der erste Gerätename gilt für den Quellhost, wie aus dem Befehl 'lvs' ermittelt. Dieser stammt von einem [[chewie]] Quellenhost.
Hinweis: Dies wird zerstören , den Inhalt der Zielscheibe, stellen Sie sicher , dass /dev/mapper/centos-larry.domainname.com.au korrekt ist!
Hinweis: Die Synchronisierung dauert sehr lange - ungefähr 100 Sekunden pro Gigabyte, dh: 90 Minuten für eine 60-Gigabyte-Festplatte.
Sie können jedoch eine Synchronisierung durchführen, während die VM verwendet wird. Nachfolgende Synchronisierungen können bis zu 25 Prozent schneller sein
Das Skript druckt die verwendeten Parameter aus (möglicherweise wird eine Meldung zu einem veralteten Modul angezeigt, dies ist in Ordnung). Anschließend wird der verwendete Befehl ssh angezeigt und ausgeführt (in diesem Fall wird nur die Meldung "Nur autorisierte Mitarbeiter" angezeigt). Während der Synchronisierung werden eine laufende Anzahl kopierter Blöcke und die durchschnittliche Geschwindigkeit angezeigt. Abschließend wird eine Abschlussmeldung mit der Anzahl der Sekunden gedruckt, die sie benötigt hat.
Sachen zu wissen
Sie können die Synchronisierung mit STRG + C abbrechen und später neu starten, indem Sie den Befehl erneut ausführen
Letzte Schritte auf dem Zielhost
- Melden Sie sich beim Zielhost an, z
ssh user@darth.domainname.com.au
- Erstellen Sie die virtuelle Maschine, zB:
Virsh definieren larry.xml
- Starten Sie die neu definierte Maschine, zB:
Sudo Virsh starten Larry
- Markieren Sie diese Option, um beim Hochfahren des Hosts zu starten. Beispiel:
sudo virsh autostart larry
Hinweis: Möglicherweise müssen Sie die Details der VM an die neue Umgebung anpassen.