전가상화 VS 반가상화

무거운엉덩이·2022년 11월 4일
0

Type-1 vs Type-2의 차이

Type-1

하이퍼바이저 위에 게스트OS가 바로 탑재되는 형태. 네이티브 또는 베어메탈 하이퍼바이저를 이용하는 가상화이다. 베어메탈을 관리할 OS를 설치하지 않기 때문에 호스트형 가상화에 비해 오버헤드가 적다는 장점이 있다. 또한 하드웨어 리스소 관리가 유연하므로 Type2보다 성능이 좋다. 하지만 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리에 필요한 컴퓨터나 콘솔(CLI)이 필요하다. 그래서 Type-2보다 사용성이 낮다.

ex) Oracle VM Server for X86, VM Server, Citrix Xenserver, Hyper-V 등

Type-2

호스트 운영체제 위에 하이퍼바이저가 있다. 예를 들어 운영체제가 윈도우를 쓰면서 VMware는 하이퍼바이저, VM이 리눅스 이런 식이다. 베어메탈을 구동하기 위한 호스트 운영체제가 설치되고, 그 위에 하이퍼 바이저가 실행된다. 호스트 운영체제-하이퍼바이저-가상의 하드웨어 에뮬레이팅 과정이 있으므로 오버헤드가 크다는 단점이 있다. 하지만 가상의 하드웨어를 쓰기 때문에 호스트 운영체제와 크게 제약없이 뭐든 사용가능하며, 시스템에 손쉽게 가상 머신을 올릴 수 있다.

ex) Vmare Workstation, Virtual Server 2005, Virtual Box 등

전가상화(full-virtualization) vs 반가상화(para-virtualization)

Type-1 가상화는 다시 전가상화와 반가상화로 분류된다

전가상화(full-virtualization)

게스트OS가 HW에 접근하면서 제어를 요구한다. 이 때 CPU는 가상화가 지원가능한지 아닌지를 확인하는데, 지원을 하지 않으면 게스트OS는 아예 운영할 수 없다. 지원 가능하면 HW제어를 요구하고, 이후 HW를 제어할 수 있게 된다. 하이퍼바이저를 베어메탈에 구동하면 DOM0이라는 관리용 가상머신이 구동되는데, 모든 가상머신의 하드웨어 접근이 이 DOM0으로 이루어진다.

즉, 게스트OS가 각각의 언어로 요청하는 명령들을 하이퍼바이저가 번역하여 하드웨어에게 전달한다. 또한 게스트OS에게 자원을 할당하는 운용 역할도 담당한다.


장단점: 게스트OS의 별다른 수정없이 사용할 수 있다. 하지만 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 느리다. 또한 하이퍼바이저가 중재 이외의 문제들도 다 처리해 주어야 한다.

반가상화(para-virtualization)

반가상화에서도 하이퍼바이저가 존재한다. 하지만 게스트OS와 하드웨어 사이의 번역 역할을 하지 않고, 단지 게스트OS들에게 자원을 어떻게 분배할지 같은 관리적 문제만 다룬다. 그러면 기존에 하이퍼바이저가 하던 번역 일은 게스트OS 자체에서 해서 하드웨어로 보내야 하는 일이 된다.

그래서 게스트OS의 커널을 수정하여(=코드를 까서 수정을 하여) 이러한 역할이 가능하도록 만들어야 한다. 리눅스는 오픈소스라서 소스를 수정할 수 있다. 윈도우는 원래는 불가능했지만 Xen에서 제공하는 툴로 전부 다 가능해졌다.

그렇기 때문에 반가상화는 게스트OS를 수정해야 하며, 이것이 반가상화와 전가상화의 차이를 낳는다.


장단점: 전가상화의 단점인 성능 저하를 해소하고자 모든 명령을 DOM0을 통해 하이퍼바이저에게 요청하지 않고, 하이퍼콜이라는 인터페이스로 직접 하이퍼바이저에 요청을 날린다. 따라서 전가상화에 비해 성능이 빠르다. 하지만 하이퍼콜을 이용하면 하이퍼바이저에게 요청을 보내는 동작을 기존의 OS는 할 수 없으므로 커널 수정 작업이 들어가야 한다.

profile
즐겁게 몰두하자. ^-^!

0개의 댓글