KVM

Aus ConfigWiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Erstellen einer neuen virtuellen Maschine)
(Klonen einer Linux-VM)
 
(8 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Beschrieben wird die Einrichtung unter Ubuntu 10.10. Andere Distributionen können ggf. abweichen.
 
Beschrieben wird die Einrichtung unter Ubuntu 10.10. Andere Distributionen können ggf. abweichen.
  
*Vorhandensein Device /dev/kvm  
+
===Unterstützung der Hardwarevirtualisierung prüfen===
 +
 
 +
Neben der CPU-Unterstützung ist die Hardwarevirtualisierung im BIOS zu aktivieren (siehe Allgemeines).
 +
Kann man nicht im BIOS nachschauen, z.B. Server bei Providern, ist das einfach durch Hinzufügen der entsprechenden Kernelmodule zu überprüfen.
 +
 
 +
bei Intel-CPUs:
 +
  # modprobe kvm-intel
 +
bei AMD-CPUs:
 +
# modprobe kvm-amd
 +
 
 +
Danach sind die entsprechenden Module geladen und '''/dev/kvm''' vorhanden:
 +
#  lsmod|grep kvm
 +
kvm_intel              39776  0
 +
kvm                  129640  1 kvm_intel
 +
# ls -l /dev/kvm
 +
crw-rw---- 1 root root 10, 232 2010-11-25 13:11 /dev/kvm
 +
 
 +
oder entsprechende Fehlermeldungen:
 +
# modprobe kvm-amd
 +
FATAL: Error inserting kvm_amd (/lib/modules/2.6.26-2-amd64/kernel/arch/x86/kvm/kvm-amd.ko): Operation not supported
 +
# lsmod|grep kvm
 +
kvm                  129640  0
 +
# ls -l /dev/kvm
 +
ls: cannot access /dev/kvm: No such file or directory
 +
# dmesg|grep kvm
 +
[1992066.916307] kvm: disabled by bios
 +
 
 +
Im Fehlerfall wird lediglich das allgemeine Modul '''kvm''' geladen, das Prozessorspezifische kann nicht geladen werden.
 +
Das Device ist nicht vorhanden und dmesg meldet die fehlende BIOS-Unterstützung.
 +
 
 +
===Virtuelles Netzwerk===
 +
 
 +
Damit die virtuellen Netzwerkinterfaces '''virbr*''' von libvirt gestartet werden können, wird das Paket '''dnsmasq-base''' benötigt.
  
 
===Erstellen einer neuen virtuellen Maschine===
 
===Erstellen einer neuen virtuellen Maschine===
Zeile 14: Zeile 46:
 
#Architektur auswählen
 
#Architektur auswählen
 
#Starten
 
#Starten
 +
 +
===Klonen einer Linux-VM===
 +
Die zu klonende VM muß ausgeschaltet sein. Beim klonen mit dem ''virt-manager'' ist darauf zu achten, daß sowohl der VM-Name, als auch der Image-Name angepaßt werden muß. Bei Verwendung von LVM statt Image-Dateien muß auch hier nur der Name des neuen LVs angegeben werden, das LV darf vorher nicht angelegt sein.
 +
 +
Das Klonen verursacht, vor allem bei einem Software-RAID, eine sehr hohe IO-Last und sollte daher in lastarmen Zeiten durchgeführt werden. Bei großen Images (auch LVs) ist u.U. eine automatisierte Installation effektiver.
 +
 +
====Anpassungen nach dem Klonen====
 +
Beim klonen werden keine Einstellungen in der VM angepaßt. Damit keine Konflikte auftreten müssen mindestens folgende Einstellungen, ausgehend von einer Minimalinstallation, angepaßt werden.
 +
 +
Änderung des aktuellen Hostnamens:
 +
~# hostname <HOST>
 +
 +
/etc/exim4/update-exim4.conf.conf:
 +
dc_other_hostnames='<HOST>.<DOMAIN>'
 +
 +
/etc/hostname:
 +
<HOST>
 +
 +
/etc/hosts:
 +
127.0.1.1 <HOST>.<DOMAIN> <HOST>
 +
 +
/etc/mailname:
 +
<HOST>.<DOMAIN>
 +
 +
SSH-Hostkeys neu erzeugen:
 +
~# rm /etc/ssh/ssh_host_*_key.*
 +
~# dpkg-reconfigure openssh-server
 +
 +
Bei einer statischen Netzwerkkonfiguration:
 +
~# ifdown eth0
 +
 +
/etc/network/interfaces:
 +
    address <IP-ADRESSE>
 +
 +
~# ifup eth0
 +
 +
Falls das Interface bei Squeeze nicht auftaucht, muß die Mac-Adresse der Netzwerkkarte in '''/etc/udev/rules.d/70-persistent-net.rules''' angepaßt werden.
 +
Sollte
 +
invoke-rc.d udev reload
 +
oder
 +
invoke-rc.d udev restart
 +
nach der Änderung nicht reichen, damit die Netzwerkkarte danach beim ''ifup eth0'' erkannt wird, ist ggf. ein Neustart nötig.
 +
 +
Bei Wheezy ist die Anpassung der udev-Regeln nicht mehr nötig, da dort keine Regel bzgl. Netzwerkkarte existiert.
 +
 +
===Virtueller Festplattenspeicher===
 +
 +
Die klassische Form ist ein Festplattenimage, welches eine Datei als Container für die virtuelle Festplatte verwendet. Da die Datei durch das Filesystem des Hosts verwaltet wird, ist diese zusätzliche Schicht mit Performanceverlust verbunden.
 +
 +
Alternativ kann z.B. auch eine LVM Volume Group als Speicherpool hinzugefügt werden. Statt einer Image-Datei wird dann ein Logical Volume angelegt und dieses als virtuelle Festplatte genutzt. Als Geschwindigkeitstest wurde eine W2k3-VM auf beide Speichertypen geklont und anschließend parallel defragmentiert. LVM war dabei in der VM sichtbar ca. doppelt so schnell und auch iotop zeigte den selben Faktor zwischen den beiden kvm-Prozessen.
 +
 +
===Treiber für Windows-Gastsysteme===
 +
 +
Eine Anleitung zur Installation und ISO-Images zum Download:
 +
 +
http://www.linux-kvm.com/content/using-vmware-vga-kvm-windows-guests

Aktuelle Version vom 18. April 2012, 17:54 Uhr

Beschrieben wird die Einrichtung unter Ubuntu 10.10. Andere Distributionen können ggf. abweichen.

Inhaltsverzeichnis

[Bearbeiten] Unterstützung der Hardwarevirtualisierung prüfen

Neben der CPU-Unterstützung ist die Hardwarevirtualisierung im BIOS zu aktivieren (siehe Allgemeines). Kann man nicht im BIOS nachschauen, z.B. Server bei Providern, ist das einfach durch Hinzufügen der entsprechenden Kernelmodule zu überprüfen.

bei Intel-CPUs:

# modprobe kvm-intel

bei AMD-CPUs:

# modprobe kvm-amd

Danach sind die entsprechenden Module geladen und /dev/kvm vorhanden:

#  lsmod|grep kvm
kvm_intel              39776  0 
kvm                   129640  1 kvm_intel
# ls -l /dev/kvm
crw-rw---- 1 root root 10, 232 2010-11-25 13:11 /dev/kvm

oder entsprechende Fehlermeldungen:

# modprobe kvm-amd
FATAL: Error inserting kvm_amd (/lib/modules/2.6.26-2-amd64/kernel/arch/x86/kvm/kvm-amd.ko): Operation not supported
# lsmod|grep kvm
kvm                   129640  0 
# ls -l /dev/kvm
ls: cannot access /dev/kvm: No such file or directory
# dmesg|grep kvm
[1992066.916307] kvm: disabled by bios

Im Fehlerfall wird lediglich das allgemeine Modul kvm geladen, das Prozessorspezifische kann nicht geladen werden. Das Device ist nicht vorhanden und dmesg meldet die fehlende BIOS-Unterstützung.

[Bearbeiten] Virtuelles Netzwerk

Damit die virtuellen Netzwerkinterfaces virbr* von libvirt gestartet werden können, wird das Paket dnsmasq-base benötigt.

[Bearbeiten] Erstellen einer neuen virtuellen Maschine

  1. Installationsabbild wählen
  2. Pfad zum Installationsabbild wählen
  3. Betriebssystem auswählen
  4. Version auswählen
  5. RAM zuteilen
  6. Anzahl der CPUś festlegen
  7. virtuellen Festplattenspeicher zuweisen
  8. Wichtig! Virtualisierungstyp kvm wählen
  9. Architektur auswählen
  10. Starten

[Bearbeiten] Klonen einer Linux-VM

Die zu klonende VM muß ausgeschaltet sein. Beim klonen mit dem virt-manager ist darauf zu achten, daß sowohl der VM-Name, als auch der Image-Name angepaßt werden muß. Bei Verwendung von LVM statt Image-Dateien muß auch hier nur der Name des neuen LVs angegeben werden, das LV darf vorher nicht angelegt sein.

Das Klonen verursacht, vor allem bei einem Software-RAID, eine sehr hohe IO-Last und sollte daher in lastarmen Zeiten durchgeführt werden. Bei großen Images (auch LVs) ist u.U. eine automatisierte Installation effektiver.

[Bearbeiten] Anpassungen nach dem Klonen

Beim klonen werden keine Einstellungen in der VM angepaßt. Damit keine Konflikte auftreten müssen mindestens folgende Einstellungen, ausgehend von einer Minimalinstallation, angepaßt werden.

Änderung des aktuellen Hostnamens:

~# hostname <HOST>

/etc/exim4/update-exim4.conf.conf:

dc_other_hostnames='<HOST>.<DOMAIN>'

/etc/hostname:

<HOST>

/etc/hosts:

127.0.1.1	<HOST>.<DOMAIN>	<HOST>

/etc/mailname:

<HOST>.<DOMAIN>

SSH-Hostkeys neu erzeugen:

~# rm /etc/ssh/ssh_host_*_key.*
~# dpkg-reconfigure openssh-server

Bei einer statischen Netzwerkkonfiguration:

~# ifdown eth0

/etc/network/interfaces:

    address <IP-ADRESSE>
~# ifup eth0

Falls das Interface bei Squeeze nicht auftaucht, muß die Mac-Adresse der Netzwerkkarte in /etc/udev/rules.d/70-persistent-net.rules angepaßt werden. Sollte

invoke-rc.d udev reload

oder

invoke-rc.d udev restart

nach der Änderung nicht reichen, damit die Netzwerkkarte danach beim ifup eth0 erkannt wird, ist ggf. ein Neustart nötig.

Bei Wheezy ist die Anpassung der udev-Regeln nicht mehr nötig, da dort keine Regel bzgl. Netzwerkkarte existiert.

[Bearbeiten] Virtueller Festplattenspeicher

Die klassische Form ist ein Festplattenimage, welches eine Datei als Container für die virtuelle Festplatte verwendet. Da die Datei durch das Filesystem des Hosts verwaltet wird, ist diese zusätzliche Schicht mit Performanceverlust verbunden.

Alternativ kann z.B. auch eine LVM Volume Group als Speicherpool hinzugefügt werden. Statt einer Image-Datei wird dann ein Logical Volume angelegt und dieses als virtuelle Festplatte genutzt. Als Geschwindigkeitstest wurde eine W2k3-VM auf beide Speichertypen geklont und anschließend parallel defragmentiert. LVM war dabei in der VM sichtbar ca. doppelt so schnell und auch iotop zeigte den selben Faktor zwischen den beiden kvm-Prozessen.

[Bearbeiten] Treiber für Windows-Gastsysteme

Eine Anleitung zur Installation und ISO-Images zum Download:

http://www.linux-kvm.com/content/using-vmware-vga-kvm-windows-guests

Meine Werkzeuge