티스토리 뷰

가상화 (Virtualization)의 내부 기술

가상화를 구현하는 하드웨어와 소프트웨어 기술

목차

1.소개

2.가상화 아키텍처

3. 가상화 기법


소개

가상화는 여러 비용 절감, 공간 절약 및 우수한 통합 시스템을 구축하고자 하는 목적으로 사용하는 기술이다. 

가상화를 활용하기 위해서 는 기본 가상화 아키텍처와 이를 구현하는 기술에 대해 이해하는 것이 중요하다. 


가상화 아키텍처 

가상화는 두가지 주요 가상화 아키텍처인 호스트형(Hosted)과 베어 메탈(bare-metal)방식을 사용합니다. 

각 아키텍처에는 가상화 시스템을 구축하기전에 고려해야할 I/O접근, 결정성 및 사용 편리성에서 차이가 있다. 

본 섹션에서는 각 아키텍처 개요, I/O디바이스와 통신하기 위한 메커니즘과 기타 장단점에 대하여 설명한다.


Hosted 

개요

본 아키텍처에서는 기본 운영체제 (Windows, Mac등)가 먼저 설치된다. 하이퍼바이저 또는 버추얼 모니터

(VMM)라고 하는 소프트웨어가 호스트 OS최상위에 설치되며, 이를 통해 사용자들은 Host OS위에서 다양한

게스트 운영체제를 실행할 수 있다. 현재 본 아키텍처를 사용하는 일반적인 제품에는 VMWare Workstation과 

Mzc용 Paralls Desktop이 있다.


그림 1. 호스트형


I/O 접근 

본 아키텍처에서 각 버추얼 머신(VM)은 일반적으로 제한된 I/O디바이스 서브셋으로만 접근가능하다.

호스트 운영체제는 컴퓨터에 연결된 물리적인 I/O에 대한 소유권이 있으며 VMM은 각 VM에 실제 하드웨어의

에뮬레이션 된 보기를 제공한다. VMM은 PCI 데이터 수집 카드와 같은 대부분의 비일반 I/O디바이스에 대한 

지식이 없으므로, 본 에뮬레이션된 디바이스를 VM에 제공하지않는다. 네트워크 인터페이스와 CD-ROM 드라이브

같은 일반 디바이스만이 에뮬레이션된다.


또한, 여러 호스트형 가상화 솔루션은 USB 포트를 위한  passthrough 기능을 지원한다.

본 기능을 통해 사용자들은 개별 VM에서 USB드라이브에 직접 접근할 수 있다. 예를 들어, 게스트 OS에서 NI USB 

데이터 수집 디바이스에 접근하고 데이터를 수집하는 것이 가능하다.

실제로 여러 소프트웨어 컴포넌트가 함께 작동하여 호스트형 가상화 아키텍처에서 I/O가 가능하도록 한다. 예를 들어

VMware Work station 제품은 로우 레벨 VMM 컴포넌트에서 I/O요청을 보낸 다음 드라이버를 통해서 최종적으로 VMapp

호스트 운영체제를 통해 I/O요청을 전달한다. 여기서 중요한 점은 궁극적으로 I/O 요청은 호스트형 가상화 아키텍처

의  호스트 OS를 통해 전달된다는 점이다. 아래 그림은 본과정을 나타낸것이다.


그림 2. Hosted VMM 소프트웨어는 Hosted OS를 통해 VM I/O 요청을 전달하기 위해 통신하는 여러 컴포넌트로 구성한다.


장점 및 단점 

호스트령 가상화 아키텍처 사용의 장점은 설치와 구성이 편리하다는 점이다. 예를 들어, VMware Workstation 소프트웨어는

Windows에서 기본 인스톨러를 실행하여 몇 분 내에 설치가 가능하다. 호스트형 가상화 기술을 사용하는 VMM은 일반적으로 

광범위한 PC에서 실행이된다. 호스트 운영체제가 로우레벨 하드웨어와 통신을 하기 위한 드라이버를 제공하기 때문에, VMM

소프트웨어는 사용자 정의 없이 대부분 컴퓨터에 설치된다.


위에서 언급된 바와 같이 호스트형 버추얼 아키텍처는 에뮬레이션이나 여러 PCI I/O 디바이스에 passthrough 기능을 제공 

할수 없다. 또한 버추얼 가상롸의 또 다른 단점으로는 리얼타임 운영체제를 지원하지 않는 다는점이다. 기본 호스트 OS가 

애플리케이션과  VMM간의 스케쥴링을 명령하기 때문에 호스트형 가상화를 사용할때 VM 내에서 결정성있게 리얼타임 Os를 

실행하는 것이 불가능 하다.


사용 사례

호스트형 가상화가 제공하는 장점은 일반적으로 베타 소프트웨어를 테스트할 때 사용되며(전용 테스트 머신이 필요 없음),

또는 레거시 애플리케이션을 실행할 때 사용된다는 점이다. 또한 호스트형 가상화는 한 대의 PC에서 각기 다른 운영체제를 

실행하기 위한 신속한 지원을 제공하므로, 각기 다른 OS를 위해 작성된 다양한 애플리케이션에 자주 접근해야 하는경우 

유용하다. 


bare-metal

개요

본 아키텍처는에서 VMM은 호스트 운영체제에 의존하지 않고 시스템 하드웨어와 직접 통신하도록 설치 된다. 아래 그림과 같이

그림 3. 베이어 메탈 버추얼 버신 모니터 소프트웨어는 시스템 하드위에 직접 설치된다.


I/O 접근 

베이 메탈 가상화 솔루션은 버추얼 머신으로부터 I/O 엑새스를 위한 여러 가지 옵션을 제공한다.

참고로, 베어 메탈 가상화가 호스트 운영체제에 의존하지 않으므로 본 아키텍처를 사용하는 하이퍼 바이저는 I/O 디바이스와

 직접 통신한다는 점을 유념해야한다. 버추얼 머신(이더넷, 하드 드라이버등)간 I/O디바이스가 공유되기 위해서, 하이처바이저

 소프트웨어는 로우 레벨 드라이버를 보유해야 한다. 또한 게스트 버투얼 머신을 위해 각 동유되는 디바이스를 반시 에뮬레이션

할 수 있어야 한다. 

그림 4. 베어 메탈 가상화 아키텍처에서 버추얼 머신간 공유되는 시스템 I/O 디바이스는 반드시 하이퍼 바이저의 커널 드라이드에 접근해야한다.

베어 메탈 하이퍼 바이저가 I/O에 접근할 수 있는 또 다른 방식은 개별 디바이스를 특정 버추얼 머신에 배정하는 방법이다. 이를 파

티셔닝 이라고 하며, I/O 성능과 엔지니어링에 대한 지원을 대폭 향상합니다. 파티션된 I/O디바이스 (PCI 데이터 수집 보드 등)는 

네이티브 드라이버를 사용하여 VM으로 부터 직접 엑세스 가능 하므로, VMM에 의한 간섭이 적다. 아래는 베어 메탈 가상화 아키텍

처에서 직접(파티션)I/O 엑세스를 보여주는 그림이다.

그림 5. 베어 메탈 가상롸 소프트웨어는 I/O 디바이스가 직접 접근을 위해 개별 버추얼 머신간에 파티션되도록한다.


장점 및 단점

PCI 데이터 수집 보드와 같은 디바이스를 개별 VM간 파티셔닝할 때 얻을 수 있는 향상된 I/O 성능 이외에, 베어 메탈 가상화 아키텍

처는 기본 호스트 운영체제에 의존하지 않기 때문에 베어 메탈 하이퍼바이저는 인터럽트 지연을 막고 결정성있는  성능을 가능하

게 하는 기능을 구현한다. 다시 말해 베어 메탈 하이퍼바이저는  동일한 하드웨어 에서 리얼 타임 및 범용 운영체제를 병렬로 실행

할수 있다.

단점으로는 버추얼 머신간 공유되는 디바이그용 드라이버 뿐만 아니라, 다양한 하드웨어 플랫폼을 지원하기 위한 모든 드라이버

가 하이퍼 바이저에 반드시 포함되어 있어야 한다. 또한, 베어 메탈 하이퍼바이저가 호스트 OS 상위에 설치되지 않으므로, 호스트

형 솔루션보다 설치와 구성이 더욱 어려운 경향이 있다. 


사용 사례

베어 메탈 하이퍼바이저의 로우 레벨 특성과 제공하는 I/O 접근은 여러개의 운영체제를 사용하는 애플리케이션에 유리하다.

특히, 리얼 타임 데이터 처리를 제공하고 범용 OS 서비스 접근을 반드시 제공해야하는(예. 그래픽 기반 사용자 인터페이스)

애플리케이션은 베어 메탈 가상화를 통해 이점을 얻을 수 있다.


가상화 기법

지금까지 살펴본 바와 같이 VMM소프트웨어는 여러 운영체제의 병렬 실행을 지원하는 블랙 박스와 같이 여겨지고 있다. 본 섹션

에서는 개별 버추얼 머신을 컴퓨터 하드웨어와 분리하기 위한 VMM이 사용할 수 있는 여러 가지 내부 기술을 소개할 것이다. 

앞으로 언급된 가상화 아키텍터를 사용하는 소프트웨어 솔루션은 본 기법 중 한가지 또는 그이상을 사용할것이다.

언급된 모든 기술의 목적은 동일하다. 어떤 방식이하도 시스템 상태(공유된 리소스)에 영향을 미칠 수 있는 모든 버추얼 머신 지시

를 차단하는 것이다. 각 기법은 본 목적을 달성하기 위한 또 다른 형태의 방식이다.


2진 전환 

2진 전환을 사용하는 VMM은 시스템 상태에 끼치는 영향을 피하기 위해 실행되는 코드를 동적으로 변경한다. 버추얼 머신의 컴파

일된 코드에 특권 명령(예를 들어, I/O 디바이스에 접근하는 것)을 포함하게 되면 기본 VMM은 2진 전환을 사용하여 I/O 요청을 적절

하게 방향을 전환하고 개별 VM간 충돌을 방지합니다. 호스트형 가상화 소프트웨어는 일반적으로 2진 전환을 사용하여 I/O방향을

 전환하고 개별 VM간의 충돌을 방지한다. 호스트형 가상화 소ㅠㅡ트웨어는 일반적으로 2진 전환을 사용한다. 그 예로는 이전에 언

급한 VMware Workstation제품을 들 수 있다.

코드가 반드시 전환되어야 할 때마다 (버추얼 머신에서 VMM으로의 전환) 성능이 저하되므로, 2진 전환을 사용하는 가상화 소프트

웨어는 각 때마다 지시모을을 검사하고 전환합니다. 2진 전환을 사용하는 소프트웨어는 VMM이 버추얼 머신 실행과 반드시 인터페

이스해야 하는 시간을 최소화함으로써 사용자가 경험하는 성능 영향을 최소화할 수 있다.


하드웨어 보조

하드웨어 보조 방식은 실행되는 동안 VM코드를 변경하는 대신, 특권 명령에 대한 시스템 상태 변경을 피하디 위해 특수 프로세스 

기술을 사용한다. Intel, AMD사 모두 필요할 때마다 VMM을 자동 호출 하기 위해 각 프로세서 (Intel-VT, AMD-V)에 새호운 가상화 기

능을 적용하고 있다. 여러 베어 메탈 하이퍼 바이저는 본 기술을 활용한다.

2진 전환의 경우에와 같이 성능은 하이퍼 바이저가 버추얼 머신의 실행을 간섭해야 할 때 마다 저하 된다. 이같은 효과를 최소화하

기 위해 가상화를 위한 하드웨어 기능을 통합하는 프로세서는 절대적 으로 필요할 때에만 VM실행을 간섭하도록 구성한다. 예를 들

어 특정 I/O디바이스가 파티셔닝 되면 그루 하이퍼 바이저는 간섭없이 배정된 VM이 접근 가능하다.


파라버추얼라이제이션 

가상화를 수행하기 위한 마지막 기법으로 파라버추얼라이제이션이있다. 본방식은 운영체제를 명시적으로 변경함으로써 가상화

되고 있음을 "인식"하도록 하고 기본 VMM이 필요할 때 자동호출하도록 합니다. 이같은 호출은 하이퍼콜이라고도 합니다. 파라버

추얼라이제이션이 VMM이 반그시 호출되어야 하는 횟수를 최소화함으로써 성능을 대폭 향상할 수 있지만, 변경이 이루어지도록 

하기 위해 Os소스 코드로의 접근을 확보해야 한다.























'Virtualization' 카테고리의 다른 글

vmware python api  (0) 2017.08.18
DevStack : OpenStack IceHouse install  (0) 2014.09.30
OpenStack  (0) 2014.09.30
클라우드 컴퓨팅  (0) 2014.09.30
가상화(Virtualization)의 기본정보  (0) 2013.01.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함