KVM

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

KVM (Kernel-based Virtual Machine) ist ein Schnittstelle für qemu, so dass ein vorhandener Hardwaresupport für die Virtualisierung genutzt werden. Das funktioniert allerdings nur mit neueren Intel oder AMD CPUs, die Hardwarevirtualisierung unterstützen.

Es sollte mal eben schnell eine Virtualisierung von Windows 2003 Server und RedHat ES5 für einen Test implementiert werden.

Preludium

Bei manchen Mainboards kann man im BIOS die Virtualisierung abschalten, diese muss aktiviert sein, sonst gibt es bei der Installation von KVM eine Fehlermeldung.

Wie bei Debian üblich, ist mit aptitude ein Paket zu installieren:

 kvm

Der default - out of the Box - Debian Kernel hat bereits alle notwendigen Module, so dass hier keine Compilierungsorgien notwendig werden.

Installation des Gast OS

Im Beispiel soll ein Windows 2003 Server installiert werden. Dazu wird erst einmal eine virtuelle Festplatte gebraucht:

 kvm-img create /kvm/hda.img -f qcow 10G

Das geht sehr schnell, weil hier das File bei Bedarf einfach größer wird. Der KVM Start erfordert dagegen eine etwas längere Kommandozeile:

 kvm -no-acpi -m 1024 -cdrom /iso/w2k3sp2.iso -hda /kvm/hda.img \
   -usbdevice tablet -vnc :1 -alt-grab  \
   -net nic -net tap,ifname=qtap0 \
   -boot d

Mangels Bootsektor bootet KVM zunächst von der virtuellen CD-ROM. Damit man etwas sieht, braucht man auf dem lokalen PC einen vnc Client, z.B. xtightvncviewer. Damit man nun Windows installieren kann, wird mit

 vncviewer 192.168.1.99:1

die Konsole gestartet. Zunächst aber erst einmal eine Erklärung der verwendeten Parameter:

  • -no-acpi sorgt dafür, dass ACPI keine Probleme macht. Vor- oder nachgehende Uhren sind noch die harmloseste Variante ;-)
  • -m 1024 gibt dem Gast OS 1 GByte RAM
  • -cdrom /iso/w2k3sp2.iso legt ein virtuelles CD-ROM Laufwerk an. Im Beispiel ist das ein Image einer Windows 2003 CD-ROM.
  • -hda /kvm/hda.img mappt /kvm/hda.img als virtuelle IDE Platte hda
  • -usbdevice tablet ersetzt die Mausemulation durch eine Digitizer Emulation. Damit funktioniert vnc einfach besser und hat keine Nachteile.
  • -net nic legt eine virtualisierte Netzwerkkarte (default RTL8139) an, das ist die Netzwerkkarte, die das Gast OS sieht
  • -net tap,ifname=qtap0 installiert auf dem Host ein Interface qtap0, das eine IP-Adresse erhalten sollte. Diese Adresse kann vom Gast OS dann als Defaultroute und ggf. DNS verwendet werden.
  • -boot d lässt die virtuelle Maschine booten

Mit iptables kann man dann noch eine Firewall sowie IP-NAT konfigurieren, so dass die VM dann Zugriff auf das Internet hat, sowie ggf. aus dem Internet auch erreichbar ist.

Im Falle von Windows dann aber vorher unbedingt alle aktuellen Patches installieren. Sinnvoll ist auch die Aktivierung von Remote Desktop, denn vnc ist im Notfall ganz hilfreich, aber mit rdesktop/tsclient kann man besser arbeiten.

Ergebnisse

Die Performance kann sich sehen lassen, obwohl ich von qemu bisher nicht so begeistert war, die Kombination kvm/qemu sorgt aber für eine extreme Beschleunigung.

KVM als normaler User für Ubuntu

Windows

Während der Installation von Windows kann der VNC Client gelegentlich abstürzen. Das macht aber nichts, einfach den Client neu starten. Die Windows Installation wird dadurch nicht beeinträchtigt.

Christian