에듀테크 프로젝트 대시보드
가상화와 하이퍼바이저
가상화(Virtualization)는 하드웨어(CPU·메모리·디스크·네트워크)를 소프트웨어로 흉내 내 하나의 물리 서버 위에서 서로 완전히 독립된 여러 운영체제(VM)를 동시에 돌리는 기술이다. 이 흉내를 담당하는 소프트웨어가 하이퍼바이저(Hypervisor)다.
"호스트 OS가 있느냐 없느냐"로 나뉜다. 버튼을 눌러 두 구조를 비교해 보자.
VMware ESXi, Microsoft Hyper-V, Xen, KVM(리눅스 커널 자체가 하이퍼바이저가 됨).
하이퍼바이저는 흔히 물리 메모리보다 더 많은 메모리를 VM들에게 할당(오버커밋)한다. 모든 VM이 동시에 최대치를 쓰지는 않는다는 가정 때문인데, 슬라이더를 움직여 한계를 넘겨 보자.
전체를 소프트웨어로 흉내 내기 때문에 가능한 기능들 — 실제 하드웨어에서는 불가능하다.
VM의 메모리·디스크 상태를 그 순간 그대로 사진 찍듯 저장. 업데이트 전 스냅샷을 찍어두면
실패해도 즉시 그 시점으로 되돌리기 가능.
VM을 중단 없이 다른 물리 서버로 이동. 메모리 페이지를 미리 복사해두고 마지막 남은 변경분(dirty page)만 짧게 멈춰 옮긴다. 하드웨어 점검 시에도 서비스 무중단.
게스트의 특권 명령어를 CPU가 하드웨어 수준에서 가로채 하이퍼바이저에 위임. 순수 소프트웨어 에뮬레이션보다 훨씬 빠르다 (하드웨어 지원 가상화).
물리 NIC 하나를 가상 스위치로 여러 VM에 나눠주고, 디스크는 하나의 큰 파일
(.vmdk, .qcow2)로 존재 — 통째로 복사하면 VM 복제 완료.
둘 다 "격리된 실행 환경"을 만들지만 격리 계층이 다르다. 컨테이너의 자세한 원리는 컨테이너 & Docker 기초 페이지 참고.
| 가상 머신 (VM) | 컨테이너 | |
|---|---|---|
| 격리 단위 | 커널 포함 OS 전체 | 호스트 커널을 공유, 프로세스만 격리 |
| 부팅 속도 | 수십 초 (커널 부팅부터) | 수백 ms (프로세스 실행 수준) |
| 디스크 크기 | 수 GB ~ 수십 GB | 수 MB ~ 수백 MB |
| 격리 강도 | 강함 (커널까지 완전 분리) | 상대적으로 약함 (커널 취약점 = 전체 위험) |
| 다른 커널 실행 | 가능 (Linux VM 위에 Windows VM) | 불가능 (호스트 커널에 종속) |