Cloud Computing: 가상화 분류

가상화에는 각각 특정 상황에 적합한 여러 가지 접근 방법(또는 분류)이 있습니다.

Kai Hwang, Jack Dongarra, Geoffrey Fox

“Distributed and Cloud Computing: From Parallel Processing to the Internet of Things"(Elsevier의 출판사인 Syngress)의 일부 내용을 수정

일반적으로 VM(가상 컴퓨터) 아키텍처에는 하이퍼바이저, 호스트 기반 가상화, 그리고 반가상화의 세 가지 종류가 있는데, 각각을 구분하는 요소는 가상화 계층의 위치입니다. 하이퍼바이저는 VMM(Virtual Machine Monitor)이라고도 합니다.

하이퍼바이저 아키텍처

하이퍼바이저는 CPU, 메모리, 디스크 및 네트워크 인터페이스와 같은 베어메탈 장치에서 하드웨어 수준 가상화를 지원합니다. 하이퍼바이저 소프트웨어는 실제 하드웨어와 OS 사이에 위치합니다. 이 가상화 계층을 VMM 또는 하이퍼바이저라고 합니다.

하이퍼바이저는 게스트 OS 및 응용 프로그램에 대한 Hypercall을 제공합니다. 하이퍼바이저는 Microsoft Hyper-V와 같은 마이크로 커널 아키텍처를 취할 수 있습니다. 또한 서버 가상화를 위한 VMware ESX와 같은 모놀리식 하이퍼바이저 아키텍처를 취할 수도 있습니다.

마이크로 커널 하이퍼바이저에는 기본적이며 변경되지 않은 기능(예: 실제 메모리 관리 및 프로세서 스케줄링)만 포함됩니다. 장치 드라이버 및 기타 변경 가능한 구성 요소는 하이퍼바이저 외부에 위치합니다. 모놀리식 하이퍼바이저는 장치 드라이버 기능을 포함하여 앞서 기술된 모든 기능을 구현합니다.

따라서 마이크로 커널 하이퍼바이저의 하이퍼바이저 코드 크기는 모놀리식 하이퍼바이저 코드에 비해 작습니다. 기본적으로 하이퍼바이저는 실제 장치를 배포된 VM에서 사용할 수 있는 전용 가상 리소스로 변환할 수 있어야 합니다.

Xen 아키텍처

Xen은 캠브리지 대학에서 개발한 공개 소스 하이퍼바이저 프로그램입니다. Xen 시스템의 핵심 구성 요소는 하이퍼바이저, 커널 및 응용 프로그램입니다. 이 세 가지 구성 요소의 조화가 중요합니다.

Xen은 메커니즘과 정책을 분리하는 마이크로 커널 하이퍼바이저입니다. Xen 하이퍼바이저는 모든 메커니즘을 구현하고, 정책은 도메인 0에서 처리하도록 둡니다. 기본적으로 장치 드라이버는 포함하지 않습니다. 단지 게스트 OS가 실제 장치에 직접 액세스할 수 있도록 하는 메커니즘을 제공할 뿐입니다.

그 결과 Xen 하이퍼바이저는 작은 크기를 유지합니다. Xen은 하드웨어와 OS 사이에 위치하는 가상 환경을 제공합니다. 여러 공급업체가 현재 상용 Xen 하이퍼바이저를 개발하는 중이며, Citrix XenServer와 Oracle VM이 여기에 포함됩니다.

다른 가상화 시스템과 마찬가지로 하이퍼바이저 위에서 많은 게스트 OS를 실행할 수 있습니다. 그러나 모든 게스트 OS가 똑같이 만들어지는 것은 아니며, 특히 하나의 게스트 OS가 다른 게스트 OS를 제어합니다. 제어 기능을 가진 게스트 OS를 도메인 0이라고 하며, 다른 게스트 OS를 도메인 U라고 합니다. 도메인 0은 Xen에서 권한이 높은 게스트 OS입니다. 이 OS는 Xen이 부팅될 때 사용할 수 있는 파일 시스템 드라이버 없이 처음으로 로드됩니다. 도메인 0은 하드웨어에 직접 액세스하고 장치를 관리하도록 설계됩니다. 따라서 도메인 0이 맡는 역할 중 하나는 게스트 도메인(도메인 U 도메인)에 대해 하드웨어 리소스를 할당하고 매핑하는 것입니다.

예를 들어 Xen은 Linux를 기반으로 하며 보안 수준은 C2입니다. 관리 VM의 이름은 도메인 0이며, 도메인 0은 같은 호스트에 구현된 다른 VM을 관리할 권한을 가집니다. 도메인 0이 손상될 경우 해커가 전체 시스템을 제어할 수 있습니다.

따라서 VM 시스템에서 도메인 0의 보안을 개선하기 위한 보안 정책이 필요합니다. VMM 역할을 하는 도메인 0을 통해 사용자는 파일을 조작하듯 쉽게 VM을 만들고 복사하고 저장하고 읽고 수정하고 공유하고 마이그레이션하고 롤백할 수 있습니다. 그러나 이러한 특징은 소프트웨어 수명 주기와 데이터 수명 동안 보안 문제를 야기하기도 합니다.

일반적으로 시스템의 수명은 직선으로 생각할 수 있습니다. 시스템의 현재 상태는 하나의 점이며, 이 점은 소프트웨어가 실행됨에 따라 단조롭게 진행됩니다. 이 시간 동안 구성을 변경하고 소프트웨어를 설치하고 패치를 적용합니다.

이러한 환경에서 VM 상태는 트리에 가깝습니다. 즉, 어느 지점에서든 실행은 N개의 분기로 진행될 수 있으며, 이 트리에는 언제, 어느 지점에서나 여러 개의 VM 인스턴스가 존재할 수 있습니다. VM을 이전 상태로 롤백하거나(예: 구성 오류 수정을 위해) 여러 번 같은 지점에서 다시 실행할 수 있습니다(예: 동적 콘텐츠 배포 또는 "라이브" 시스템 이미지 순환을 위한 방법).

전체 가상화를 사용한 이진 변환

하드웨어 가상화는 구현 기술에 따라 전체 가상화와 호스트 기반 가상화의 두 가지 범주로 분류할 수 있습니다.

전체 가상화는 호스트 OS를 수정할 필요가 없습니다. 전체 가상화는 가상화할 수 없는, 특정한 중요 명령의 실행을 이진 변환을 사용하여 트랩하고 가상화합니다. 게스트 OS와 해당 응용 프로그램은 중요하지 않은 명령과 중요한 명령으로 구성됩니다.

호스트 기반 시스템에서는 호스트 OS와 게스트 OS가 모두 사용됩니다. 가상화 소프트웨어 계층은 호스트 OS와 게스트 OS 사이에 구축됩니다.

전체 가상화

전체 가상화의 경우 중요하지 않은 명령은 하드웨어에서 직접 실행되고 중요한 명령은 트랩을 통해 검색 및 대체되어 VMM에서 소프트웨어로 에뮬레이션됩니다. 하이퍼바이저와 VMM 방식 모두 전체 가상화로 간주됩니다.

중요한 명령만 VMM으로 트랩되는 이유는 무엇일까요? 이진 변환이 큰 성능 오버헤드를 유발할 수 있기 때문입니다. 중요하지 않은 명령은 하드웨어를 제어하거나 시스템 보안을 위협하지 않지만 중요한 명령은 하드웨어를 제어하고 시스템 보안을 위협합니다. 따라서 중요하지 않은 명령을 하드웨어에서 실행하면 효율성도 높아지고 시스템 보안도 확보됩니다.

이 방식은 VMware와 다른 많은 소프트웨어 업체들이 구현합니다. VMM은 명령 스트림을 검사하여 권한이 높은 명령, 제어 및 동작 인지 명령을 식별합니다. 이러한 명령은 식별된 후 VMM으로 트랩되고 VMM은 해당 명령의 동작을 에뮬레이션합니다. 이 에뮬레이션에 사용되는 방법을 이진 변환이라고 합니다.

따라서 전체 가상화는 이진 변환과 직접 실행을 결합합니다. 게스트 OS는 기본 하드웨어로부터 완전히 분리됩니다. 결과적으로 게스트 OS는 가상화된다는 점을 인식하지 못합니다.

전체 가상화는 시간이 소모되는 이진 변환을 사용하므로 성능은 그다지 뛰어나지 않을 수 있습니다. I/O 활동이 많은 응용 프로그램의 전체 가상화는 어려운 일입니다. 이진 변환은 성능 개선을 위해 코드 캐시를 사용하여 변환된 활성 명령을 저장하지만 이 경우 메모리 사용 비용이 증가합니다. x86 아키텍처에서 전체 가상화의 성능은 일반적으로 호스트 컴퓨터의 80 ~ 97%입니다.

호스트 기반 가상화

다른 VM 아키텍처는 가상화 계층을 호스트 OS 위에 설치하는 것입니다. 하드웨어 관리는 여전히 이 호스트 OS의 몫입니다. 게스트 OS는 가상화 계층 위에 설치되어 실행됩니다. VM에서 전용 응용 프로그램을 실행할 수 있습니다. 다른 일부 응용 프로그램은 호스트 OS에서 직접 실행할 수도 있습니다.

이 호스트 기반 아키텍처에는 몇 가지 고유한 장점이 있습니다. 첫째, 사용자가 호스트 OS를 수정하지 않고도 이 VM 아키텍처를 설치할 수 있습니다. 가상화 소프트웨어는 호스트 OS에 의존하여 장치 드라이버 및 기타 저수준 서비스를 제공할 수 있습니다. 따라서 VM 설계가 간소화되고 배포도 쉬워집니다.

둘째, 호스트 기반 방식은 많은 호스트 컴퓨터 구성에 적합합니다. 호스트 기반 아키텍처의 성능은 하이퍼바이저/VMM 아키텍처에 비해 낮을 수 있습니다. 응용 프로그램이 하드웨어 액세스를 요청하면 4개의 매핑 계층이 필요하고, 이로 인해 성능이 크게 저하됩니다. 게스트 OS의 ISA(Internet Security and Acceleration)가 기본 하드웨어의 ISA와 다를 경우 이진 변환을 채택해야 합니다. 호스트 기반 아키텍처는 유연성을 갖추었지만 실제 사용하기에는 성능이 너무 떨어집니다.

반가상화

반가상화는 게스트 OS를 수정해야 합니다. 반가상화된 VM은 사용자 응용 프로그램에서 상당한 OS 수정이 필요한 특수한 API를 제공합니다. 성능 저하는 가상화된 시스템에서 중요한 문제입니다. VM이 실제 컴퓨터를 사용하는 것보다 훨씬 더 느리다면 아무도 사용하기를 원하지 않을 것입니다.

컴퓨터 소프트웨어 스택의 다양한 위치에 가상화 계층을 삽입할 수 있습니다. 반가상화는 가상화 오버헤드를 줄이려 시도하며 게스트 OS 커널만 수정함으로써 성능을 개선합니다. 반가상화된 게스트 OS는 지능적인 컴파일러의 도움을 받아 가상화할 수 없는 OS 명령을 Hypercall로 대체합니다.

기존 x86 프로세서는 4개의 명령 실행 링, 즉 링 0, 1, 2, 3을 제공합니다. 링 번호가 낮을수록 실행되는 명령의 권한은 높습니다. OS는 하드웨어와 링 0에서 실행되는 권한 있는 명령을 관리하는 일을 담당하고, 사용자 수준 응용 프로그램은 링 3에서 실행됩니다. 반가상화의 가장 좋은 예는 KVM(커널 기반 VM)입니다.

x86 프로세서가 가상화되는 경우 가상화 계층은 하드웨어와 OS 사이에 삽입됩니다. x86 링 정의에 따라 가상화 계층은 링 0에도 설치되어야 합니다. 링 0에서 다양한 명령이 몇 가지 문제를 야기할 수 있습니다. 그러나 게스트 OS 커널은 가상화를 위해 수정될 경우 더 이상 하드웨어에서 직접 실행될 수 없습니다.

반가상화는 오버헤드를 낮춰 주지만 다른 문제를 일으킵니다. 첫째, 수정되지 않은 OS도 지원해야 하므로 호환성과 이식성이 불확실할 수 있습니다. 둘째, 심층적인 OS 커널 수정이 필요할 수 있으므로 반가상화된 OS를 유지 관리하기 위한 비용이 높을 수 있습니다.

마지막으로, 작업 부하의 변동으로 인해 반가상화가 제공하는 성능상의 이점은 기복이 큽니다. 반가상화는 전체 가상화에 비해 더 쉽고 실용적입니다. 전체 가상화의 가장 큰 문제는 이진 변환의 낮은 성능입니다. 이진 변환의 속도를 높이기는 어렵습니다. 따라서 많은 가상화 제품이 반가상화 아키텍처를 사용합니다. 인기 있는 Xen, KVM 및 VMware ESX가 좋은 예입니다.

KVM은 하드웨어 기반 반가상화 도구로, 성능을 개선하고 Windows, Linux, Solaris 및 기타 Unix 변형과 같은 수정되지 않은 게스트 OS를 지원합니다.

이것은 Linux 반가상화 시스템입니다(Linux 버전 2.6.20 커널의 일부). 기존 Linux 커널은 메모리 관리와 스케줄링 작업을 수행합니다. KVM은 그 나머지를 수행합니다. 따라서 전체 컴퓨터를 제어하는 하이퍼바이저보다 단순합니다.

런타임에 권한 있는 명령 및 민감한 명령을 가로채서 에뮬레이션하는 전체 가상화 아키텍처와 달리 반가상화는 이러한 명령을 컴파일 시에 처리합니다. 게스트 OS 커널은 수정되어 권한 있는 명령과 민감한 명령을 하이퍼바이저 또는 VMM에 대한 Hypercall로 대체합니다. Xen은 이러한 반가상화 아키텍처의 한 예입니다.

권한 있는 명령은 하이퍼바이저에 대한 Hypercall에 의해 구현됩니다. Hypercall로 명령을 대체한 후 수정된 게스트 OS는 원본 게스트 OS의 동작을 에뮬레이션합니다. Unix 시스템의 경우 시스템 호출 시 인터럽트 또는 서비스 루틴이 수행됩니다. Hypercall은 Xen에 전용 서비스 루틴을 적용합니다.

이와 같이 많은 유형의 가상화 아키텍처는 각기 다른 장단점을 가집니다. 각각의 검토해 보면 현재 환경에 가장 적합한 아키텍처를 적용할 수 있을 것입니다.

Kai Hwang

**Kai Hwang**은 서던 캘리포니아 대학의 컴퓨터 공학 교수이며 중국 칭화 대학의 객원 석좌 교수입니다. 버클리 캘리포니아 대학에서 EECS 박사 학위를 수여했으며 컴퓨터 아키텍처, 디지털 연산, 병렬 처리, 분산 시스템, 인터넷 보안 및 클라우드 컴퓨팅에 대해 광범위한 저술 활동을 해왔습니다.

Jack Dongarra

Jack Dongarra는 테네시 대학의 전기공학 및 컴퓨터 과학 특훈 교수이며 오크리지 국립 연구소의 특훈 연구원, 맨체스터 대학의 터닝 펠로우(Turning Fellow)도 겸하고 있습니다. Dongarra는 슈퍼컴퓨터 벤치마크, 수치 분석, 선형 대수 해결사, 고성능 컴퓨팅 영역을 개척했으며 이러한 영역에서 폭넓은 저술 활동을 해왔습니다.

Geoffrey Fox

Geoffrey Fox는 인디아나 대학의 정보 과학, 컴퓨팅 및 물리학 특훈 교수이자 정보 과학부 대학원 연구 과정 부학장입니다. 영국 캠브리지 대학에서 박사 학위를 수여했습니다. Fox는 병렬 아키텍처, 분산 프로그래밍, 그리드 컴퓨팅, 웹 서비스 및 인터넷 응용 프로그램에 대한 광범위한 연구와 저술로 유명합니다.

©2011 Elsevier Inc. 모든 권리 보유. Elsevier의 출판사인 Syngress의 허가 하에 인쇄되었습니다. Copyright 2011. “Distributed and Cloud Computing: From Parallel Processing to the Internet of Things”, Kai Hwang, Jack Dongarra, Geoffrey Fox. 이 책 및 이와 유사한 다른 책에 대한 자세한 내용은 elsevierdirect.com을 참조하십시오.

관련 콘텐츠