Springe zum Inhalt

1

Bei der Arbeit mit virtuellen Maschinen benutzt man häuftig SSH zur Fernwartung. Was aber nun, wenn grundlegende Einstellungen geändert wurden und nach einem Neustart die VM gar nicht erst komplett startet, der SSH-Daemon also auch noch nicht läuft und kein Remote-Zugang möglich ist? Dann wäre ein Zugang zur Konsole der VM hilfreich.

...weiterlesen "VM-Konsolenzugang mit libvirt"

Merkzettel für das Einrichten einer Bridge für libvirt (damit VMs auch ohne NAT mit der Außenwelt reden können bzw. die VM auch von außen ohne Kunstgriffe erreichbar ist):

  • Network-Manager stoppen und deaktivieren:
    1. systemctl stop NetworkManager.service
    2. systemctl disable NetworkManager.service
  • Interface Settings manuell in /etc/network/interfaces eintragen, Bridge-Parameter angeben und Nameserver manuell festlegen:
    1. auto br0
    2.      address 192.168.0.10
    3.      netmask 255.255.255.0
    4.      gateway 192.168.0.1
    5.      bridge_ports enp3s0
    6.      bridge_stp on
    7.      bridge_maxwait 0
    8.      dns-search local
    9.      dns-nameserver 192.168.0.1
  • Rechner neustarten

Die Bridge sollte nun korrekt konfiguriert sein und folgendermaßen aussehen:

  1. # ifconfig br0
  2. br0       Link encap:Ethernet  Hardware Adresse 50:xx:xx:xx:xx:xx  
  3.           inet Adresse:192.168.0.10  Bcast:192.168.0.255  Maske:255.255.255.0
  4.           inet6-Adresse: fe80::xxxx:xxxx:xxxx:xxxx/64 Gültigkeitsbereich:Verbindung
  5.           inet6-Adresse: 2003:86:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Gültigkeitsbereich:Global
  6.           inet6-Adresse: 2003:86:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Gültigkeitsbereich:Global
  7.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
  8.           RX-Pakete:39478 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
  9.           TX-Pakete:41158 Fehler:0 Verloren:0 Überläufe:0 Träger:0
  10.           Kollisionen:0 Sendewarteschlangenlänge:1000 
  11.           RX-Bytes:42091131 (42.0 MB)  TX-Bytes:6646905 (6.6 MB)
  12.  
  13. # brctl show br0
  14. bridge name	bridge id		STP enabled	interfaces
  15. br0             8000.50xxxxxxxxxx       yes             enp3s0

Anschließend kann die Bridge dann auch virtuellen Maschinen mit z.B. virt-manager zugewiesen werden:

Bridge Interface in virt-manager

36

Mit libvirt bzw. deren Kommandozeilen-Interface virsh kann ein Backup der VMs im laufenden Betrieb durchgeführt werden. Das nachfolgende Script stellt ein Grundgerüst, angeregt durch einen Artikel von Christian Rößner, für ein Backup nach der folgenden Methode zur Verfügung:

Es wird zuerst ein Snapshot aller Volumes einer VM angelegt. Dadurch besteht jedes Volume aus (mindestens) zwei Dateien: eine Datei mit den originalen Daten und eine zweite Datei, welche alle Änderungen gegenüber dem Originalvolume ab dem Erstellen des Snapshots enthält. Das Originalvolume wird bei aktivem Snapshot nicht mehr beschrieben, es kann nun problemlos gesichert werden. Zum Kopieren kann "cp -f --sparse=always ..." oder, sofern verfügbar, "rsync --sparse ..." zum Einsatz kommen. Beide Kommandos behandeln freien Platz in den Volumes optimal, rsync ist jedoch um einiges schneller, wenn im Backup-Verzeichnis bereits vom vorherigen Backup schon die gleiche Datei vorhanden ist, da dann nur die Änderungen kopiert werden. Anschließend werden mit einem sogenannten Blockcommit die im Snapshot als Änderungen geschriebene Blöcke in das Originalvolume wieder eingearbeitet. Das alles kann im laufenden Betrieb vom Host der VMs aus durchgeführt werden.

...weiterlesen "Backup der VMs im laufenden Betrieb mit libvirt"

Beim Anlegen von virtuellen Maschinen mit virt-manager wird standardmäßig in der VM eine Grafikkarte mit dem Treiber QXL erstellt und die Anzeige auf Spice gestellt. Das ist ansich gut so, denn diese Kombination ist aktuell die schnellste Möglichkeit, grafische Elemente einer VM darzustellen. Wenn man dann in der VM arbeitet kann es jedoch vorkommen, dass einzelne Buchstaben in der Anzeige fehlen und das auch noch unabhängig davon, ob man nun virt-viewer oder spicec zur Anzeige des VM-Bildschirms verwendet:

KVM fehlende Buchstaben

Der Fehler liegt im QXL-Treiber. Dieser kann aktuell nicht richtig mit Composite umgehen. Abhilfe schafft, dem Kernel der VM einen Parameter hinzuzufügen:

  1. hinzufügen von "nomodeset" zu GRUB_CMDLINE_LINUX_DEFAULT in /etc/defaults/grub
  2. "update-grub" zur Aktualisierung von Grub

Nach einem Neustart der VM wirkt der neue Kernelparameter dann und der oben beschriebene Fehler tritt nicht mehr auf.

Weitere Informationen: