클라우드 컴퓨팅의 기반이 가상화입니다. AWS EC2 인스턴스 하나가 실제로 어떻게 동작하는지 이해하려면 가상화 기술을 알아야 합니다.


가상화란

하나의 물리 머신에서 여러 개의 가상 머신(VM)을 실행하는 기술 입니다.

가상화 아키텍처

PLAINTEXT
┌─────────────────────────────────┐
│  VM1         VM2         VM3    │
│ ┌───────┐  ┌───────┐  ┌──────┐│
│ │ App   │  │ App   │  │ App  ││
│ │ Linux │  │Windows│  │ Linux││
│ └───┬───┘  └───┬───┘  └──┬───┘│
│     └──────────┴─────────┘    │
│          하이퍼바이저            │
├─────────────────────────────────┤
│          물리 하드웨어            │
└─────────────────────────────────┘

하이퍼바이저 (Hypervisor)

가상 머신을 생성하고 관리하는 소프트웨어입니다. VMM(Virtual Machine Monitor) 이라고도 합니다.

Type-1: 베어메탈 하이퍼바이저

하드웨어 위에 직접 실행됩니다.

PLAINTEXT
┌──────┬──────┬──────┐
│ VM1  │ VM2  │ VM3  │
├──────┴──────┴──────┤
│    하이퍼바이저       │  ← 하드웨어 위에 직접
├────────────────────┤
│    물리 하드웨어      │
└────────────────────┘
  • 성능이 좋음 — 호스트 OS 오버헤드 없음
  • 서버/데이터센터에서 사용
  • 예시: VMware ESXi, Xen, Microsoft Hyper-V, KVM

Type-2: 호스트 기반 하이퍼바이저

호스트 OS 위에서 애플리케이션으로 실행됩니다.

PLAINTEXT
┌──────┬──────┐
│ VM1  │ VM2  │
├──────┴──────┤
│  하이퍼바이저  │  ← 호스트 OS 위의 앱
├─────────────┤
│  호스트 OS    │
├─────────────┤
│  하드웨어     │
└─────────────┘
  • 사용이 편리 — 일반 OS 위에서 실행
  • 성능은 Type-1보다 낮음
  • 예시: VirtualBox, VMware Workstation, Parallels

전가상화 (Full Virtualization)

게스트 OS를 수정하지 않고 그대로 실행합니다. 게스트 OS는 자신이 가상 머신에서 돌고 있는지 모릅니다.

PLAINTEXT
게스트 OS가 특권 명령 실행
→ 하이퍼바이저가 트랩(가로채기)
→ 에뮬레이션으로 처리
→ 결과를 게스트에 반환
  • 장점: 게스트 OS 수정 불필요 — Windows도 그대로 실행 가능
  • 단점: 바이너리 변환(Binary Translation) 오버헤드

바이너리 변환

PLAINTEXT
게스트 코드:  mov cr3, eax   (특권 명령)

     하이퍼바이저가 감지

     대체 코드로 변환:  call vmm_handler
                       vmm_handler가 cr3 수정을 에뮬레이션

반가상화 (Paravirtualization)

게스트 OS를 수정하여 하이퍼바이저와 직접 통신합니다.

PLAINTEXT
게스트 OS (수정됨):
특권 명령 대신 → 하이퍼콜(Hypercall) 호출

          하이퍼바이저가 직접 처리
  • 장점: 전가상화보다 성능 좋음 — 바이너리 변환 불필요
  • 단점: 게스트 OS 소스 코드 수정 필요 → Windows는 불가능
  • 예시: Xen (반가상화 모드)

하드웨어 지원 가상화

CPU 차원에서 가상화를 지원합니다. Intel VT-x, AMD-V.

PLAINTEXT
게스트 OS가 특권 명령 실행
→ CPU가 자동으로 VM Exit (하드웨어 트랩)
→ 하이퍼바이저가 처리
→ VM Enter로 게스트에 복귀
  • 바이너리 변환 불필요
  • 게스트 OS 수정 불필요
  • 전가상화와 반가상화의 장점을 모두 가짐
  • 현대 가상화의 표준

KVM (Kernel-based Virtual Machine)

리눅스 커널 자체를 하이퍼바이저로 만드는 기술입니다.

PLAINTEXT
┌──────────────────────────┐
│  VM1 (QEMU 프로세스)       │
│  ┌──────────────────────┐│
│  │ 게스트 OS             ││
│  │ (Intel VT-x로 실행)    ││
│  └──────────────────────┘│
├──────────────────────────┤
│  리눅스 커널 + KVM 모듈     │ ← 리눅스가 곧 하이퍼바이저
├──────────────────────────┤
│  하드웨어 (VT-x/AMD-V)    │
└──────────────────────────┘
  • KVM은 리눅스 커널 모듈 (/dev/kvm)
  • QEMU가 디바이스 에뮬레이션 담당
  • 리눅스의 스케줄러, 메모리 관리를 그대로 활용
  • AWS, GCP 등 주요 클라우드가 KVM 기반

가상화 vs 컨테이너

항목가상 머신컨테이너 (Docker)
격리 수준완전 (별도 커널)프로세스 수준 (커널 공유)
부팅 시간수십 초 ~ 분수 초
리소스 오버헤드큼 (게스트 OS 포함)작음
보안강함 (커널 격리)상대적으로 약함
활용다른 OS 실행, 강한 격리같은 OS, 마이크로서비스

핵심 포인트

  • Type-1 vs Type-2: 서버는 Type-1(ESXi, KVM), 개발용은 Type-2(VirtualBox)
  • 전가상화 vs 반가상화: 하드웨어 지원(VT-x)으로 전가상화 성능 문제 해결 → 반가상화의 필요성 감소
  • KVM이 Type-1인 이유: 리눅스 커널 자체가 하이퍼바이저 역할 → 호스트 OS 위가 아님
  • 가상화 vs 컨테이너: "언제 VM을 쓰고 언제 컨테이너를 쓰는가" — 격리 수준과 오버헤드의 트레이드오프

정리

가상화는 클라우드의 기반 기술입니다. 하드웨어 지원 가상화(VT-x)가 등장하면서 전가상화의 성능 문제가 해결되었고, KVM 기반으로 주요 클라우드가 운영되고 있습니다. 실제로는 하이퍼바이저 유형, 가상화 방식, 컨테이너와의 차이를 명확히 구분할 수 있어야 합니다.

댓글 로딩 중...