Vollbildmodus: Seiteninhalt ohne Menus

Kernel-based Virtual Machine (KVM) unter Linux

Die Kernel-based Virtual Machine (KVM) ist eine Linux-Kernel-Infrastruktur für Virtualisierung und läuft auf x86-Hardware mit den Hardware-Virtualisierungstechniken von Intel (VT) oder AMD (AMD-V). KVM wurde im Oktober 2006 veröffentlicht und ist ab Version 2.6.20 des Linux-Kernels enthalten. Entwickelt wird es von dem israelischen Unternehmen Qumranet und steht dort unter Beaufsichtigung von Avi Kivity. Qumranet wurde im September 2008 von Red Hat gekauft.

Bestandteile der KVM sind die Kernel-Module kvm.ko (das aber auch unter älteren Linux-Versionen laufen soll) sowie die hardwarespezifischen Module kvm-intel.ko oder kvm-amd.ko. KVM selbst nimmt keine Emulation vor, sondern stellt nur die Infrastruktur dazu bereit; ein modifiziertes QEMU ist derzeit die einzige Möglichkeit, diese zu nutzen. Nach dem Laden des Moduls arbeitet der Linux-Kernel selbst als Hypervisor für virtuelle Maschinen. Als Gastsysteme unterstützt KVM Linux (32 und 64 Bit), Windows (32 Bit), Haiku OS, AROS, ReactOS, FreeDOS, Solaris und diverse BSD-Derivate. KVM läuft auch auf SMP-Hostsystemen, SMP-Gastsysteme sind ebenfalls möglich. Die Unterstützung für Paravirtualisierung ist mittlerweile in KVM vorhanden.

:!: KVM an sich stellt „nur“ die direkte Schnittstelle zum Linux-Kernel zur Verfügung, als Virtualisierungsumgebung kommt Qemu zum Einsatz. Lediglich der Aufruf erfolgt nicht mit „qemu“ sondern stattdessen mit „kvm“.

KVM unterstützt CPU-Erweiterungen, wie zum Beispiel

  • Page Tables (Nested Page Tables - AMD, Extended Paging Tables - Intel) - Page Tables dienen der Übersetzung von Gast- in Host-Adressen. Dadurch wird der Hypervisor von der Aufgabe entlastet jede Adressanfrage eines Gast-Systems über eine Shadow Page Table zu ermitteln.
  • IOMMU (I/O Memory Mapping Unit)
  • Außerdem ist Kernel Samepage Merging (KSM) in den Linux-Kernel ab Version 2.6.32 integriert. KSM legt identische Speicherbereiche zusammen. Dadurch wird mehr Arbeitsspeicher den virtuellen Maschinen zur Verfügung gestellt als physikalischer Speicher zur Verfügung steht.

KVM und diese CPU-Erweiterungen ermöglichen die Nested Virtualization. Das heißt, in einer virtuellen Umgebung laufen wiederum Virtualisierungslösungen. Eine Kernel-based Virtual Machine kann also unter einer Kernel-based Virtual Machine gestartet werden und virtuelle Maschinen beinhalten.

Quelle (die beiden letzten Absätze): Die Kernel-based Virtual Machine im Aufwind aus dem quemu-Buch Lizenz: GNU-FDL 1.2

Die Bestandteile von KVM sind Open-Source-Software und stehen unter verschiedenen Varianten der GPL-Lizenz zur Verfügung:

  • KVM-Kernel-Modul: GPL v2
  • KVM-Benutzer-Modul: LGPL v2
  • QEMU CPU-Bibliothek (libqemu.a) und QEMU-PC-Emulator: LGPL
  • Linux-Usermode von QEMU: GPL
  • BIOS-Dateien (bios.bin, vgabios.bin und vgabios-cirrus.bin): LGPL v2 oder neuer

aus Wikipedia, der freien Enzyklopädie.

Links

Sicherheit

Anbieter

Installation

Folgende Pakete müssen installiert werden:

  • kvm
  • qemu (universe)
aptitude install kvm qemu

Voraussetzungen

  1. überprüfen, ob man selber Mitglied in der Gruppe „kvm“ ist (sonst kommt Fehlermeldung open /dev/kvm: Permission denied)
  2. kvm-Kernelmodul muss geladen sein. Unterstützt der Prozessor Hardwarevirtualisierung, so werden in der Regel die beiden benötigten Kernel-Module beim Start des Systems automatisch geladen. Dies kann man mit folgendem Befehl prüfen:
lsmod | grep kvm

Die Ausgabe sollte dann so aussehen:

  • für Intel-Prozessoren:
  kvm
  kvm_intel
  • für AMD-Prozessoren:
  kvm
  kvm_amd

Sollten die Module nicht geladen sein, so muss man dies von Hand nachholen.

Verwaltung

  • mit libvirt (Paket libvirt-bin) und virsh:
    • lokales System
       virsh --connect qemu:///system 

Unterstützte Gastsysteme

Die Unterstützung der Gastsystem variiert nach der eingesetzten KVM-Version.

  • Ubuntu 8.04 LTS: KVM 62
  • Ubuntu 8.10: KVM 72.
  • Ubuntu 9.04: KVM 84
  • Ubuntu 9.10: KVM 84
  • Debian 5 („lenny“): KVM 72

Eine umfangreiche Übersicht über alle mögliche Gastsyteme findet man auf dieser Seite im KVM-Wiki.

Performance

  • scheduler der gäste auf „noop“ setzen (der Host kümmert sich bereits um optimalen Zugriff):
  • caching der Disk anpassen
  • „Kernel SamePage Merging“ aktivieren:
    • echo 1 > /sys/kernel/mm/ksm/run
    • Statistiken anzeigen:
      for ii in /sys/kernel/mm/ksm/* ; do echo -n "$ii: " ; cat $ii ; done

Links:

Vor- und Nachteile gegenüber Xen

  • Performance

Features vorhanden?

Testen:

  1. Gäste in
    1. LVM-Volumes (soll mit qemu-system-x86_64 gehen)
    2. oder sparse Images als Datenträger
    3. qemu-img konvertiert Plattenformate inkl. raw hin und her
  2. Snapshots?
    1. bridged
    2. routed
    3. private net with guest
  3. Konsole auf Gäste
    1. eine virtuelle Konsole an Gäste anhängen
    2. VNC
  4. Verwaltung der Gäste
    1. Managementscripte
    2. create/shutdown/destroy/pause/resume mem-max, mem-set

ubuntu kvm builder

FIXME

 
kvm/kvm.txt · Zuletzt geändert: 2013/05/03 19:46 von st
 
Backlinks: [[kvm:kvm]]