Bei der Live-Migration wird eine laufende virtuelle Maschine (VM) von einem physischen Server auf einen anderen verschoben, ohne die Verfügbarkeit der virtuellen Maschine für Benutzer zu beeinträchtigen. Das Ziel einer VM-Live-Migration besteht darin, die Durchführung von Wartungsarbeiten oder Upgrades auf einer VM zu ermöglichen, ohne dass Benutzer der virtuellen Maschine während der Migration Ausfallzeiten haben. Live-Migrationen werden auch als nahtlose Live-Migrationen bezeichnet, wenn während des Migrationsprozesses keine erkennbaren Ausfallzeiten für den Endbenutzer auftreten.
Anforderung:
- Unterstützen Sie die Hardwarevirtualisierung.
- Verwenden Sie Prozessoren des gleichen Herstellers. Zum Beispiel alle AMD oder alle Intel.
- Gehören zu derselben Active Directory-Domäne oder zu Domänen, die sich gegenseitig vertrauen.
- Virtuelle Maschinen müssen für die Verwendung von virtuellen Festplatten oder virtuellen Fibre Channel-Festplatten (keine physischen Festplatten) konfiguriert sein.
Überblick:
Live-Migrations-Setup findet statt. Während der Installation der Live-Migration stellt der Quellserver eine Verbindung mit dem Zielserver her. Diese Verbindung überträgt die Konfigurationsdaten der virtuellen Maschine an den Zielserver. Auf dem Zielserver ist eine virtuelle Skelettmaschine eingerichtet, und der virtuellen Zielmaschine wird Speicher zugewiesen.
Speicherseiten werden vom Quellknoten zum Zielknoten übertragen. In der zweiten Phase einer Live-Migration wird der der migrierenden virtuellen Maschine zugewiesene Speicher über das Netzwerk auf den Zielserver kopiert. Dieser Speicher wird als "Arbeitssatz" der migrierenden virtuellen Maschine bezeichnet. Eine Speicherseite ist 4 KB.
Geänderte Seiten werden übertragen. Die dritte Phase einer Live-Migration ist ein Speicherkopieprozess, bei dem die verbleibenden modifizierten Speicherseiten für „Test Virtual Machine“ auf den Zielserver kopiert werden. Der Quellserver überträgt den CPU- und Gerätezustand der virtuellen Maschine an den Zielserver.
Das Speicher-Handle wird vom Quellserver zum Zielserver verschoben. Während der vierten Phase einer Live-Migration wird die Steuerung des mit „Test Virtual Machine“ verknüpften Speichers, wie etwa virtuelle Festplattendateien oder physischer Speicher, der über einen virtuellen Fibre Channel-Adapter angeschlossen ist, auf den Zielserver übertragen.
Die virtuelle Maschine wird auf dem Zielserver online geschaltet. In der fünften Phase einer Live-Migration verfügt der Zielserver jetzt über das aktuelle Arbeitspaket für "Test Virtual Machine" sowie den Zugriff auf den von "Test Virtual Machine" verwendeten Speicher. An dieser Stelle "Test Virtual" Maschine ”wird fortgesetzt.
Netzwerkbereinigung erfolgt. In der letzten Phase einer Live-Migration wird die migrierte virtuelle Maschine auf dem Zielserver ausgeführt. Zu diesem Zeitpunkt wird eine Nachricht an den Netzwerk-Switch gesendet. Diese Nachricht bewirkt, dass der Netzwerk-Switch die neuen MAC-Adressen der migrierten virtuellen Maschine abruft, sodass der Netzwerkverkehr von und zur „Test Virtual Machine“ den richtigen Switch-Port verwenden kann.
Die folgenden Variablen können die Geschwindigkeit der Livemigration beeinflussen:
• Anzahl der modifizierten Seiten auf der virtuellen Maschine, die migriert werden sollen: Je größer die Anzahl der modifizierten Seiten ist, desto länger verbleibt die virtuelle Maschine im Migrationsstatus.
• Verfügbare Netzwerkbandbreite zwischen Quell- und Zielservern.
• Hardwarekonfiguration der Quell- und Zielserver.
• Laden auf Quell- und Zielserver.
• Verfügbare Bandbreite (Netzwerk oder Fibre Channel) zwischen Servern und gemeinsam genutztem Speicher.
SCHRITTE :
Erstellen eines NFS-Pool-Speichers: NFS-Pools sind Speicherressourcen, die von OVP-Hosts bereitgestellt werden und von virtuellen Maschinen zu Speicherzwecken verwendet werden.
1.1 Setup-NFS-Pool-Verzeichnis. Erstellen Sie das Poolverzeichnis.
# mkdir -p /export/x86-64-kvm-guest-pool
Bearbeiten Sie / etc / exports, um die entsprechende Exportzeile hinzuzufügen.
# cat /etc/exports /export/x86-64-kvm-guest-pool *(rw,no_subtree_check,insecure,no_root_squash)
Teilen Sie dem NFS-Server mit, die Exportkonfigurationsdatei erneut zu laden.
# exportfs –a
1.2 Stellen Sie eine Verbindung zum QEMU-Hypervisor her.
# virsh connect qemu:///system
1.3 Laden Sie die Konfigurationsdatei für den NFS-Pool.
Es wird empfohlen, vor dem Laden der Konfigurationsdatei zu überprüfen, dass die Variable POOL_HOST einen vollständig qualifizierten Namen und nicht einen lokalen Namen wie localhost enthält. Durch die Verwendung vollständig qualifizierter Namen können virtuelle Maschinen die erforderlichen Speicherressourcen finden, selbst wenn sie über verschiedene OVP-Hosts migrieren.
# cat xmlDir/x86-64-kvm-guest-pool.xml <pool type="netfs"> <name>x86-64-kvm-guest-pool</name> <source> <host name='HOST_NAME'/> <dir path='/export/x86-64-kvm-guest-pool/'/> </source> <target> <path>/export/images/</path> </target> </pool> # virsh pool-define xmlDir/x86-64-kvm-guest-pool.xml
HINWEIS: Alle Beispieldateien mit Standardwerten generieren.
# libvirt-xml-examples # ls x86-64-kvm-guest-glusterfs-qcow2.xml x86-64-kvm-guest-local-qcow2.xml x86-64-kvm-guest-nfs-qcow2.xml x86-64-kvm-guest-pool x86-64-kvm-guest-glusterfs-raw.xml x86-64-kvm-guest-local-raw.xml x86-64-kvm-guest-nfs-raw.xml x86-64-kvm-guest-pool.xml
1.4 Starten Sie den Speicherpool
# virsh pool-start x86-64-kvm-guest-pool
Hinweis: Bei virsh handelt es sich um ein Befehlszeilenschnittstellentool zum Verwalten von virtuellen Gastmaschinen und des Hypervisors. Das Befehlszeilenprogramm virsh basiert auf der libvirt-Verwaltungs-API und ist eine Alternative zum Befehl qemu-kvm und zur grafischen Virt-Manager-Anwendung.
1.5 Erstellen Sie das Speichervolume im Speicherpool x86-64-kvm-guest-pool.
# virsh vol-create-as x86-64-kvm-guest-pool x86-64-kvm-guest-vda.raw 10G --format raw
Starten einer virtuellen Maschine auf dem Quellserver.
2.1 Erstellen Sie eine Linux Bridge für die Netzwerkverbindung zur VM
brctl addbr <BRIDGE_NAME> ifconfig <INTERFACE_NAME> 0.0.0.0 promisc up brctl addif <BRIDGE_NAME> <INTERFACE_NAME> ifconfig <BRIDGE_NAME> <BRIDGE_IP> up
2.2 Bearbeiten Sie die Konfigurationsdatei der virtuellen Maschine.
# cp x86-64-kvm-guest-nfs-raw.xml <NAME_FOR_CONF_FILE>.xml #vim <NAME_FOR_CONF_FILE>.xml <domain type='kvm'> <name>L2_VM2</name> -name for VM ……… <cpu mode='custom' match='exact'> <model fallback='allow'>Conroe</model> <topology sockets='1' cores='3' threads='1'/> - assign vcpus to VM </cpu> …….. <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='….*iso' startupPolicy='optional'> - mention ISO file </source> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <boot order='1'/> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk>
…… .. -. Hier weisen Sie den in Abschnitt 1.5 erstellten Speicher zu. VDA ……. - Vergeben Sie einen Namen für die in Abschnitt 2.1 erstellte Bridge. - eindeutig für jede virtuelle Maschine
2.3 Starten Sie die virtuelle Maschine.
2.3.1 Verbinden Sie sich mit dem qemu Hypervisor.
# virsh connect qemu:///system
2.3.2 Laden Sie die Konfigurationsdatei der virtuellen Maschine.
#virsh define xmlDir/x86-64-kvm-guest-nfs-raw.xml - created in section 2.2
2.3.3 Starten Sie die VM.
Dies ist der erste Start der virtuellen Maschine, der das Image des Installationsprogramms lädt. Gastabbild installieren
#virsh start VM_NAME
Überprüfen Sie, ob die virtuelle Maschine läuft. #virsh list Id Name State ------------------------------------------ -------- 8 x86-64-kvm-guest, der ausgeführt werden kann. Kann über eine vnc-Sitzung auf die GUI der virtuellen Maschine zugreifen: - vnc-port 5900.
2.4.4 Nach erfolgreicher Installation des Betriebssystems. Bearbeiten Sie die Konfigurationsdatei der virtuellen Maschine.
<devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='….*iso' startupPolicy='optional'> - remove ISO file name . </source> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <boot order='1'/> <alias name='ide0-1-0'/>
Folgen Sie dem in Abschnitt 2.3 genannten Schritt, um die virtuelle Maschine zu starten.
Migrieren der virtuellen Maschine
In dieser Übung wird davon ausgegangen, dass der x86-64-kvm-guest der virtuellen Maschine auf dem OVP-Knoten SOURCE_HOST ausgeführt wird und live zum OVP-Knoten TARGET_HOST migriert werden soll. Bevor Sie mit diesem Abschnitt fortfahren, vergewissern Sie sich, dass beide Maschinen für einander zugänglich sind.
3.1 Erstellen Sie eine Brücke mit demselben Namen in TARGET_HOST wie in Abschnitt 2.1 erstellt.
3.2 Aktivieren Sie den gemeinsam genutzten NFS-Pool auf dem TARGET_HOST.
# scp xmlDir/x86-64-kvm-guest-pool.xml root@TARGET_HOST_IP:xmlDir.
Folgen Sie den Abschnitten 1.3 und 1.4 von Target_HOST.
3.3 Starten Sie am SOURCE_HOST die Migration.
# virsh migrate --live \ --p2p \ // interface name used for migration --verbose \ --x86-64-kvm-guest \ qemu+tcp://TARGET_HOST/system
Stellen Sie sicher, dass die Migration erfolgreich war. Führen Sie den Befehl auf TARGET_HOST aus.
#virsh list Id Name State ---------------------------------------------------- 8 x86-64-kvm-guest running