[임베디드 s·w]

가상화 (Virtualization)의 내부 기술

Neo Park 2017. 10. 10. 17:23

1. 소개

가상화는 여러 엔지니어들이 비용 절감, 공간 절약 및 더욱 우수한 통합 시스템을 구축하고자 하는 목적으로 사용하는

기술입니다.

측정 및 자동화 어플리케이션에 가상화를 사용하려면 사용가능한 기본 가상화 아키텍처와 이를 구현하는 기술에 대해

이해하는 것이 중요합니다.

본 기술 백서에서는 이 정보들을 살펴보고 사용자들의 엔지니어링 시스템에서 가상화를 구현할 수 있도록 도와주는

정보를 제공합니다.

본 기술 백서는 가상화의 기술과 장점을 기본적으로 알고있다는 전제하에 설명합니다.


2. 가상화 아키텍처

엔지니어링 어플리케이션은 두 가지 주요 가상화 아키텍처인 호스트형(hosted)과 베어 메탈(bare-metal) 방식을

사용합니다. 각 아키텍처에는 버추얼 시스템을 구축하기 전에 고려해야 할 I/O 접근, 결정성 및 사용 편리성에서

차이가 있습니다.

본 섹션에서는 각 아키텍처 개요, I/O 디바이스와 통신하기 위한 매커니즘 (본 요소가 엔지니어링 어플리케이션의

주요 요소이므로)과 기타 장단점에 대해 설명합니다.

호스트형

개요

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

(VMM)라고 하는 소프트웨어가 호스트 OS 최상위에 설치되며, 이를 통해 사용자들은 어플리케이션 윈도우

내에서 다양한 게스트 운영체제를 실행할 수 있습니다. 현재 본 아키텍처를 사용하는 일반적인 제품에는

VMWare Workstation과 Mac용 Parallels Desktop이 있습니다. 아래는 호스트형 가상화 아키텍처의

다이어그램입니다.

그림 1. 호스트형 가상화 머신 모니터는 기본 호스트 운영체제 (OS)의 상위에 설치됩니다.


I/O 접근

호스트형 가상화 아키텍처에서 각 버추얼 머신 (게스트 운영체제)은 일반적으로 제한된 I/O 디바이스

서브셋으로만 접근가능합니다. 호스트 운영체제는 컴퓨터에 연결된 물리적인 I/O에 대한 소유권이 있으며,

버추얼 머신 모니터 (VMM)는 각 버추얼 머신 (VM)에 실제 하드웨어의 (가능한 경우) 에뮬레이션된

보기를 제공합니다.

VMM은 PCI 데이터 수집 카드와 같은 대부분의 비일반 I/O 디바이스에 대한 지식이 없으므로,

본 에뮬레이션된 디바이스를 VM에 제공하지 않습니다. 네트워크 인터페이스 카드와 CD-ROM 드라이브

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

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

본 기능을 통해 사용자들은 개별 VM에서 USB 디바이스에 직접 접근할 수 있습니다.

예를 들어, 게스트 OS에서 NI USB 데이터 수집 디바이스에 접근하고 데이터를 수집하는 것이 가능

(호스트형 가상화 소프트웨어를 사용시)합니다.

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

예를 들어, VMWare Workstation 제품은 로우 레벨 VMM 컴포넌트에서 I/O 요청을 보낸 다음 드라이버를

통해서 최종적으로 VMApp라고 하는 사용자 레벨 어플리케이션 컴포넌트로 보냅니다.

결과적으로, VMApp 컴포넌트는 호스트 운영체제를 통해 I/O 요청을 전달합니다.

여기서 기억해야 할 중요한 요점은 궁극적으로 I/O 요청은 호스트형 가상화 아키텍처의 호스트 OS를 통해

전달된다는 점입니다.

아래는 본 과정을 다이어그램으로 나타낸 것입니다.


그림 2. 호스트형 버추얼 머신 모니터 (VMM) 소프트웨어는 일반적으로 호스트 운영체제 (OS)를 통해 버추얼 머신 (VM) I/O 요청을 전달하기 위해 통신하는 여러 컴포넌트로 구성됩니다.


장점 및 단점

호스트형 가상화 아키텍처 사용의 장점은 설치와 구성이 편리하다는 점입니다.

예를 들어, VMWare Workstation 소프트웨어는 Windows에서 기본 인스톨러를 실행하여 몇 분 내에

설치 가능합니다. 설치 후, 엔지니어들은 각기 다른 운영체제에서 실행하는 여러 버추얼 머신을

동일한 컴퓨터에서 구축할 수 있습니다.

또한, 호스트형 가상화 기술을 사용하는 VMM은 일반적으로 광범위한 PC에서 실행됩니다.

호스트 운영체제는 로우레벨 하드웨어와 통신하기 위한 드라이버를 제공하므로, VMM 소프트웨어는

사용자 정의 없이 대부분의 컴퓨터에 설치됩니다.

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

패스스루 제공할 수 없습니다. 또한 버추얼 머신의 I/O 요청이 반드시 호스트 OS를 통해 보내져야

하므로 성능은 저하될 수 있습니다.

호스트 가상화의 또 다른 단점으로는 리얼타임 운영체제를 지원하지 않는다는 점입니다.

기본 호스트 OS가 어플리케이션과 VMM 간의 스케쥴링을 명령하므로, 호스트형 가상화를 사용할 때

VM 내에서 결정성있게 리얼타임 OS를 실행하는 것이 불가능합니다.

사용 사례

호스트형 가상화가 제공하는 장점은 일반적으로 베타 소프트웨어를 테스트할 때 사용되며 (전용 테스트 머신이 필요 없음), 또는 레거시 어플리케이션을 실행할 때 사용된다는 점입니다. 또한 호스트형 가상화는 한 대의 PC에서 각기 다른 운영체제를 실행하기 위한 신속한 지원을 제공하므로, 각기 다른 OS를 위해 작성된 다양한 어플리케이션에 자주 접근해야 하는 엔지니어들에게 유용합니다.



베어 메탈

개요

가상화에 일반적으로 사용되는 두 번째 아키텍처는 베어 메탈 방식입니다.

본 아키텍처에서 VMM (또는 하이퍼바이저)은 호스트 운영체제에 의존하지 않고 시스템 하드웨어와

직접 통신하도록 설치됩니다.

아래 그림을 통해 본 아키텍처를 그래픽으로 살펴보십시오.


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



I/O 접근

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

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

 I/O 디바이스와 직접 통신한다는 점을 유념해야 합니다.

버추얼 머신 (예, 이더넷, 하드 드라이버 등) 간 I/O 디바이스가 공유되기 위해서, 하이퍼바이저 소프트웨어는

디바이스와 통신하기 위해 반드시 로우 레벨 드라이버를 보유해야 합니다. 또한 게스트 버추얼 머신을 위해

각 공유되는 디바이스를 반드시 에뮬레이션할 수 있어야 합니다.


그림 4. 베어 메탈 가상화 아키텍처에서 버추얼 머신간 공유되는 시스템 I/O 디바이스는 반드시

하이퍼바이저의 부분인 커널 드라이버가 접근해야 합니다.


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

배정하는 방법입니다.

이를 파티셔닝(partitioning)이라고 하며, I/O 성능과 엔지니어링 어플리케이션에 대한 지원을 대폭 향상합니다.

 파티션된 I/O 디바이스 (PCI 데이터 수집 보드 등)는 네이티브 드라이버를 사용하여 VM으로부터 직접

액세스 가능하므로, VMM에 의한 간섭이 적습니다.

아래는 베어 메탈 가상화 아키텍처에서 직접 (파티션) I/O 액세스를 보여주는 다이어그램입니다.


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



장점 및 단점

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

베어 메탈 가상화 아키텍처는 리얼타임 운영체제를 지원한다는 장점이 있습니다.

베어 메탈 아키텍처는 기본 호스트 운영체제에 의존하지 않으므로 베어 메탈 하이퍼바이저는

인터럽트 지연을 막고 결정성있는 성능을 가능하게 하는 기능을 구현합니다.

다시 말해, 베어 메탈 가상화를 사용하는 엔지니어들은 동일한 처리 하드웨어에서 리얼타임 및

범용 운영체제를 병렬로 실행할 수 있습니다.

그러나 베어 메탈 가상화에는 간과해서는 안 될 몇 가지 단점이 존재합니다.

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

드라이버가 하이퍼바이저에 반드시 포함되어야 합니다.

또한, 베어 메탈 하이퍼바이저가 호스트 OS 상위에 설치되지 않으므로, 호스트형 솔루션보다 설치와

구성이 더욱 어려운 경향이 있습니다.


사용 사례

베어 메탈 하이퍼바이저의 로우 레벨 특성과 제공하는 I/O 접근은 여러 개의 운영체제를 사용하는 배포된

어플리케이션에 유용합니다.

특히, 리얼타임 데이터 처리를 제공하고 범용 OS 서비스 접근을 반드시 제공해야 하는

(예, 그래픽 기반 사용자 인터페이스) 어플리케이션은 베어 메탈 가상화를 통해 이점을 얻을 수 있습니다.



요약

가상화를 사용하는 시스템을 구현할 때 첫 단계는 호스트형 또는 베어 메탈 아키텍처 중 (또는 통합 형태)

어느 것을 선택하는 것이 더욱 적합한지를 결정하는 것입니다.


전반적으로, 호스트형 가상화는 개발 단계 동안 베타 테스트 소프트웨어 비용 절감,

레거시 어플리케이션 실행 및 다른 운영체제를 위해 작성된 어플리케이션 지원 등 여러 장점을 제공합니다.


대부분의 호스트형 가상화 솔루션에서 제공되는 제한된 I/O 기능은 배포된 어플리케이션 설계시

신중하게 고려해야 할 요소입니다.


반면, 베어 메탈 가상화 방식은 리얼타임 OS 지원, 파티셔닝을 통한 증대된 I/O 접근 등의 여러 장점을 제공합니다.


그러나 베어 메탈 하이퍼바이저를 어플리케이션에 통합하기 위해서는 추가적인 설치 과정이 요구될 수 있으며

기본 하드웨어 지원을 신중하게 고려해야 합니다.




참조 : http://www.ni.com/white-paper/8709/ko/