본문 바로가기
AI Journey/클라우드

[VMware] 가상머신 안에서 가상화를 할 때 반드시 필요한 설정

by 보눔비스타 2025. 12. 18.

VMware workstation과 같은 하이퍼바이저에서 가상화 환경을 운영하다 보면 가상 머신(VM) 내부에서 하둡(Hadoop), 도커(Docker), 쿠버네티스(Kubernetes)와 같은 또 다른 가상화 기술을 실행해야 하는 상황이 있다. 이때 반드시 체크해야 하는 설정이 바로 'Virtualize Intel VT-x/EPT or AMD-V/RVI'이다.

하이퍼바이저(Hypervisor)란?

하이퍼바이저는 하나의 물리적 서버(Host) 위에서 여러 개의 독립적인 가상 머신(VM)을 생성하고 관리하는 가상화 소프트웨어를 말한다. 하이퍼바이저는 물리적 하드웨어(CPU, 메모리, 스토리지 등)와 가상 머신 사이에서 중재자 역할을 수행한다.

하이퍼바이저의 주요 역할

  • 자원 격리: 각 VM이 서로 간섭하지 못하도록 독립적인 환경을 제공한다.
  • 자원 할당: 물리적 CPU와 메모리를 각 VM의 필요에 따라 적절히 분배한다.
  • 추상화: 가상 머신 내의 운영체제(Guest OS)가 하드웨어의 물리적 사양을 직접 신경 쓰지 않고도 작동하게 한다.

하이퍼바이저는 하드웨어 바로 위에서 실행되는 Type 1(Native/Bare-metal) 방식(예: VMware ESXi, Xen)과 일반 운영체제 위에서 앱처럼 실행되는 Type 2(Hosted) 방식(예: VMware Workstation, VirtualBox)으로 나뉜다.

중첩 가상화(Nested Virtualization)

중첩 가상화란 하이퍼바이저 위에서 실행되는 가상 머신(VM)이 그 자체로 다시 하이퍼바이저가 되어 내부에 또 다른 가상 머신을 실행하는 기술을 말한다.

  • L0 (Level 0): 실제 물리적 하드웨어 및 기본 하이퍼바이저 (Host)
  • L1 (Level 1): L0 위에서 실행되는 첫 번째 가상 머신 (Guest Hypervisor)
  • L2 (Level 2): L1 가상 머신 내부에서 실행되는 두 번째 가상 머신 (Nested Guest)

'Virtualize Intel VT-x/EPT' 옵션은 L0의 가상화 기능을 L1에게 전달하여 L1이 L2를 생성할 수 있게 해주는 통로 역할을 한다.

 

일반적으로 가상 머신은 물리적인 CPU의 자원을 빌려 쓴다. 하지만 이 옵션을 체크하지 않으면 가상 머신 내부의 OS(Guest OS)는 자신이 실제 하드웨어 위에 있다고 착각할 뿐, 하드웨어 수준의 가상화 기능(Intel의 VT-x나 AMD의 V)에는 직접 접근할 수 없다. 이 옵션을 체크하면 물리 CPU가 가진 가상화 가속 기능을 가상 머신 안의 OS에게도 통과시켜 줄 수 있다.

① Intel VT-x 및 AMD-V (CPU 가상화)

CPU 레벨의 가상화 기술이다. 일반적인 VM 환경에서는 하이퍼바이저가 하드웨어를 독점하고 VM에게는 가상화된 자원만 보여준다. 하지만 이 옵션을 활성화하면, L1 VM이 물리 CPU의 가상화 명령어 세트에 직접 접근할 수 있도록 허용한다. 이를 통해 L1 VM 내부에서 하드웨어 가속을 이용한 L2 VM 생성이 가능해진다.

② EPT (Extended Page Tables) 및 RVI (Rapid Virtualization Indexing)

이는 L2 주소 변환(SLAT, Second Level Address Translation) 기술이다.

  • 작동 원리: 가상 머신은 자신의 메모리 주소를 실제 물리 메모리 주소로 매핑해야 한다. 중첩 가상화에서는 [L2 → L1 → L0]로 이어지는 복잡한 주소 변환 과정이 발생한다.
  • 효과: EPT/RVI 기능을 활성화하면 이 복잡한 매핑 과정을 소프트웨어가 아닌 CPU 하드웨어가 직접 처리한다. 이 기능이 없다면 메모리 접근 시마다 엄청난 오버헤드가 발생하여 시스템이 매우 느려질 수 있다.

단일 가상화만 사용한다면 이 옵션을 켤 필요가 없지만, 다음과 같은 전문적인 환경에서는 필수적이다.

  1. 클라우드 인프라 시뮬레이션: 물리적 서버가 부족한 환경에서 한 대의 PC 내에 가상화된 데이터센터(VMware vSphere 내에 다시 VM 생성 등)를 구축할 때 사용한다.
  2. 컨테이너 환경(Docker/Kubernetes) 구축: 최근의 컨테이너 기술은 격리를 위해 하드웨어 가속을 요구하는 경우가 많다. 특히 윈도우 호스트에서 리눅스 가상 머신을 띄우고 그 안에서 다시 컨테이너를 돌릴 때 이 설정이 성능과 안정성을 좌우한다.
  3. 개발 및 테스트: 커널 수준의 개발을 하거나 하이퍼바이저 자체를 개발/테스트해야 하는 엔지니어들에게 필수적인 환경을 제공한다.

결론적으로, 이 중첩 가상화를 활성화하는 것은 "내 가상 머신에게 실제 하드웨어 CPU와 똑같은 가상화 능력을 부여하겠다"는 뜻이다.