Die meisten Virtualisierungssysteme präsentieren dem Gast seine virtuellen Festplatten als gewöhnliche IDE-, SCSI- oder SATA-Festplatten. Damit sieht es für den Gast so aus, als hätte er es mit einer ganz normalen Festplatte zu tun. Tatsächlich muss aber das Virtualisierungssystem für jeden Datenzugriff den IDE-, SCSI- oder SATA-Bus emulieren. In der virtuellen Maschine kümmert sich ein entsprechender Treiber um die Datenzugriffe.
KVM [1] beziehungsweise die zugrundeliegenden Qemu-Komponenten emulieren standardmäßig einen IDE-Bus. Das klingt altmodisch, hat aber den Vorteil, dass nahezu jedes Gastsystem damit zurechtkommt – egal, ob in der virtuellen Maschine Linux, Windows, BSD oder ein anderes Betriebssystem läuft.
Wenn in der virtuellen Maschine Linux ausgeführt wird, wie dies im KVM-Server-Alltag häufig der Fall ist, gibt es aber einen wesentlich effizienteren Weg, um auf Datenträger zuzugreifen: den Virtio-Block-Treiber. Dabei handelt es sich um einen schon seit Version 2.6.25 in den Linux-Kernel integrierten Treiber, der speziell für Virtualisierungssysteme (KVM, Xen und so weiter) entwickelt wurde. Mit dem Virtio-Treiber erspart sich KVM die Emulation eines Festplattenbussystems (zum Beispiel IDE); gleichzeitig vereinfacht sich der Datenträgerzugriff auch im Gast.
Beachten Sie aber, dass KVM den Virtio-Treiber nur verwendet, wenn bekannt ist, dass der Gast Virtio-kompatibel ist. Deswegen ist es beim Einrichten der virtuellen Maschine im Virtual Machine Manager entscheidend, dass Sie im zweiten Schritt des Installationsassistenten das Betriebssystem des Gasts korrekt angeben.
Der Virtio-Treiber wird auch als paravirtualisierter Treiber bezeichnet. Paravirtualisierung bedeutet, dass der Gast bei der Virtualisierung mithilft. Der Kernel aktueller Linux-Gäste erkennt automatisch, dass das Virtualisierungssystem Virtio nutzt. Es sind daher im Gast keine besonderen Konfigurationsarbeiten erforderlich. Die einzige Eigenheit besteht darin, dass die Device-Namen der virtuellen Festplatten
»/dev/vda
«
,
»/dev/vdb
«
und so weiter lauten (anstelle der sonst üblichen Device-Namen
»/dev/sda
«
,
»/dev/sdb
«
).
Der Einsatz des Virtio-Treibers ist erfreulicherweise auch für Windows-Gäste möglich. Dort ist die Vorgehensweise aber ein wenig komplizierter: Bei der anfänglichen Installation verwendet KVM den IDE-Treiber. Sobald Windows in der virtuellen Maschine läuft, installieren Sie in Windows die Virtio-Treiber. Dazu binden Sie in der virtuellen Maschine eine ISO-Datei mit den Treibern als CD-Laufwerk ein. Ein ISO-Image mit von Red Hat signierten Windows-Treibern finden Sie unter [2] .
Nach der Installation der Treiber fahren Sie Windows herunter und verändern dann im Virtual Machine Manager das Bussystem des Datenträgers von IDE auf Virtio ( Abbildung 1 ). Ab dem nächsten Neustart nutzt dann auch Windows den Virtio-Treiber.
Wenn Sie im Virtual Machine Manager einen neuen Gast einrichten, wird dessen Festplatte standardmäßig in einer RAW-Image-Datei im Verzeichnis
»/var/lib/libvirt/images
«
gespeichert (
Abbildung 2
). Das RAW-Format ist gleichzeitig das einfachste und effizienteste Image-Format. Der Inhalt der virtuellen Festplatte wird einfach unverändert in der Image-Datei abgebildet. Für erste Experimente ist diese Grundeinstellung vollkommen ausreichend. Etwas Hintergrundwissen über die zur Auswahl stehenden Optionen hilft aber dabei, die Parameter für die gewünschte Anwendung zu optimieren.
RAW-Dateien bestehen anfänglich aus lauter 0-Bytes. Alle gängigen Linux-Dateisysteme erkennen das und betrachten die Datei als 'sparse file'. Deswegen ist der tatsächliche Platzbedarf im Dateisystem des Host-Rechners vorerst sehr gering. Erst wenn Daten in der virtuellen Festplatte gespeichert werden, belegt die Image-Datei im Dateisystem des Host-Rechners zunehmend immer mehr Platz, bis schließlich die beim Einrichten vorgesehene Maximalgröße erreicht wird.