
У меня есть хост Linux, на котором запущен Debian 11, и на этом хосте у меня есть виртуальная машина Ubuntu 22.04. Внутри этой виртуальной машины я хочу запустить виртуальную машину Windows 10 с использованием вложенной виртуализации. Виртуальная машина Ubuntu загружается с использованием EFI, и вложенная виртуализация работает хорошо.
Когда виртуальная машина Windows, работающая внутри виртуальной машины Ubuntu, также загружается с помощью EFI, все работает нормально, вся предоставленная мне оперативная память обнаруживается и может использоваться, а производительность виртуальной машины хорошая, поэтому вложенная виртуализация работает нормально.
Моя проблема в том, что снимки (пока) не поддерживаются в vibvirt при использовании EFI, поэтому мне приходится использовать BIOS. Однако, когда я меняю VM на BIOS, все работает нормально, за исключением того, что теперь гость видит только 2 ГБ оперативной памяти. Я пробовал загружать Linux и memtest в этой VM, и они оба видят только 2 ГБ. Я пробовал создавать новые VM, и они также демонстрируют точно такое же поведение (работает нормально при загрузке в EFI, но не в BIOS)
Я скопировал диск виртуальной машины и конфигурацию 1:1 на хост, и он отлично обнаруживает все 8 ГБ (или сколько я там установил). Так что эта проблема появляется только при запуске вложенного режима и использовании BIOS.
На данный момент я перепробовал множество различных конфигураций, даже запуская очень простые команды qemu, и по какой-то причине так и не смог преодолеть барьер в 2 ГБ при работе вложенных команд без EFI.
Есть ли какие-то ограничения, о которых я не знаю?
версии программного обеспечения (во вложенной виртуальной машине Ubuntu):
версия эмулятора QEMU 7.2.0
libvirtd (libvirt) 9.0.0
Linux 5.19.0-35-generic
решение1
Да, есть ограничение при использовании вложенной виртуализации с режимом BIOS. Проблема, с которой вы столкнулись, скорее всего, связана с тем, что прошивка BIOS в виртуальной машине не способна предоставить гостевой операционной системе более 2 ГБ оперативной памяти.
Это известное ограничение виртуализации на основе BIOS, вызванное тем, как прошивка BIOS отображает память. Напротив, прошивка UEFI, используемая в современных виртуальных машинах, поддерживает отображенный в память ввод/вывод, что позволяет гостевой операционной системе получать доступ к большему объему памяти.
Чтобы обойти это ограничение, вы можете либо продолжить использовать вложенную виртуализацию с режимом EFI, либо переключиться на использование другой технологии виртуализации, которая поддерживает снимки с режимом EFI. В качестве альтернативы вы можете попробовать настроить параметры памяти в прошивке BIOS виртуальной машины, хотя это не всегда возможно или эффективно.
Подводя итог, можно сказать, что ограничение виртуализации на основе BIOS с вложенной виртуализацией заключается в том, что гостевая операционная система может иметь доступ только к 2 ГБ оперативной памяти.