Paravirtualisierte Gerätetreiber, virtio, virtio_pci, virtio_ring, virtio_net, virtio_blk, virtio_balloon, Memory Balloning
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Virtuelle Hardware/ Paravirtualisierte Gerätetreiber]])
Inhaltsverzeichnis |
[bearbeiten] Paravirtualisierte Gerätetreiber
Die Kernel-based Virtual Machine unterstützt normalerweise nicht die Paravirtualisierung. Der Einsatz von paravirtualisierten Gerätetreibern ist aber möglich. Die Vorteile dieser Treiber sind der geringere Overhead und die höhere Performance. Erst die Verfügbarkeit von Hardware-Erweiterungen, wie IOMMU, machen den Einsatz von paravirtualisierten Gerätetreibern überflüssig.
[bearbeiten] Virtio-Treiber für Microsoft Windows
Download: http://www.linux-kvm.com/content/tip-how-setup-windows-guest-paravirtual-network-drivers
Für Microsoft Windows 2000/XP wird ein spezieller Netzwerktreiber angeboten. Dieser ist im Gast-System zu installieren. Bei der Optionen -net nic ist der Parameter model=virtio hinzuzufügen.
Host ~$ kvm Platte.img -net nic,model=virtio....
[bearbeiten] Virtio-Module für Linux
Bei Linux als Gast-System wird Virtio verwendet. Virtio ist ein Paravirtualisierungs-Interface, mit dem nur ein Satz von Gast-Treiber entwickelt werden muss. Diese Treiber können von mehreren Virtualisierungslösungen verwendet werden. Diese paravirtualsierten Gerätetreiber sind nur für Linux-Gast-Systeme mit einer Kernel-Version ab 2.6.25 verfügbar.
[bearbeiten] Paravirtualisierte Netzwerkkarten
Im Gast-System müssen folgende Module geladen werden: virtio, virtio_pci, virtio_ring, virtio_net und virtio_blk. Dazu muss der Option -net nic der Parameter model=virtio hinzugefügt werden.
Host ~$ kvm Platte.img -net nic,model=virtio -net tap,ifname=tap01
[bearbeiten] Paravirtualisierte Block-Devices
Paravirtualisierte Block-Devices werden mit der Option -drive ... if=virtio aktiviert.
Host ~$ kvm -drive file=Platte.img,if=virtio,boot=on
Im Gast-System überprüft man, ob die entsprechenden Module geladen wurden.
Gast ~$ lsmod | grep virtio virtio_blk 16392 0 virtio_pci 17668 0 virtio_ring 12928 1 virtio_pci virtio 14336 3 virtio_blk,virtio_net,virtio_pci
Bei Verwendung von Virtio Block Devices sollte im Linux-Gast das File-System ext3 verwendet werden. Das File-System XFS ist nicht zu empfehlen, da es ein intensives Write-Caching betreibt. Bei einem plötzlichen Ausfall der virtuellen Maschine kann dies zu Problemen führen.
[bearbeiten] Memory Ballooning
Mit Memory Ballooning bezeichnet man die Größenänderung des Arbeitsspeichers des laufenden Gast-Systems. QEMU und die Kernel-based Virtual Machine unterstützen das Memory Ballooning nur für Linux-Gäste. Auf dem Host-System muss ein Kernel ab der Version 2.6.27 installiert sein. Aktiviert wird das Memory Ballooning mit der Option -balloon virtio[,addr=str]. Optional kann mit addr die PCI-Device-Adresse vorgegeben werden.
Host ~$ qemu Platte.img -balloon virtio
Auf dem Gast-System ist das Kernel-Modul virtio_balloon zu laden.
Gast ~# modprobe virtio_balloon
Im QEMU-Monitor ermittelt und ändert man die Größe des Arbeitsspeichers. Eine Vergrößerung des Arbeitsspeichers über den mit der Option -m vorgegebenen Wert ist nicht möglich. Im folgenden Beispiel wird die Größe des Arbeitsspeichers von 512 MByte RAM auf 256 MByte RAM verringert.
(qemu) info balloon balloon: actual=512 (qemu) balloon 256 (qemu) info balloon balloon: actual=256
Die Größe des Arbeitsspeichers kann im Gast-System mit dem Befehl free kontrolliert werden.
Gast ~$ free
total ...
Mem: 252292 ...
Mit der Option -balloon none wird das Memory Ballooning deaktiviert.
Host ~$ qemu Platte.img -balloon none
[bearbeiten] Links
- Grundlagen
- ubuntu-vm-builder
- Option -drive
- Der QEMU-Monitor
- http://www.linux-kvm.com/
- http://kvm.qumranet.com/kvmwiki/Virtio
- http://kvm.qumranet.com/kvmwiki/Using_VirtIO_NIC
- http://kvm.qumranet.com/kvmwiki/UbuntuVirtio
- http://www.linux-kvm.com/content/tip-how-setup-windows-guest-paravirtual-network-drivers
- KVM paravirtualization for Linux