AWS가 중첩 가상화 (nested virtualization) 지원 추가
(github.com/aws)- AWS SDK for Go v2가 업데이트 되면서, 가상 머신 내부에서 또 다른 가상 머신을 실행할 수 있는 기능이 추가됨
- 새 기능은 비(非) 베어메탈 EC2 인스턴스에서도 중첩 VM 실행을 가능하게 함
- AWS EC2에서 중첩 가상화 지원 확장은 개발·테스트 환경에서의 가상화 계층 활용도를 높이는 기반이 될 것
Hacker News 의견들
- 이제 AWS VM 안에서 Firecracker나 다른 microVM을 직접 실행할 수 있게 되어 큰 변화임
예전에는 이런 걸 하려면 비싼 bare-metal 인스턴스가 필요했음
참고로 GCP는 이미 오래전부터 nested virtualization을 지원했음- 이런 댓글을 기다렸음. Firecracker 같은 microVM이야말로 좋은 활용 사례임
단순히 테스트나 개발 환경을 쉽게 꾸릴 수 있다는 점도 장점임
nested virtualization은 꼭 완전한 VM만을 의미하지 않음 - 이런 환경에서의 성능 저하율이 어느 정도인지 궁금함
- 이런 댓글을 기다렸음. Firecracker 같은 microVM이야말로 좋은 활용 사례임
- nested virtualization 지원이 주요 SDK에 추가되었음
us-west-2 리전에서는 이미 “Nested Virtualization” 옵션을 볼 수 있고, M8id / C8id / R8id 인스턴스 타입에서 사용 가능함
내가 참여 중인 E2B 같은 micro-VM 샌드박스 솔루션에는 정말 큰 소식임 - 왜 이게 그렇게 큰 일인지 설명해줄 수 있는 사람 있음?
예전에 nested virtualization을 시험해봤을 때는 PoC 수준 외에는 별로 쓸모가 없다고 느꼈음- 격리 측면에서 매우 유용함
Kata Containers, gVisor, Firecracker 같은 VM 기반 컨테이너 솔루션이 많음
예를 들어 Kubernetes의 pod를 VM 단위로 격리할 수 있음
또한 EC2 인스턴스 간 라이브 마이그레이션이 가능해져, 지속적인 워크로드 유지보수가 쉬워짐
CI/CD 환경에서도 시스템 이미지를 EC2에서 직접 빌드하고 테스트할 수 있게 되어 훨씬 편리함
GCP, VMWare, KVM 등은 이미 이런 기능을 제공하고 있었기에, EC2가 이제서야 따라온 게 아쉬웠음 - 이제는 전체 bare-metal 인스턴스를 쓸 필요 없이 더 저렴한 AWS 인스턴스 안에서 VM을 돌릴 수 있음
QEMU로 네트워크 하드웨어를 에뮬레이션하는 네트워크 시뮬레이션 같은 작업에 특히 유용함
- 격리 측면에서 매우 유용함
- AWS가 이제야 2018년에 도착한 느낌임
- 맞음, 꽤 평범한 일임
나는 집에서도 오래전부터 libvirt로 일반 소비자용 하드웨어에서 이런 걸 써왔음
AWS가 이제야 이런 오래된 기능을 따라잡은 셈임
- 맞음, 꽤 평범한 일임
- 이런 기능이 openclaw나 에이전트 같은 데에도 유용할까 궁금함
- 가능하긴 하지만, 실제 배포라면 nested virtualization 대신 nix로 이미지 빌드하는 방식을 택할 것 같음
- nested virtualization 환경에서의 성능 수치, 특히 IO 중심 워크로드에서의 결과가 궁금함
- 일반적으로 nested virtualization의 성능 영향이 어느 정도인지 궁금함
여러 겹의 MMU 오버헤드가 생길 것 같음- 워크로드와 구현 방식에 따라 다름
순수 CPU 작업은 거의 영향이 없지만, IO는 구현에 따라 거의 차이 없거나 매우 나쁠 수 있음
trap/vmexit 같은 이벤트는 한 단계 더 거쳐야 함 - 기억하기로는 가상화 명령 자체가 중첩되는 게 아니라, 외부 가상화 하드웨어와 협력적으로 동작함
AWS의 구현이 이 방식을 따르는지는 확실치 않음 - 실무적으로는 대략 5~15% 정도의 성능 저하가 있음
- 워크로드와 구현 방식에 따라 다름
- 레거시 앱에는 비용이 많이 들 것 같은 느낌임
- 드디어 나왔다는 생각임, 기대감 폭발