- 가상화는 한 대의 물리 컴퓨터에서 여러 운영체제를 동시에 돌리는 기술이다.
- 전가상화는 게스트 OS를 고치지 않아도 되고, 반가상화는 게스트 OS를 수정해야 한다.
- 하이퍼바이저는 둘로 나뉜다 — Type 1(하드웨어 위에 바로) 과 Type 2(운영체제 위에).
- VirtualBox는 오라클의 Type 2 제품이며 GPL 로 공개되어 있고 전가상화를 쓴다.
- VirtualBox는 VMware의 VMDK와 마이크로소프트의 VHD 이미지를 지원한다.
기준: 리눅스마스터 2급 출제 기준오류 제보
| 이름 | 가리키는 것 | 예 |
|---|---|---|
| 호스트 OS | 물리 컴퓨터에 직접 설치된 운영체제 | 내 노트북의 윈도 |
| 게스트 OS | 가상 머신 안에 설치한 운영체제 | 그 안에 설치한 리눅스 |
| 가상 머신(VM) | 하이퍼바이저가 만들어 준 가짜 하드웨어 한 벌 | CPU 2개·메모리 4GB·디스크 20GB짜리 한 대 |
| 디스크 이미지 | 게스트의 하드디스크 노릇을 하는 호스트의 파일 하나 | rocky9.vdi |
| 가상화로 얻는 것 | 설명 |
|---|---|
| 서버 통합 | 한가한 서버 여러 대를 한 대의 물리 장비에 모아 자원 낭비를 줄인다 |
| 격리 | 게스트 하나가 망가져도 다른 게스트와 호스트는 영향이 없다 |
| 스냅샷 | 어느 시점의 상태를 저장해 두었다가 그때로 되돌린다 |
| 이식성 | 이미지 파일만 옮기면 다른 장비에서 그대로 켠다 |
| 구분 | Type 1 (네이티브·베어메탈) | Type 2 (호스트형) |
|---|---|---|
| 위치 | 하드웨어 위에 바로 | 운영체제 위에 |
| 성능 | 좋다 | 상대적으로 낮다 |
| 용도 | 서버·데이터센터 | 개인 PC·테스트 |
| 예 | Xen, KVM, VMware ESXi, Hyper-V | VirtualBox, VMware Workstation |
Type 1 (네이티브) Type 2 (호스트형)
게스트 OS 게스트 OS 게스트 OS 게스트 OS
───────────────────── ─────────────────────
하이퍼바이저 하이퍼바이저 ← 프로그램의 하나
───────────────────── ─────────────────────
하드웨어 호스트 OS ← 한 층이 더 있다
─────────────────────
하드웨어| 구분 | 전가상화 (Full) | 반가상화 (Para) |
|---|---|---|
| 게스트 OS 수정 | 필요 없다 | 필요하다 |
| 방식 | 하드웨어를 그대로 흉내 | 게스트가 하이퍼바이저에 직접 요청 |
| 성능 | 보통 (하드웨어 지원 시 개선) | 좋다 |
| 하드웨어 지원 | Intel VT-x / AMD-V 활용 | — |
| 대표 | VirtualBox, VMware, KVM | Xen(초기) |
가르는 기준은 "게스트 OS를 고쳐야 하는가" 다. 전가상화는 수정 없이 그대로, 반가상화는 수정이 필요하다. 대신 반가상화가 더 빠르다.
운영체제는 하드웨어를 자기 혼자 독점한다고 믿고 만들어졌다. 한 컴퓨터에 그런 운영체제가 여럿 올라가면 누군가 교통정리를 해야 한다.
전가상화 반가상화
게스트 OS : "디스크에 직접 쓴다" 게스트 OS : "하이퍼바이저야, 써 줘"
│ (자기가 가상 머신인 줄 모른다) │ (자기가 가상 머신인 줄 안다)
▼ ▼
하이퍼바이저가 그 명령을 가로채 하이퍼콜(hypercall)로 바로 요청
진짜 하드웨어 대신 흉내 내어 처리 → 가로채고 흉내 내는 과정이 없다| 질문 | 전가상화 | 반가상화 |
|---|---|---|
| 게스트는 자신이 가상 머신임을 아는가 | 모른다 | 안다 |
| 하이퍼바이저에 일을 시키는 방법 | 평소처럼 명령 → 하이퍼바이저가 가로챈다 | 하이퍼콜로 직접 요청 |
| 수정할 수 없는 OS(윈도 등)를 올릴 수 있나 | 있다 | 어렵다 (커널을 고쳐야 하므로) |
| 느린 이유 / 빠른 이유 | 가로채고 흉내 내는 비용 | 그 과정을 건너뛴다 |
리눅스에서는 CPU가 이 기능을 갖췄는지 /proc/cpuinfo 로 확인한다.
grep -E -c 'vmx|svm' /proc/cpuinfo
# 4| 플래그 | 뜻 |
|---|---|
vmx | Intel VT-x 지원 |
svm | AMD-V 지원 |
| 제품 | 만든 곳 | 종류 | 특징 |
|---|---|---|---|
| VirtualBox | 오라클 | Type 2 | GPL 공개. 무료. 전가상화 |
| VMware Workstation | VMware | Type 2 | 상용. 개인용 |
| VMware ESXi | VMware | Type 1 | 서버용 |
| KVM | 오픈소스 | Type 1 | 리눅스 커널에 내장됨 |
| Xen | 오픈소스 | Type 1 | 반가상화의 대표 |
| Hyper-V | 마이크로소프트 | Type 1 | 윈도 서버용 |
| QEMU | 오픈소스 | 에뮬레이터 | 다른 CPU도 흉내 낸다. KVM과 함께 쓴다 |
시험에 제품 스펙 그대로 나오는 항목이다.
| 항목 | 내용 |
|---|---|
| 개발 | 오라클(원래 이노테크 → 썬 → 오라클) |
| 라이선스 | GPL (기본 패키지) |
| 종류 | Type 2 호스트형 |
| 가상화 방식 | 전가상화 (Intel VT-x / AMD-V 활용) |
| 기본 이미지 | VDI |
| 지원 이미지 | VMDK(VMware), VHD(마이크로소프트), HDD(Parallels) |
⚠️ "VirtualBox는 반가상화를 지원한다"는 설명은 틀린 것으로 출제된다. VirtualBox는 Intel VT-x·AMD-V를 이용한 전가상화 제품이다. 반면 VMDK와 VHD 이미지를 지원한다는 설명은 맞다.
| 더 알아 둘 것 | 내용 |
|---|---|
| 설치할 수 있는 호스트 | 윈도 · 리눅스 · macOS · 솔라리스 — 여러 운영체제에서 돈다 |
| 게스트 확장(Guest Additions) | 게스트 안에 설치하는 드라이버 묶음. 공유 폴더, 클립보드 공유, 화면 해상도 자동 조절을 쓸 수 있게 된다 |
| 확장 팩(Extension Pack) | 일부 추가 기능을 담은 별도 묶음. 기본 패키지와 달리 GPL이 아닌 별도 라이선스다 |
| 스냅샷 | 가상 머신의 현재 상태를 저장하고 되돌린다 |
VBoxManage | 창 없이 가상 머신을 다루는 명령줄 도구 |
제품과 형식을 짝짓는 문제의 재료다.
| 형식 | 풀네임 | 만든 쪽 |
|---|---|---|
| VDI | Virtual Disk Image | VirtualBox 기본 |
| VMDK | Virtual Machine Disk | VMware |
| VHD | Virtual Hard Disk | 마이크로소프트 (후속 형식은 VHDX) |
| HDD | — | Parallels |
| qcow2 | QEMU Copy On Write | QEMU·KVM |
| 제품 | 종류 | 쓰는 곳 |
|---|---|---|
| VMware ESXi | Type 1 | 서버·데이터센터 |
| VMware Workstation | Type 2 | 윈도·리눅스 PC |
| VMware Fusion | Type 2 | macOS |
| 항목 | 내용 |
|---|---|
| 시작 | 영국 케임브리지 대학의 연구 프로젝트 |
| 종류 | Type 1 |
| 방식 | 반가상화로 출발, 이후 전가상화(HVM)도 지원 |
| Dom0 | 하드웨어를 직접 다루며 다른 게스트를 관리하는 특별한 도메인 |
| DomU | 일반 게스트 도메인 |
| 항목 | 내용 |
|---|---|
| 풀네임 | Kernel-based Virtual Machine |
| 특징 | 리눅스 커널 자체가 하이퍼바이저가 된다 |
| 종류 | Type 1 |
| 함께 쓰는 것 | QEMU(장치 흉내), libvirt·virsh(관리) |
lsmod | grep kvm
# kvm_intel 368640 0
# kvm 1028096 1 kvm_intel
virsh list --all
# Id Name State
# ------------------------
# 1 web01 running
# - db01 shut offkvm 이 공통 모듈이고 kvm_intel(인텔) 또는 kvm_amd(AMD) 가 CPU에 맞춰 함께 올라간다. kvm 줄 끝의 1 kvm_intel 은 "이 모듈을 kvm_intel 하나가 쓰고 있다"는 뜻이다.virsh list --all 은 꺼진 가상 머신까지 보여 준다. 실행 중인 것만 Id 번호를 받고 꺼진 것은 - 다.| 도구 | 맡는 일 |
|---|---|
| KVM | CPU·메모리 가상화 (커널 모듈) |
| QEMU | 디스크·네트워크 카드 같은 장치 흉내 |
| libvirt | 여러 가상화 기술을 같은 방법으로 다루게 해 주는 관리 계층 |
virsh | libvirt의 명령줄 도구 |
virt-manager | libvirt의 그래픽 관리 도구 |
| 구분 | 가상 머신 | 컨테이너 |
|---|---|---|
| 게스트 OS | 각각 따로 있다 | 호스트 커널을 공유한다 |
| 크기 | 무겁다(GB) | 가볍다(MB) |
| 시작 속도 | 느리다 | 빠르다 |
| 격리 수준 | 강하다 | 상대적으로 약하다 |
| 예 | VirtualBox, KVM | Docker, LXC |
가상 머신 컨테이너
앱 앱 앱 앱
게스트 OS 게스트 OS ─────────────────
───────────────── 컨테이너 엔진(Docker)
하이퍼바이저 ─────────────────
───────────────── 호스트 OS (커널 하나를 함께 쓴다)
하드웨어 ─────────────────
하드웨어| 지문에 나온 표현 | 답 |
|---|---|
| "게스트 OS의 수정 없이" | 전가상화 |
| "게스트 OS의 커널을 수정해", "하이퍼콜" | 반가상화 |
| "하드웨어 위에서 직접 동작" | Type 1 (Xen·KVM·ESXi·Hyper-V) |
| "호스트 운영체제 위에 설치" | Type 2 (VirtualBox·VMware Workstation) |
| "리눅스 커널에 포함되어 커널이 하이퍼바이저 역할" | KVM |
| "Dom0", "케임브리지 대학" | Xen |
| "오라클", "VDI 기본, VMDK·VHD 지원", "기본 패키지 GPL" | VirtualBox |
| "다른 CPU 구조까지 흉내" | QEMU (에뮬레이터) |
| "호스트의 커널을 공유", "프로세스 격리" | 컨테이너 (Docker·LXC) |
내일은 임베디드 시스템과 기술 동향을 다룬다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
다음 중 게스트 운영체제의 커널을 수정해야 하는 가상화 방식으로 알맞은 것은?
문제 2
다음 중 VirtualBox에 대한 설명으로 알맞지 않은 것은?
문제 3
다음 중 하드웨어 위에서 직접 동작하는 Type 1 하이퍼바이저에 해당하는 것으로 알맞은 것은?
문제 4
다음 중 KVM에 대한 설명으로 알맞은 것은?
문제 5
다음 중 컨테이너 기술의 특징으로 알맞은 것은?