2016년 8월 31일 수요일

가상화 (Virtualization)의 내부 기술

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

가상화 (Virtualization)의 내부 기술

작성일: 3월 16, 2016 | 2 평가 | 2.00 총점 5 | 
Read in English
  | 인쇄

개요

가상화 기술을 사용하는 엔지니어들이 가상화 소프트웨어가 작동하는 방식을 이해하는 것은 중요합니다. 본 기술 백서에서는 다양한 가상화 소프트웨어를 살펴보고, 가상화를 구현하는 다양한 하드웨어와 소프트웨어 기술에 대해 알아봅니다.

목차

  1. 소개
  2. 가상화 아키텍처
  3. 가상화 기법
  4. 결론
  5. 추가 자료

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 접근 등의 여러 장점을 제공합니다. 그러나 베어 메탈 하이퍼바이저를 어플리케이션에 통합하기 위해서는 추가적인 설치 과정이 요구될 수 있으며 기본 하드웨어 지원을 신중하게 고려해야 합니다.

3. 가상화 기법

지금까지 본 문서에서 살펴본 바와 같이 VMM 소프트웨어는 여러 운영체제의 병렬 실행을 지원하는 블랙 박스와 같이 여겨지고 있습니다. 본 섹션에서는 개별 버추얼 머신을 컴퓨터 하드웨어와 분리하기 위해 VMM이 사용할 수 있는 여러가지 내부 기술을 소개할 것입니다. 앞에서 언급된 가상화 아키텍처를 사용하는 소프트웨어 솔루션은 본 기법 중 한 가지 또는 그 이상을 사용할 것입니다.
언급된 모든 기술의 목적은 동일합니다. 즉, 어떤 방식으로라도 시스템 상태 (공유된 리소스)에 영향을 미칠 수 있는 모든 버추얼 머신 지시를 차단하는 것입니다. 각 기법은 본 목적을 달성하기 위한 또 다른 형태의 방식입니다.

2진 전환

2진 전환을 사용하는 VMM은 시스템 상태에 끼치는 영향을 피하기 위해 실행되는 코드를 동적으로 변경합니다. 버추얼 머신의 컴파일링된 코드에 특권 명령 (예를 들어, I/O 디바이스에 접근하는 것)을 포함하게 되면, 기본 VMM은 2진 전환을 사용하여 I/O 요청을 적절하게 방향을 전환하고 개별 VM간 충돌을 방지합니다. 호스트형 가상화 소프트웨어는 일반적으로 2진 전환을 사용합니다. 그 예로는 이전에 언급한 VMWare Workstation 제품을 들 수 있습니다.
코드가 반드시 전환되어야 할 때마다 (버추얼 머신에서 VMM으로의 전환) 성능이 저하되므로, 2진 전환을 사용하는 가상화 소프트웨어는 각 때마다 지시 모음을 검사하고 전환합니다. 2진 전환을 사용하는 소프트웨어는 VMM이 버추얼 머신 실행과 반드시 인터페이스해야 하는 시간을 최소화함으로써 사용자가 경험하는 성능 영향을 최소화할 수 있습니다.

하드웨어 보조

하드웨어 보조 방식은 실행되는 동안 VM 코드를 변경하는 대신, 특권 명령에 대한 시스템 상태 변경을 피하기 위해 특수 프로세서 기술을 사용합니다. Intel과 AMD사 모두 필요할 때마다 VMM을 자동 호출하기 위해 각 프로세서 (각각 Intel-VT 및 AMD-V)에 새로운 가상화 기능을 적용하고 있습니다. 여러 베어 메탈 하이퍼바이저는 본 기술을 활용합니다.
2진 전환의 경우에서와 같이 성능은 하이퍼바이저가 버추얼 머신의 실행을 간섭해야 할 때마다 저하됩니다. 이같은 효과를 최소화하기 위해 가상화를 위한 하드웨어 기능을 통합하는 프로세서는 절대적으로 필요할 때에만 VM 실행을 간섭하도록 구성됩니다. 예를 들어, 특정 I/O 디바이스가 파티셔닝되면, 그 후 하이퍼바이저 간섭없이 배정된 VM이 접근 가능할 것입니다.

파라버추얼라이제이션 (Paravirtualization)

가상화를 수행하기 위한 마지막 기법은 파라버추얼라이제이션입니다. 본 방식은 운영체제를 명시적으로 변경함으로써 가상화되고 있음을 "인식"하도록 하고 기본 VMM이 필요할 때 자동 호출하도록 합니다. 이같은 호출은 하이퍼콜이라고도 합니다. 파라버추얼라이제이션이 VMM이 반드시 호출되어야 하는 횟수를 최소화함으로써 성능을 대폭 향상할 수 있지만, 변경이 이루어지도록 하기 위해 OS 소스 코드로의 접근을 확보해야 합니다.

4. 결론

가상화를 측정 또는 자동화 어플리케이션에 통합할 때 호스트형 또는 베어 메탈 VMM을 사용할 수 있습니다. 각 아키텍처는 I/O, 편리한 설치, 결정성 및 고려되어야 할 기타 요소 등에 대해 각기 다른 영향을 내포합니다. 로우 레벨에서 본 아키텍처는 2진 전환, 하드웨어 보조 및 파라버추얼라이제이션과 같은 기법에 의존하여 가상화를 진행합니다.
가상화가 엔지니어링 영역에서 더욱 보편화됨에 따라, 엔지니어들은 반드시 가상화의 기술, 가상화의 기본 유형 및 이를 실현하는 내부 기술을 이해해야 합니다. 설계자들은 신중한 결정을 내린 후에서야 비로소 버추얼 시스템의 성능을 최적화할 수 있으며 I/O와 기타 요구사항간의 균형을 맞출 수 있습니다.

5. 추가 자료

가상화와 멀티코어 기술에 대한 자세한 정보는 다음 자료를 확인하십시오.

댓글 1개:

  1. B250 PC Motherboard에서 Xen 기반 PCI Passthrough 개발자를 찾습니다. 연락 바랍니다. (ybkim20@naver.com)
    감사합니다.

    답글삭제

centos7 kernel update

퍼옴 :  https://deepcell.co.kr/m/101?category=803342 CentOS 7.x 의 경우 Linux Kerne Version이 3.10입니다. 참고로 최신 Linux Kernel Version은 5.6(2020년 2월 현...