[가상화] 전가상화(Full-Virtualization)와 반가상화(Para-Virtualization)
전가상화, 반가상화는 모두 Type-1 가상화이다. Type-1 가상화는 베어메탈 하이퍼바이저를 이용하는 가상화이며, 따라서 베어 메탈 하드웨어 위에 하이퍼바이저가 직접 구동되고, 호스트 OS가 없다. 마이크로소프트의 Hyper-V 등이 이에 해당된다. 전가상화와 반가상화의 특징을 알아보기 전에, 우선 하이퍼바이저에 대해 간단히 짚고 가보자.
하이퍼바이저(Hypervisor)
Type 1 가상화 환경이라고 할 때(Baremetal hypervisor 사용, OS 없이 하드웨어-하이퍼바이저-Guest OS로 연결된 형태), 하이퍼바이저의 역할은 Guest OS의 하드웨어에 대한 요청을 하드웨어에게 번역해주는 것이다. 윈도우, 레드햇, 애플 등 각각의 다른 OS가 사용하는 명령어 체계가 다른데, 하이퍼바이저 없이는 하드웨어는 이들을 이해할 수 없다. 뿐만 아니라 하드웨어와 Guest OS 사이에서 하드웨어의 자원을 운용해주는 역할도 담당한다. (아래 전가상화의 얘기)
Type 2 가상화 환경은 호스트형 가상화로, 베어메탈을 구동하기 위한 호스트 운영체제가 설치 되어 하드웨어 - 호스트 OS - 하이퍼바이저 - Guest OS로 연결된 형태를 가진다. 호스트 OS 위에 하이퍼 바이저가 구동 되고 가상의 하드웨어를 애뮬레이팅 하기 때문에 오버헤드가 크다는 단점이 있다. 그러나 가상의 하드웨어를 애뮬레이팅 하므로, 호스트 OS에 제약사항이 크게 없기 때문에 리눅스에서 윈도우를 구동하거나 윈도우에서 유닉스를 구동할 수도 있다. 대표적으로 VMware Workstation과 Virtual Box가 있다.
전가상화(Full-virtualization)
전가상화는 하드웨어를 완전히 가상화하는 것으로, DOM0라고 하는 관리용 가상머신(하이퍼바이저에 접근할 수 있는 권한을 가진 VM)를 통해 가상화가 이루어진다. 즉, 모든 Guest OS들이 하드웨어에 접근하기 위해서는 DOM0를 거쳐야 하며, 하드웨어를 완전히 가상화 해 게스트 운영체제의 수정 없이 사용할 수 있다는 장점이 있다. 단점은, 하이퍼바이저가 모든 명령을 중재하므로 성능의 속도 측면에서 느리며, 특정 명령어나 트랩 처리를 하이퍼바이저가 반드시 처리해야줘야 한다.
반가상화(Para-Virtualization)
하드웨어를 완전히 가상화하지는 않기 때문에 반가상화라고 부른다. 전가상화가 Dom0를 통해 모든 명령을 하이퍼바이저에게 요청하는 방식을 개선하여, 하이퍼콜(Hyper Call)이라는 인터페이스로 직접 하이퍼바이저에게 요청을 보낼 수 있게 한다.
각기 다른 OS가 하드웨어에게 각기 다른 요청을 보낸다고? 어떻게? OS의 커널의 수정이 이뤄져야 한다. 즉, OS 커널의 소스코드를 수정해야 하므로 오픈소스가 아닌 윈도우 같은 OS에서는 사용이 어려웠었고, 리눅스 같은 경우에는 수정이 가능하다. 따라서 리눅스에서 가장 먼저 반가상화 방식을 도입했다고 한다. 윈도우 커널 수정이 안 됐던 건 오래 전 얘기고, 요즘은 Xen툴을 윈도우에 설치하면 가능하다고 한다.
반가상화는 전가상화처럼 하이퍼바이저가 Guest OS-하드웨어 간 번역 역할을 수행하지 않으므로 속도가 더 빠르다. 커널에 자체적으로 번역을 달아 놓았기 때문에, 하이퍼바이저는 Guest OS들에게 자원을 어떻게 배분할 것인지 관리적인 문제만 다루면 된다.
Leave a comment