KVM을 사용하여 중첩된 BIOS VM을 실행할 때 2GB 이상의 RAM을 사용하는 방법

KVM을 사용하여 중첩된 BIOS VM을 실행할 때 2GB 이상의 RAM을 사용하는 방법

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에만 액세스할 수 있다는 것입니다.

관련 정보