
Debian 11을 실행하는 Linux 호스트가 있고 해당 호스트에 Ubuntu 22.04 VM이 있습니다. 해당 VM 내에서 중첩된 가상화를 사용하여 Windows 10 VM을 실행하고 싶습니다. 우분투 VM은 EFI를 사용하여 부팅되며 중첩된 가상화가 잘 작동합니다.
Ubuntu VM 내부에서 실행되는 Windows VM도 EFI를 사용하여 부팅하면 모든 것이 잘 작동하고, 내가 제공한 모든 램이 감지되어 사용 가능하며, VM의 성능이 좋아 중첩된 가상화가 제대로 작동합니다.
내 문제는 EFI를 사용할 때 vibvirt에서 스냅샷이 (아직) 지원되지 않기 때문에 BIOS를 사용해야 한다는 것입니다. 그러나 VM을 BIOS로 변경하면 이제 게스트에 2GB의 RAM만 표시된다는 점을 제외하면 모든 것이 잘 작동합니다. 해당 VM에서 Linux 부팅과 memtest를 시도했는데 둘 다 2GB만 표시됩니다. 새 VM을 생성해 보았지만 정확히 동일한 동작을 나타냅니다(EFI에서 부팅하면 제대로 작동하지만 BIOS에서는 작동하지 않음).
VM 디스크와 구성을 1:1로 호스트에 복사했는데 전체 8GB(또는 내가 설정한 모든 것)가 잘 감지됩니다. 따라서 이 문제는 중첩 실행하고 BIOS를 사용할 때만 나타납니다.
이 시점에서 나는 매우 간단한 qemu 명령을 실행하는 것조차도 다양한 구성을 시도했지만 어떤 이유로 EFI 없이 중첩하여 실행할 때 여전히 2GB 장벽을 깨뜨릴 수 없습니다.
제가 모르는 제한사항이 있나요?
소프트웨어 버전(중첩된 Ubuntu VM):
QEMU 에뮬레이터 버전 7.2.0
libvirtd(libvirt) 9.0.0
Linux 5.19.0-35-generic
답변1
예, BIOS 모드에서 중첩된 가상화를 사용하는 경우 제한이 있습니다. 현재 겪고 있는 문제는 가상 머신의 BIOS 펌웨어가 게스트 운영 체제에 2GB 이상의 RAM을 노출할 수 없기 때문에 발생할 가능성이 높습니다.
이는 BIOS 기반 가상화의 알려진 제한 사항이며 BIOS 펌웨어가 메모리를 매핑하는 방식으로 인해 발생합니다. 이와 대조적으로 최신 가상 머신에 사용되는 UEFI 펌웨어는 메모리 매핑된 I/O를 지원하므로 게스트 운영 체제가 더 많은 메모리에 액세스할 수 있습니다.
이 제한 사항을 해결하려면 EFI 모드로 중첩된 가상화를 계속 사용하거나 EFI 모드로 스냅샷을 지원하는 다른 가상화 기술을 사용하도록 전환할 수 있습니다. 또는 가상 머신의 BIOS 펌웨어에서 메모리 설정을 조정해 볼 수도 있지만 이것이 항상 가능하거나 효과적인 것은 아닙니다.
요약하자면, 중첩된 가상화를 사용한 BIOS 기반 가상화의 한계는 게스트 운영 체제가 최대 2GB의 RAM에만 액세스할 수 있다는 것입니다.