CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
    • 1.클러스터링
    • 2.가상화
    • 3.임베디드와 기술 동향
    • 4.종합 모의 1: 리눅스 일반 + 운영 및 관리
    • 5.종합 모의 2: 리눅스 활용과 최종 정리
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 11/Day 2

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 11 · Day 2읽기 약 14분
핵심 정리
  • 가상화는 한 대의 물리 컴퓨터에서 여러 운영체제를 동시에 돌리는 기술이다.
  • 전가상화는 게스트 OS를 고치지 않아도 되고, 반가상화는 게스트 OS를 수정해야 한다.
  • 하이퍼바이저는 둘로 나뉜다 — Type 1(하드웨어 위에 바로) 과 Type 2(운영체제 위에).
  • VirtualBox는 오라클의 Type 2 제품이며 GPL 로 공개되어 있고 전가상화를 쓴다.
  • VirtualBox는 VMware의 VMDK와 마이크로소프트의 VHD 이미지를 지원한다.

Day 2 - 가상화

가상화란

가상화가 없을 때와 하이퍼바이저를 둘 때의 구조 비교

  • 하이퍼바이저(hypervisor) 가 하드웨어를 나눠 각 가상 머신에 배분한다.
  • 물리 컴퓨터를 호스트, 그 위의 가상 컴퓨터를 게스트라 한다.
  • 하이퍼바이저는 VMM(Virtual Machine Monitor, 가상 머신 모니터)이라고도 부른다. 같은 것의 다른 이름이다.
이름가리키는 것예
호스트 OS물리 컴퓨터에 직접 설치된 운영체제내 노트북의 윈도
게스트 OS가상 머신 안에 설치한 운영체제그 안에 설치한 리눅스
가상 머신(VM)하이퍼바이저가 만들어 준 가짜 하드웨어 한 벌CPU 2개·메모리 4GB·디스크 20GB짜리 한 대
디스크 이미지게스트의 하드디스크 노릇을 하는 호스트의 파일 하나rocky9.vdi
  • 게스트의 디스크는 결국 호스트에 있는 파일이다. 그래서 가상 머신은 복사·백업·이동이 쉽고, 이 파일의 형식(VDI·VMDK·VHD) 이 제품마다 달라 시험에 나온다.
가상화로 얻는 것설명
서버 통합한가한 서버 여러 대를 한 대의 물리 장비에 모아 자원 낭비를 줄인다
격리게스트 하나가 망가져도 다른 게스트와 호스트는 영향이 없다
스냅샷어느 시점의 상태를 저장해 두었다가 그때로 되돌린다
이식성이미지 파일만 옮기면 다른 장비에서 그대로 켠다
  • 2주차에 "학습용이라면 가상 머신에 설치하라"고 권한 이유가 이 스냅샷이다. 파티션을 잘못 나눠도 되돌리면 그만이다.

하이퍼바이저의 두 종류

구분Type 1 (네이티브·베어메탈)Type 2 (호스트형)
위치하드웨어 위에 바로운영체제 위에
성능좋다상대적으로 낮다
용도서버·데이터센터개인 PC·테스트
예Xen, KVM, VMware ESXi, Hyper-VVirtualBox, VMware Workstation
  • Type 1은 그 자체가 운영체제 역할을 한다. 그래서 빠르다.
  • Type 2는 이미 깔린 운영체제 위에 프로그램처럼 설치한다. 설치가 간단해 개인용으로 쓴다.
      Type 1 (네이티브)                 Type 2 (호스트형)
 
   게스트 OS   게스트 OS             게스트 OS   게스트 OS
   ─────────────────────             ─────────────────────
       하이퍼바이저                      하이퍼바이저      ← 프로그램의 하나
   ─────────────────────             ─────────────────────
         하드웨어                          호스트 OS       ← 한 층이 더 있다
                                     ─────────────────────
                                           하드웨어
  • 가르는 질문은 "하이퍼바이저 밑에 무엇이 있나" 다. 하드웨어면 Type 1, 운영체제면 Type 2 다.
  • Type 2가 느린 이유는 그림의 한 층이다. 게스트의 요청이 하이퍼바이저를 거친 뒤 호스트 OS를 한 번 더 거쳐야 하드웨어에 닿는다.
  • KVM이 헷갈리는 지점이다. 리눅스를 먼저 설치하고 쓰니 Type 2처럼 보이지만, 모듈이 올라가면 리눅스 커널 자체가 하이퍼바이저로 동작하므로 Type 1로 분류한다. 시험도 이 분류를 따른다.
  • 같은 회사 제품이 양쪽에 다 있다 — VMware ESXi는 Type 1, VMware Workstation은 Type 2. "VMware"라는 이름만으로 고르면 틀린다.

전가상화와 반가상화

구분전가상화 (Full)반가상화 (Para)
게스트 OS 수정필요 없다필요하다
방식하드웨어를 그대로 흉내게스트가 하이퍼바이저에 직접 요청
성능보통 (하드웨어 지원 시 개선)좋다
하드웨어 지원Intel VT-x / AMD-V 활용—
대표VirtualBox, VMware, KVMXen(초기)

가르는 기준은 "게스트 OS를 고쳐야 하는가" 다. 전가상화는 수정 없이 그대로, 반가상화는 수정이 필요하다. 대신 반가상화가 더 빠르다.

  • Intel VT-x와 AMD-V는 CPU가 가상화를 도와주는 기능이다. 이 덕분에 전가상화도 성능이 크게 좋아졌고, 지금은 전가상화가 주류다.
  • Xen은 반가상화로 시작했지만 지금은 전가상화도 지원한다.

왜 게스트를 고쳐야 하나

운영체제는 하드웨어를 자기 혼자 독점한다고 믿고 만들어졌다. 한 컴퓨터에 그런 운영체제가 여럿 올라가면 누군가 교통정리를 해야 한다.

   전가상화                              반가상화
 
   게스트 OS : "디스크에 직접 쓴다"       게스트 OS : "하이퍼바이저야, 써 줘"
        │  (자기가 가상 머신인 줄 모른다)       │  (자기가 가상 머신인 줄 안다)
        ▼                                    ▼
   하이퍼바이저가 그 명령을 가로채         하이퍼콜(hypercall)로 바로 요청
   진짜 하드웨어 대신 흉내 내어 처리        → 가로채고 흉내 내는 과정이 없다
질문전가상화반가상화
게스트는 자신이 가상 머신임을 아는가모른다안다
하이퍼바이저에 일을 시키는 방법평소처럼 명령 → 하이퍼바이저가 가로챈다하이퍼콜로 직접 요청
수정할 수 없는 OS(윈도 등)를 올릴 수 있나있다어렵다 (커널을 고쳐야 하므로)
느린 이유 / 빠른 이유가로채고 흉내 내는 비용그 과정을 건너뛴다
  • 반가상화가 빠른데도 주류가 되지 못한 이유가 셋째 줄이다. 소스를 고칠 수 없는 운영체제는 올릴 수 없다.
  • CPU가 가로채는 일을 직접 도와주면서(Intel VT-x, AMD-V) 전가상화의 약점이 줄었다. 이렇게 CPU의 도움을 받는 방식을 하드웨어 지원 가상화라 한다.

리눅스에서는 CPU가 이 기능을 갖췄는지 /proc/cpuinfo 로 확인한다.

grep -E -c 'vmx|svm' /proc/cpuinfo
# 4
플래그뜻
vmxIntel VT-x 지원
svmAMD-V 지원
  • 출력된 숫자는 플래그가 보이는 논리 CPU의 개수다. 위 예는 코어 4개 모두 지원한다는 뜻이고, 0이면 그 환경에서는 하드웨어 지원 가상화를 쓸 수 없다.
  • 플래그 이름과 회사를 바꿔 묻는다. vmx가 인텔, svm이 AMD 다.

제품별 특징

제품만든 곳종류특징
VirtualBox오라클Type 2GPL 공개. 무료. 전가상화
VMware WorkstationVMwareType 2상용. 개인용
VMware ESXiVMwareType 1서버용
KVM오픈소스Type 1리눅스 커널에 내장됨
Xen오픈소스Type 1반가상화의 대표
Hyper-V마이크로소프트Type 1윈도 서버용
QEMU오픈소스에뮬레이터다른 CPU도 흉내 낸다. KVM과 함께 쓴다

VirtualBox

시험에 제품 스펙 그대로 나오는 항목이다.

항목내용
개발오라클(원래 이노테크 → 썬 → 오라클)
라이선스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창 없이 가상 머신을 다루는 명령줄 도구
  • 보기에 "VirtualBox 전체가 GPL" 이 아니라 "기본 패키지가 GPL" 이라고 적히는 이유가 확장 팩이다.
  • 실제 VirtualBox 설정 창에는 "반가상화 인터페이스"라는 항목이 있어 혼란스러울 수 있다. 이것은 게스트에 시각 정보 등을 알려 주는 보조 기능이고, 제품의 가상화 방식 분류는 전가상화다. 시험에서는 분류대로 답한다.

가상 디스크 이미지 형식

제품과 형식을 짝짓는 문제의 재료다.

형식풀네임만든 쪽
VDIVirtual Disk ImageVirtualBox 기본
VMDKVirtual Machine DiskVMware
VHDVirtual Hard Disk마이크로소프트 (후속 형식은 VHDX)
HDD—Parallels
qcow2QEMU Copy On WriteQEMU·KVM
  • VirtualBox는 자기 형식(VDI)만 쓰는 것이 아니라 남의 형식(VMDK·VHD)도 읽는다. "다른 회사의 이미지는 지원하지 않는다"는 보기는 틀린 설명이다.
  • VDI는 뜻이 둘이다. VirtualBox 맥락에서는 디스크 이미지 형식이고, 기술 동향 맥락에서는 데스크톱 가상화(Virtual Desktop Infrastructure — 서버에 둔 데스크톱 화면을 원격으로 받아 쓰는 방식)다. 지문의 앞뒤로 가린다.

VMware

제품종류쓰는 곳
VMware ESXiType 1서버·데이터센터
VMware WorkstationType 2윈도·리눅스 PC
VMware FusionType 2macOS
  • VMware는 상용 제품이라는 점이 오픈소스인 VirtualBox(기본 패키지)·KVM·Xen과 갈린다.

Xen

항목내용
시작영국 케임브리지 대학의 연구 프로젝트
종류Type 1
방식반가상화로 출발, 이후 전가상화(HVM)도 지원
Dom0하드웨어를 직접 다루며 다른 게스트를 관리하는 특별한 도메인
DomU일반 게스트 도메인
  • Xen은 가상 머신을 도메인(domain) 이라 부른다. Dom0이 관리용, DomU가 일반 게스트다.
  • "반가상화의 대표"로 묻지만 "전가상화를 전혀 못 한다"는 설명은 틀리다.

KVM

항목내용
풀네임Kernel-based Virtual Machine
특징리눅스 커널 자체가 하이퍼바이저가 된다
종류Type 1
함께 쓰는 것QEMU(장치 흉내), libvirt·virsh(관리)
  • 별도 하이퍼바이저를 설치하는 것이 아니라 커널 모듈을 올리면 리눅스가 곧 하이퍼바이저가 된다. 이 점이 KVM의 정의다.
lsmod | grep kvm
# kvm_intel             368640  0
# kvm                  1028096  1 kvm_intel
virsh list --all
#  Id   Name    State
# ------------------------
#  1    web01   running
#  -    db01    shut off
  • kvm 이 공통 모듈이고 kvm_intel(인텔) 또는 kvm_amd(AMD) 가 CPU에 맞춰 함께 올라간다. kvm 줄 끝의 1 kvm_intel 은 "이 모듈을 kvm_intel 하나가 쓰고 있다"는 뜻이다.
  • virsh list --all 은 꺼진 가상 머신까지 보여 준다. 실행 중인 것만 Id 번호를 받고 꺼진 것은 - 다.
  • KVM은 CPU의 VT-x / AMD-V가 있어야 동작하는 전가상화 방식이다. 리눅스 커널 2.6.20부터 커널에 포함되었다.
도구맡는 일
KVMCPU·메모리 가상화 (커널 모듈)
QEMU디스크·네트워크 카드 같은 장치 흉내
libvirt여러 가상화 기술을 같은 방법으로 다루게 해 주는 관리 계층
virshlibvirt의 명령줄 도구
virt-managerlibvirt의 그래픽 관리 도구
  • QEMU만 쓰면 다른 CPU 구조까지 흉내 내는 에뮬레이터라 느리다. KVM과 함께 쓰면 CPU 명령을 진짜 CPU가 직접 처리해 빨라진다. 그래서 둘은 늘 붙어 다닌다.

컨테이너 — 가상화와 다르다

구분가상 머신컨테이너
게스트 OS각각 따로 있다호스트 커널을 공유한다
크기무겁다(GB)가볍다(MB)
시작 속도느리다빠르다
격리 수준강하다상대적으로 약하다
예VirtualBox, KVMDocker, LXC
  • 컨테이너는 운영체제를 따로 올리지 않는다. 커널을 공유하고 프로세스만 격리한다. 그래서 가볍고 빠르다.
  • Docker는 가상 머신이 아니다. 이 구분을 묻는 문제가 나온다.
      가상 머신                          컨테이너
 
   앱        앱                       앱        앱
   게스트 OS  게스트 OS                 ─────────────────
   ─────────────────                   컨테이너 엔진(Docker)
     하이퍼바이저                       ─────────────────
   ─────────────────                    호스트 OS (커널 하나를 함께 쓴다)
       하드웨어                         ─────────────────
                                           하드웨어
  • 그림에서 게스트 OS 층이 통째로 없다. 컨테이너가 가볍고 빨리 뜨는 이유의 전부다.
  • 컨테이너는 리눅스 커널의 두 기능으로 만든다 — 프로세스가 볼 수 있는 범위를 가르는 네임스페이스(namespace)와 쓸 수 있는 자원을 제한하는 cgroups다.
  • 커널을 공유하므로 호스트와 다른 커널의 운영체제는 올릴 수 없다. 리눅스 호스트의 컨테이너 안은 언제나 리눅스다. 윈도를 올리려면 가상 머신이 필요하다.

지문으로 가려내기

지문에 나온 표현답
"게스트 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. 전가상화가 언제나 더 빠르다 → 원리상으로는 반가상화가 빠르다. 전가상화는 CPU 지원으로 그 차이를 줄였을 뿐이다.
  3. VirtualBox는 Type 1이다 → 운영체제 위에 설치하는 Type 2 다.
  4. KVM은 Type 2다 → 커널 자체가 하이퍼바이저가 되므로 Type 1 이다.
  5. VMware 제품은 모두 Type 2다 → ESXi는 Type 1 이다.
  6. VirtualBox는 VDI 형식만 쓴다 → VMDK·VHD도 지원한다.
  7. VHD는 VMware의 형식이다 → VHD는 마이크로소프트, VMware는 VMDK 다.
  8. vmx가 AMD의 플래그다 → vmx는 인텔, svm이 AMD 다.
  9. Docker는 Type 2 하이퍼바이저다 → 하이퍼바이저가 아니라 컨테이너 기술이다.
  10. 컨테이너마다 커널이 따로 있다 → 호스트 커널 하나를 공유한다. 따로 있는 쪽이 가상 머신이다.

내일은 임베디드 시스템과 기술 동향을 다룬다.

📖 용어

  • 가상화 : 한 대의 물리 컴퓨터에서 여러 운영체제를 동시에 실행하는 기술.
  • 하이퍼바이저 : 가상 머신에 하드웨어 자원을 나누어 주는 소프트웨어.
  • Type 1 / Type 2 : 하드웨어 위에서 바로 동작하는 방식 / 운영체제 위에 설치하는 방식.
  • 전가상화 : 게스트 OS를 수정하지 않고 하드웨어를 흉내 내는 방식.
  • 반가상화 : 게스트 OS를 수정해 하이퍼바이저에 직접 요청하는 방식.
  • VirtualBox : 오라클의 Type 2 가상화 제품. GPL로 공개되어 있고 전가상화를 사용한다.
  • KVM : 리눅스 커널 자체를 하이퍼바이저로 만드는 가상화 기술.
  • 컨테이너 : 호스트 커널을 공유하며 프로세스만 격리하는 경량 방식. Docker가 대표적이다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 게스트 운영체제의 커널을 수정해야 하는 가상화 방식으로 알맞은 것은?

문제 2

다음 중 VirtualBox에 대한 설명으로 알맞지 않은 것은?

문제 3

다음 중 하드웨어 위에서 직접 동작하는 Type 1 하이퍼바이저에 해당하는 것으로 알맞은 것은?

문제 4

다음 중 KVM에 대한 설명으로 알맞은 것은?

문제 5

다음 중 컨테이너 기술의 특징으로 알맞은 것은?

이전클러스터링Week 11 · Day 1다음 임베디드와 기술 동향Week 11 · Day 3

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 가상화란
  • 하이퍼바이저의 두 종류
  • 전가상화와 반가상화
  • 왜 게스트를 고쳐야 하나
  • 제품별 특징
  • VirtualBox
  • 가상 디스크 이미지 형식
  • VMware
  • Xen
  • KVM
  • 컨테이너 — 가상화와 다르다
  • 지문으로 가려내기
  • 자주 틀리는 지점
  • 용어
  • 연습 문제