운영체제 따라잡기

가상화

meellon 2026. 7. 8. 05:00

학습 목표

하이퍼바이저 Type 1·Type 2 차이와 VM(가상 머신) 구조를 설명할 수 있다.

하드웨어 가상화OS 수준 가상화(컨테이너) 의 격리 방식을 비교할 수 있다.

namespace·cgroup이 Linux 컨테이너 격리에 어떻게 쓰이는지 설명할 수 있다.

VM과 컨테이너 선택 기준을 설명할 수 있다.

문제 상황

  • 개발 PC는 macOS인데 프로덕션은 Linux — 환경 맞추기
  • 서버 한 대에 테스트용 Windows도 필요하다
    • 물리 서버를 나누기엔 비용·유휴
  • docker run은 초 단위인데 VM 부팅은 분 단위
    • 격리 수준은 같은가?
  • 클라우드 EC2는 “인스턴스” — 내부는 VM인가 컨테이너인가

보호·보안에서 격리를 봤다. 이번엔 OS가 한 물리 자원을 여러 논리 환경으로 나누는 가상화다.

1. 가상화란

가상화(virtualization) — 물리 CPU·메모리·디스크·네트워크를 추상화해 여러 독립된 실행 환경을 만든다.

목적 설명
격리 한 워크로드 장애·침해가 다른 환경에 전파되지 않게
멀티플렉싱 한 서버에 여러 OS·앱 — utilization 향상
이식성 VM 이미지·컨테이너 이미지로 환경 복제
유연성 스냅샷, 마이그레이션, 오토스케일
  • VMM(Virtual Machine Monitor) = 하이퍼바이저 — 게스트에게 가상 하드웨어 제공
  • 게스트 OS는 자신이 물리 머신인 줄 알고 부팅·드라이버 로드
  • 컨테이너는 게스트 OS 없이 호스트 커널 위에서 프로세스 격리

2. 하이퍼바이저

유형 위치 특징
Type 1 (bare-metal) 하드웨어 바로 위 KVM+Xen, VMware ESXi, Hyper-V 데이터센터·클라우드
Type 2 (hosted) 호스트 OS 위 VirtualBox, VMware Workstation 데스크톱·개발

동작 요약

  • CPU: 하드웨어 보조(Intel VT-x, AMD-V)로 특권 명령 트랩·에뮬레이션
  • 메모리: shadow page table 또는 하드웨어 중첩 페이징(EPT/NPT)
  • I/O: 가상 디스크·NIC — 하이퍼바이저·백엔드 드라이버가 실제 장치에 연결
  • Linux KVM: 커널 모듈이 Type 1에 가깝게 동작 — qemu가 디바이스 모델
  • Nested virtualization: VM 안에서 또 VM — 클라우드·CI에서 사용

3. 가상 머신(VM)

VM마다 가상 CPU·RAM·디스크 + 게스트 OS + 앱.

물리 서버
  └─ Hypervisor
       ├─ VM1: Guest Linux + app
       ├─ VM2: Guest Windows + app
       └─ VM3: Guest Linux + DB
구성 역할
가상 하드웨어 vCPU, vRAM, vNIC, vDisk
게스트 OS 자체 커널·스케줄러·드라이버
하이퍼콜 게스트가 하이퍼바이저에 특권 요청
  • 강한 격리 — 커널까지 분리, 다른 OS 실행 가능
  • 오버헤드 — 게스트 OS 메모리·부팅·컨텍스트 스위치
  • 클라우드 EC2·Azure VM — 테넌트당 VM, 하이퍼바이저가 자원 분할

4. 컨테이너 (OS 수준 가상화)

컨테이너호스트 커널을 공유하고, 프로세스·파일·네트워크 뷰만 격리한다.

  VM Container
격리 단위 가상 하드웨어 + 게스트 OS 프로세스 + namespace
커널 게스트마다 별도 호스트 커널 공유
시작 시간 분~초 (부팅) 초 이하
밀도 상대적으로 낮음 높음
이식성 OS 종류 자유 보통 리눅스 커널 호환

Linux 컨테이너 핵심.

기술 역할
namespace PID, mount, network, UTS, IPC, user 뷰 분리
cgroup CPU·메모리·I/O 할당·제한
union filesystem 이미지 레이어 — OverlayFS
컨테이너 런타임 runc, containerd — OCI 스펙
  • Docker·containerd·Kubernetes — 이미지 빌드·배포·오케스트레이션 (Platform 시리즈)
  • 보안: 컨테이너는 VM보다 공유 커널 — 커널 취약점·설정 오류 시 탈출 위험, seccomp·AppArmor 보완
  • gVisor·Kata: 커널 격리 강화 — VM에 가까운 경계

5. 선택 가이드

상황 추천
Windows + Linux 혼합, 강한 격리 VM
마이크로서비스 대량 배포, 빠른 기동 컨테이너
레거시 앱 전체 OS 포함 이전 VM
CI/CD, 동일 Linux 스택 컨테이너
멀티 테넌트 SaaS, 규제 VM 또는 전용 노드 + 컨테이너
  • 하이브리드: VM 위에 Kubernetes — 테넌트별 VM, 안에 컨테이너
  • 서버리스(Lambda 등): 컨테이너·microVM 기반 — 사용자는 격리 단위를 직접 안 봄

6. 정리

  • 하이퍼바이저가 가상 하드웨어를 제공 — Type 1(베어메탈) vs Type 2(호스티드)
  • VM = 게스트 OS 포함 하드웨어 수준 격리
  • 컨테이너 = namespace·cgroup으로 OS 수준 격리, 커널 공유
  • 밀도·기동 속도는 컨테이너, OS 다양성·격리는 VM
  • 다음: 다중처리 심화, NUMA·실시간 OS

다음에 다룰 것

  • 다중처리 심화
  • NUMA, 실시간 OS, 스케줄링

해당 내용은 Operating System Concepts, 10/E (Avraham Silberschatz, Peter Baer Galvin, Greg Gagne) 의 내용을 기반으로 합니다.

'운영체제 따라잡기' 카테고리의 다른 글

분산 시스템 개요  (0) 2026.07.10
다중처리 심화  (0) 2026.07.09
보호와 보안  (0) 2026.07.07
버퍼링과 캐싱  (0) 2026.07.06
I/O 시스템  (0) 2026.07.05