[Infra] Hypervisor

김관응·2023년 3월 30일
1

Infra

목록 보기
4/9
post-thumbnail

Hypervisor는 가상화를 구현하기 위한 기반이 되는 기술이다.
OS마다 자원 관리 관련 명령과 규칙이 다른데, Hypervisor는 VM에게 하드웨어의 자원을 적절히 할당 해준다.

1. bare-metal(native)

bare-metal은 "어떤 소프트웨어도 담겨져 있지 않은 하드웨어"를 의미한다.

Hypervisor 구동 시 DOM0이라는 관리용 VM이 같이 구동된다. DOM0에서 얼마나 많은 일을 처리하느냐에 따라 크게 두 가지로 나뉜다.

1-1. 전가상화(full virtuallization)

커널에서 사용하는 규칙은 운영체제마다 다르다. 따라서 각 VM들의 명령어가 달라 하드웨어가 알기 쉽게 전달하는 것이 Hipervisor 역할이다.

여기서 각 VM은 DOM0에게 명령을 전달하고, DOM0에서 이를 해석해 Hypervisor에게 알려준다.
즉, 모든 명령에 대해 DOM0이 개입하기 때문에 성능이 반가상화에 비해 비교적 느리다.

1-2. 반가상화(para virtuallization)

반가상화는 전가상화에서 DOM0이 수행하던 '번역'의 역할을 각 VM에서 처리하는 것이다.

번역된 명령을 DOM0을 통해서가 아니라 Hypervisor에게 직접 전달되는데 이때 쓰는 명령을 Hyper-Call 이라 부른다.
하지만 기본적인 커널은 Hyper-Call에 대한 지식이 없어 커널을 직접 수정해 주어야 한다.

2. hosted

Host OS 방식은 우리가 일반적으로 사용하는 VM을 생각하면 된다.
하드웨어에 Host OS를 설치한 뒤 그 위에 Hypervisor를 설치하는 구조이다.

HostOS가 하드웨어를 알아서 관리해주기 때문에 DOM0과 같은 관리 툴이 따로 필요 없다.

하지만 HostOS 위에 Hypervisor가 구동되고 그 위에 VM을 띄우는 방식이기 때문에 오버헤드가 크다.

profile
엔지니어였던 개발자

0개의 댓글