하이퍼바이저(Hypervisor)의 종류

가상화 기술은 사용자에게 가상화된 운영 환경을 제공하기 위함인데요.
가상화된 운영 환경은 크게 다음의 두 가지가 있을거예요.

  • 가상머신(VM)
  • 컨테이너

첫번째는 하이퍼바이저를 이용하여 하드웨어 스택 전체를 가상화하여 가상머신(VM)으로 제공하는 방법이고, 두번째는 운영체제 수준에서 프로세스를 컨테이너 형태로 격리하여 제공하는 방법입니다.

Container vs VM (출처: Docker Container)

위 두 가지 방식의 가상화 기술은 각각의 장단점이 명확하기 때문에, 컨테이너에 대한 관심도 증가에도 불구하고 아직은 대부분의 클라우드 환경에서 혼용되어 사용되고 있습니다. 서버 가상화(VM)를 이해하려면 하이퍼바이저를 이해해야 하고, 컨테이너 기반 가상화를 이해하려면 컨테이너 기술 및 도커를 이해해야 합니다.

이번 글에서는 서버 가상화의 핵심인 하이퍼바이저의 종류에 대해 간단히 알아보려고 합니다. 하이퍼바이저 종류가 너무 많아서 좀 정리할 필요가 있습니다.
하이퍼바이저를 분류할 때 보통 다음의 두 가지 기준에 의해 분류합니다.

  • 하이퍼바이저의 위치와 역할에 따른 분류
    : Type 1, Type 2
  • 하이퍼바이저의 가상화 방식에 따른 분류
    : 전가상화, 반가상화

하이퍼바이저의 위치와 역할에 따른 분류

하이퍼바이저가 어느 위치에서 어떤 역할을 담당하는지에 따라 분류합니다.

하이퍼바이저 타입
하이퍼바이저 타입 (출처: 위키피디아)

Type 1
: 'Native' 또는 'Bare Metal' 형 하이퍼바이저

Type 1 하이퍼바이저는 호스트 하드웨어에 직접 설치하여 구동됩니다.
위의 그림을 보면 Type 1 하이퍼바이저의 경우 하드웨어 바로 위에 위치함을 알 수 있습니다. 그래서, 하드웨어를 제어하는 OS 역할과 VM 들을 관리하는 역할을 모두 하이퍼바이저가 담당합니다. 여러 하드웨어 드라이버들을 모두 설정해주어야 하므로 설치가 까다롭습니다. Windows 나 Linux 를 설치하듯이, 아무 것도 설치되어 있지 않은 컴퓨터에 하이퍼바이저를 설치해야 합니다.
예를 들어, Xen 하이퍼바이저의 설치 화면을 보면 아래와 같이 마치 OS 를 설치할 때와 유사하다는 것을 알 수 있습니다.

XenServer 설치 (출처: zetawiki ZenServer 설치 실습)

또 다른 예로, Microsoft Hyper-V 의 경우 OS 를 설치하면 기본으로 제공되기 때문에 Hyper-V 다운로드가 필요하지는 않고 해당 옵션을 활성화시키는 방식으로 사용할 수 있습니다.

Win10 에 Hyper-V 설치 (출처: docs.microsoft.com)

위와 같이 하이퍼바이저가 하드웨어 위에서 설치 또는 활성화되면, 이제 Guest 가상머신(VM)을 생성하고 원하는 운영체제를 선택하여 설치할 수 있습니다.

이와 같은 Type 1 방식 하이퍼바이저로는 다음과 같은 제품들이 있습니다.

  • 젠(Xen)
  • KVM(Kernel-based Virtual Machine)
  • Citrix의 XenServer
  • IBM의 POWER 하이퍼바이저(PR/SM)
  • 스파크(SPARC)용 오라클(Oracle) VM 서버
  • x86용 오라클 VM 서버
  • 마이크로소프트 하이퍼(Hyper)-V
  • VM웨어의 ESX Server

Type 2
: 'Hosted' 하이퍼바이저

다른 Application 과 마찬가지로 호스트 OS 위에 설치되는 방식의 하이퍼바이저입니다. 즉, 기존의 컴퓨터 환경을 그대로 사용하는 방식이므로 설치 및 구성이 편리하다는 장점이 있습니다.
VirtualBox 설치해보신 분이라면 감이 잡히실 거예요. 다른 프로그램과 마찬가지로 설치 과정 거친 후 가상머신 이미지를 만들어서 띄우면 됩니다.
위의 Type 2 그림을 보면 하이퍼바이저가 하드웨어 바로 위에 위치하는 것이 아니라 Host OS 위에 위치한다는 것을 확인할 수 있습니다. 따라서, 하드웨어 기준으로 Type 1 에서는 Guest OS 가 2 번 째 수준에서 실행되는 반면, Type 2 에서는 3 번 째 수준에서 실행된다는 것을 알 수 있습니다.
한단계의 Layer 를 더 타야하므로 성능 관점에서 보면 Type 1 이 Type 2 보다 유리한 면이 있습니다.

Oracle VM VirtualBox Architecture (출처: Inside Oracle VM VirtualBox)

위의 그림은 Type 2 방식에 속하는 VirtualBox 의 구조를 나타냅니다.
VirtualBox 내부에는 각 플랫폼 위에서 동작할 수 있는 VirtualBox Hypervisor 가 내장되어 있음을 확인할 수 있습니다.

Type 2 방식에 속하는 하이퍼바이저로는 다음과 같은 제품들이 있습니다.

  • VM웨어 워크스테이션(Workstation)
  • VM웨어 플레이어(Player)
  • 버추얼박스(VirtualBox)
  • 맥용 패럴랠스 데스크톱(Parallels Desktop for Mac)
  • QEMU

하이퍼바이저의 가상화 방식에 따른 분류

위에서 살펴본 Type 1 하이퍼바이저는 다시 가상화 방식에 따라 전가상화(Full Virtualization)와 반가상화(Para-Virtualization)로 분류할 수 있습니다. 하지만, 어디까지나 분류는 분류일 뿐 Type 1 하이퍼바이저들이 모두 전가상화에만 속하거나 반가상화에만 속하는 것은 아닙니다.
최근에는 하이퍼바이저에서 전가상화와 반가상화의 경계가 별 의미가 없어졌습니다.

전가상화와 반가상화에 대한 설명은 아래 링크로 대신합니다.
전가상화 및 반가상화, Xen 및 KVM 에 대해서 어느 정도 개념을 잡기 좋은 블로그인 것 같네요.

위의 내용을 간략히 핵심만 정리해 봅니다.

  • Vmware 나 Qemu 가 대표적인 Full Virtualization 제품에 속하고, Xen 이 대표적인 Para-Virtualization 제품에 속했다(과거형).
  • 전가상화는 모든 CPU 명령어를 가상화(애뮬레이션)하므로 아키텍처에 제한을 받지 않지만 느리다.
  • 반가상화는 꼭 필요한 CPU 명령어만 가상화한다.
    -> 꼭 필요한 명령어만을 가상화 요청(Hyper Call)하도록 커널 수정 필요
    -> 커널 수정이 필요하므로 Windows 는 지원하지 못했었다. (오픈소스만 가능)
    -> 하드웨어 가상화 기술(Inten VT-x / AMD SVM)이 나온 후로 가상머신을 만드는 방법이 간편해짐.
  • Qemu 는 소프트웨어 애뮬레이터이고 느리다.
    -> 하드웨어 가상화 기술이 나온 이후 CPU 애뮬레이트는 이를 활용하게 됨 : KVM
    -> QEMU 는 다양한 디바이스/하드웨어에 대한 에뮬레이팅을 담당하고, KVM 은 CPU/Memory 가상화를 담당
  • Xen 은 반 가상화 하이퍼바이저로 등장했지만 오래 전부터 전 가상화도 지원한다.
    -> Xen 전 가상화 기능의 경우 하드웨어 가상화 기술을 이용한다.
  • VMWare 나 KVM 도 전 가상화 하이퍼바이저이지만 반 가상화 기능을 제공한다.
    -> 전 가상화와 반 가상화 하이퍼바이저의 경계가 거의 없어짐.
  • 이제는 가상화를 위해 어떤 하이퍼바이저를 사용하는지는 중요하지 않다.

위와 같이 가상화의 종류에 대해 정리를 했지만, 다음과 같이 한방에 정리할 수도 있겠습니다.
모든 분류 케이스를 담고 있어서 저는 이 그림이 가장 마음에 듭니다.

가상화 분류 한방 정리 그림

어느 정도 이해를 하고 사용하려는 의도에서 위와 같이 분류를 해보았지만, 제 생각에 하이퍼바이저의 분류에 너무 집착할 필요는 없을 것 같습니다. 위에서 언급했듯이 전가상화, 반가상화의 경계가 이미 모호해졌고 하드웨어에서의 가상화 기능 지원으로 성능도 점차로 평준화되어가고 있지 않나 싶습니다.
그보다는 자신의 서비스에서 컨테이너 방식을 사용하는게 맞을까, 또는 서버 가상화나 베어메탈 환경을 사용하는게 맞을까를 제일 먼저 고민해야 할 것 같네요.


참고 : 하이퍼바이저용 가상머신 이미지 포맷(format)

위에서 살펴본 각 하이퍼바이저에서 지원하는 다양한 이미지 포맷들이 있습니다.
이미지라고 하면 가상머신 이미지를 말하는데, 이는 부팅가능한 OS 가 설치된 가상 Disk 를 포함하는 하나의 파일을 말합니다. 즉, 하이퍼바이저 위에서 구동가능한 가상 컴퓨팅 환경(가상머신)을 일정한 포맷을 이용해 파일로 만들어놓은 것입니다.
가상머신 이미지 파일만 있으면 서로 다른 가상화 환경 또는 클라우드 환경에서 해당 가상머신을 기동할 수 있습니다. 다만, 해당 이미지 포맷을 지원하는 하이퍼바이저를 사용하는 환경이어야 가능하겠죠.

다음은 하이퍼바이저 별로 지원하는 이미지 포맷입니다.

  • KVM        : img(Raw), qcow2(qemu), vmdk(vmware)
  • VMWare   : vmdk
  • VirtualBox : vdi, vmdk, qcow2, vhd
  • Hyper-V   : vhd, vmdk, vdi
  • XEN, XENServer : qcow2, vhd

각 이미지 포맷에 대한 간단한 설명은 (이곳)과 (이곳)에서 확인하실 수 있습니다.
위의 지원 이미지 포맷들을 보면 각 하이퍼바이저에서 어떤 포맷으로 만들었을 때 다른 하이퍼바이저에서도 지원이 가능한지 확인할 수 있습니다. 즉, KVM 환경에서 vmdk 포맷으로 가상머신 이미지를 만들었다면, 이 파일은 VMWare 및 VirtualBox, Hyper-V 등의 하이퍼바이저 환경에서도 이용할 수 있습니다.

참고로 OpenStack 에서 이미지를 생성하려고 하면 포맷을 선택해야 합니다.
이 때 선택가능한 포맷 리스트들을 보면 위의 포맷들이 포함되어 있음을 확인할 수 있습니다.
OpenStack 은 KVM, Xen, Hyper-V, Docker, QEMU 등 다양한 하이퍼바이저(Docker 는 컨테이너)를 지원하기 때문에, 이미지 포맷 또한 다양한 형식으로 생성해서 구동할 수 있습니다.


References
클라우드 가상화 기술의 변화
구글 클라우드 : 컨테이너란 무엇인가?
컨테이너 기반 가상화
서버 가상화의 미래 : 컨테이너 및 서버리스 비교 진단
한국 클라우드 시장 3 년 분석
컨테이너와 VM의 차이는 무엇인가요?
컨테이너 vs. 가상머신
https://www.slideshare.net/rkawkxms/docker-container
제타위키: ZenServer 설치 및 실습
Window10 에 Hyper-V 설치
VirtualBox : Technical Background
Inside Oracle VM VirtualBox
OpenStack Virtual Machine Image Guide
OpenStack 이미지 만들기
OpenStack 이 지원하는 하이퍼바이저 종류
전가상화와 반가상화
가상화 타입 그리고 전가상화와 반가상화
https://virtualhive.tistory.com/36
하이퍼바이저 Xen의 아키텍처
가상화기술의 유형
Xen 과 KVM
KVM이란 무엇일까요?
Xen 하이퍼바이저의 구조
하이퍼바이저 구현방법을 공부하기 위한 가이드
가상머신 기반 가상화와 컨테이너 기술

You may also like...

5 2 votes
Article Rating
Subscribe
Notify of
guest
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

[…] 하이퍼바이저(Hypervisor)의 종류 – Rain.i […]

6
0
Would love your thoughts, please comment.x
()
x