kvmbanner-logo2

 

Wir nutzen für die Virtualisierung KVM / Proxmox. Teilweise wurden auch Gäste aus älteren Installationen überführt. Bei manchen der Gäste sind uns I/O Probleme aufgefallen, obwohl die Hardware darunter recht leistungsstark ist und nur wenige Gäste auf dem Host liefen.

a closer look

Bei einer genaueren Betrachtung ist aufgefallen, dass die Gäste über eine virtuelle IDE Schnittstelle auf ihre Platten zugreifen. Muss das sein? Ja neee. Linux bringt seit ~ 2.6.20 die virtio Module mit und für andere OS gibt es die Treiber auch schon länger. Warum also eine „alte“ und doch recht unperformante Schnittstelle nutzen?

Weiterhin sind die virtio Treiber nicht nur für die virtuellen Festplatten, sondern auch für diverse andere Hardware zuständig. Unter Linux gibt es beispielsweise folgende Module: virtio, virtio_balloon, virtio_blk, virtio_ring und virtio_pci. Es macht also Sinn mit diesen, anstatt mit irgendwelchen generischen Modulen / Treibern zu arbeiten.

Unter M$ mit dem Tool hdtune ausprobiert, konnten wir eine Steigerung von fast 100% erreichen! Die von dem Programm gemessene „Avg. Transfer Rate“ ging von ~89MB/sec auf ~170MB/sec nach oben (wobei ich nicht genau weiß, welche Tests das Programm durchführt) – alleine durch die Verwendung von virtio.

Also wie migrieren?

Unter Debian Wheezy war das recht einfach:

  1. Gast runterfahren
  2. Festplattenschnittstelle von ide auf virtio ändern
    • Unter Proxmox: Platte löschen (sie wird dann nur in der Konfig gelöscht) und neu einbinden als Typ „virtio“
    • SCSI Controller type auf „virtio“ setzen
  3. Boot Reihenfolge prüfen
  4. ggf. Netzwerkkarten ebenfalls auf „virtio“ ändern
  5. Gast wieder starten

Sollte die /boot Partition nicht im LVM liegen, bzw. andere Partitionen direkt gemountet werden (per /dev/sdx bspw.) und nicht per LVM, dann müsst ihr vor dem herunterfahren die Devicenamen in der /etc/fstab ändern. Die virtuellen Geräte haben neue Namen … /dev/sda -> /dev/vda.

Einen squeeze Gast habe ich bisher nicht ausprobiert.

Folgende Schritte sind für SLES 11 (SP3) notwendig:

  1. Innerhalb der Konfigurationsdatei /etc/sysconfig/kernel folgende Module zu „INITRD_MODULES“ hinzufügen: virtio, virtio_pci, virtio_blk, virtio_balloon, virtio_ring
  2. Neue initrd erstellen mit den hinzugefügten Modulen -> mkinitrd
  3. /etc/fstab Devicenamen ändern (s. Absatz Debian)
  4. Gast herunterfahren
  5. Proxmox/KVM Konfiguration anpassen (s. Absatz Debian)
  6. Gast wieder starten

Soweit eine grobe Übersicht der Schritte. Ich hoffe ich habe nichts vergessen.

Sollte jemand Interesse an der Lösung für M$ haben, dann bitte kontaktieren.