So verwenden Sie mehr als 2 GB RAM, wenn Sie eine verschachtelte BIOS-VM mit KVM ausführen

So verwenden Sie mehr als 2 GB RAM, wenn Sie eine verschachtelte BIOS-VM mit KVM ausführen

Ich habe einen Linux-Host, auf dem Debian 11 läuft, und auf diesem Host habe ich eine Ubuntu 22.04-VM. Innerhalb dieser VM möchte ich eine Windows 10-VM mit verschachtelter Virtualisierung ausführen. Die Ubuntu-VM wird mit EFI gebootet und die verschachtelte Virtualisierung funktioniert gut.

Wenn die innerhalb der Ubuntu-VM ausgeführte Windows-VM ebenfalls mit EFI gebootet wird, funktioniert alles einwandfrei. Der gesamte RAM, den ich ihr zuteile, wird erkannt und ist nutzbar. Die VM weist eine gute Leistung auf, sodass die verschachtelte Virtualisierung einwandfrei funktioniert.

Mein Problem ist, dass Snapshots in Vibvirt (noch) nicht unterstützt werden, wenn ich EFI verwende, also muss ich das BIOS verwenden. Wenn ich die VM jedoch ins BIOS ändere, funktioniert alles einwandfrei, außer dass der Gast jetzt nur noch 2 GB RAM sieht. Ich habe versucht, Linux und Memtest in dieser VM zu booten, und beide sehen nur die 2 GB. Ich habe versucht, neue VMs zu erstellen, und sie zeigen auch genau dasselbe Verhalten (funktioniert einwandfrei, wenn in EFI gebootet wird, aber nicht im BIOS).

Ich habe die VM-Festplatte und -Konfiguration 1:1 auf den Host kopiert und dieser erkennt die gesamten 8 GB (oder was auch immer ich eingestellt habe) problemlos. Dieses Problem tritt also nur auf, wenn es verschachtelt ausgeführt wird und BIOS verwendet wird.

An diesem Punkt habe ich viele verschiedene Konfigurationen ausprobiert, sogar super einfache QEMU-Befehle ausgeführt, und kann aus irgendeinem Grund immer noch nicht die 2-GB-Grenze durchbrechen, wenn ich verschachtelt ohne EFI ausführe.

Gibt es eine Einschränkung, die ich nicht kenne?

Softwareversionen (in der verschachtelten Ubuntu-VM):
QEMU-Emulatorversion 7.2.0
libvirtd (libvirt) 9.0.0
Linux 5.19.0-35-generic

Antwort1

Ja, es gibt eine Einschränkung bei der Verwendung verschachtelter Virtualisierung im BIOS-Modus. Das Problem, das Sie haben, liegt wahrscheinlich daran, dass die BIOS-Firmware in der virtuellen Maschine nicht in der Lage ist, dem Gastbetriebssystem mehr als 2 GB RAM zur Verfügung zu stellen.

Dies ist eine bekannte Einschränkung der BIOS-basierten Virtualisierung und wird durch die Art und Weise verursacht, wie die BIOS-Firmware den Speicher zuordnet. Im Gegensatz dazu unterstützt die in modernen virtuellen Maschinen verwendete UEFI-Firmware speicherzugeordnete E/A, wodurch das Gastbetriebssystem auf mehr Speicher zugreifen kann.

Um diese Einschränkung zu umgehen, können Sie entweder weiterhin die verschachtelte Virtualisierung im EFI-Modus verwenden oder auf eine andere Virtualisierungstechnologie umsteigen, die Snapshots im EFI-Modus unterstützt. Alternativ können Sie versuchen, die Speichereinstellungen in der BIOS-Firmware der virtuellen Maschine anzupassen, obwohl dies möglicherweise nicht immer möglich oder effektiv ist.

Zusammenfassend besteht die Einschränkung der BIOS-basierten Virtualisierung mit verschachtelter Virtualisierung darin, dass das Gastbetriebssystem möglicherweise nur auf bis zu 2 GB RAM zugreifen kann.

verwandte Informationen