Hallo zusammen,
ich betreibe auf einem Host-System (Ubuntu 16.04 LTS, 32GB RAM, Festplatten - keine SSDs) mehrere VMs (qemu/libvirt), darunter auch eine mit dem Betriebssystem "Windows Server 2016". Als Containerformat nutze ich derzeit qcow2. Zwecks Ausfallsicherheit wollte ich nun eine Art "HA-Cluster" aufsetzen und zunächst testweise die Daten zwischen zwei Rechnern synchroniseren. AM geeignetsten erschien mir dazu DRBD. Dies habe ich soweit auch ans Laufen gebracht und die qcow2-Datei steht jeweils auf einem der beiden PCs zu Verfügung und wird ordnungsgemäß synchronisiert (per separater Netzwerkverbindung mit 1 GBit/s).
Das Problem ist nun, dass die Schreib-/Lesezugriffe bzw. deren Geschwindigkeit ziemlich mies sind, seitdem die VM auf dem DRBD-System läuft. Das System ist sehr träge und z.B. ein Kopieren von Daten innerhalb der VM sowie von außen aus ist extrem langsam. Betreibe ich die VM wieder auf einer exklusiven Festplatte des Host-PCs, ist wieder alles soweit OK. Ich hatte zunächst den Verdacht, dass es daran liegt, dass das DRBD zusätzlich aufgesattelt war auf einem Software-Raid (auf einem PC zumindest) und sich beides vielleicht nicht verträgt (auch durch die Metadaten, die geschrieben werden?), aber auch ohne Software-Raid (also DRBD auf einer einzigen Festplatte pro PC, formatiert mit ext4) ist es langsam.
Als Dateiformate für die VM habe ich auch mal RAW probiert, Cache-Modi habe ich alle durch, "io='native" habe ich getestet. Bzgl. DRBD habe ich die Prokollvarianten C und auch A getestet. SWAP auf dem VM-Host mal deaktiviert. Brachte alles keine Verbesserung. Weiterhin rausgefunden habe ich: Wenn ich den DRBD-Dienst auf dem "secondary" deaktiviere bzw. die Netzwerkverbindung trenne, sodass nicht mehr synchronisiert werden kann, wird es nach einiger Zeit ganz unterirdisch und die VM ist kaum noch zu bedienen.
Interessanterweise laufen alle anderen VMs (alles Ubuntu Linux) hingegen normal und die Festplattentzugriffe sind nicht merklich langsamer, als ohne DRBD. Sogar ein Fileserver mit vielen Zugriffen und der doppelten Image-Größe, als das Windows-System, läuft ohne Probleme. Nur die Windows-VM macht irgendwie Probleme. Woran könnte das liegen bzw. was kann ich noch testen?
Oder ist DRBD einfach nicht dafür gedacht, komplette virtuelle Maschinen in quasi-Echtzeit zwischen zwei Systemen zu synchroniseren? Vorher hatte ich, wie ja schon erwähnt, auf einem Rechner ein Software-Raid aufgesetzt und die VMs dort betrieben. Das lief auch sehr gut, allerdings würde ich gerne zusätzliche Sicherheit schaffen, falls an der Hardware (zusätzlich zu den Festplatten) des Host-PCs mal etwas ausfällt. Dann könnte es direkt auf einem zweiten PC weitergehen, ohne aufwändig vor Ort Festplatten tauschen zu müssen.
Viele Grüße sky