VMs funktionieren nicht mit Nested PVE auf 4.19 Host Kernel

Dec 18, 2018
5
0
1
Hallo,

mit der aktuellen PVE-Version gibt es Probleme wenn PVE selbst als innerhalb von KVM auf einem 4.19.x Kernel läuft (Nested Virtualization). In diesem Fall funktioneren die VMs in PVE nur wenn der Betriebssystem Typ auf Windows eingestellt ist, ansonsten starten sie einfach nicht.

Die gleiche Konfiguration funktioniert problemlos wenn im Host ein 4.14.x Kernel läuft. In beiden Test-Fällen habe ich mit QEMU 3.0.0 auf dem Hostsystem getestet.

Viele Grüße

Marco
 
Was fuer Fehlermeldungen kommen beim Start einer VM in dem virtualisierten PVE?
(sollten auf der commandline ausgegeben werden, wenn mittels `qm start $vmid` gestartet wird, und stehen ansonsten im Tasklog von dem Starttask)
 
"qm start $vmid" liefert keine Ausgabe. Der kvm Prozess wird auch gestartet, aber die VM bekommt eine gelbes Warndreieck in der Oberfläche und in der Konsolenanzeige ist nur "Guest has not initialized the display (yet)." zu sehen.

Der Status der VM ist dann "running (internal error)"
 
Was kommt, wenn das qemu-command direkt gestartet wird?
* mit `qm showcmd $vmid --pretty` wird das qemu command angezeigt
* dieses ausführen

edit:
das daemonized flag muss entfernt werden, bevor das command ausgeführt wird
 
Hm,
mit PVE-VM meine ich die VM, in der PVE läuft, die versucht nested VMs auszuführen.
* Es funktioniert wenn die PVE-VM als Typ "Windows" eingestellt hat, oder wenn in der PVE-VM eine nested VM Typ Windows eingestellt hat?
* Welche CPU ist für die PVE-VM eingestellt - funktioniert es wenn für die PVE-VM als CPU type 'host' eingestellt wird?

* funktioniert es mit einer älteren PVE-Version? (sowohl ältere pve-qemu-kvm, als auch älterer pve-kernel wären interessant).
 
Die PVE-VM läuft mit CPU Type "host". Etwas anderes habe ich auch nie probiert.

Ob es funktioniert hängt tatsächlich davon ab ob ich für eine Gast-VM in der PVE-VM den OS-Typ "Windows" oder etwas anderes einstelle. Es geht nur wenn ich Windows auswähle. Sowohl mit der Einstellung Linux als auch mit der Einstellung "Other" funktioniert es nicht.

Das Verhalten zeigt sich mit einem frisch installierten Proxmox genau so wie mit dem aktuellen Kernel aus den Enterprise-Repos. Zum Testen von älteren Proxmox-Versionen fehlt mir die Zeit leider.

Ich konnte es jetzt über das Vergleichen der KVM-Aufrufe für die Einstellung Windows und Linux einschränken. Es hängt am -cpu Parameter.

Für Linux:
-cpu host,+kvm_pv_unhalt,+kvm_pv_eoi

Für Windows wird erzeugt:
-cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,hv_synic,hv_stimer'

Wenn ich den -cpu Parameter der für die Einstellung Windows verwendet wird einfach in den kompletten KVM-Aufruf für die Einstellung Linux einsetze (und dort den anderen ersetze) funktioniert es. Nur "-cpu host" funktioniert nicht. Im nächsten Schritt werde ich jeden er Zusatzparameter hinten dran testen.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!