one of a kind scene

4-3 데이터 처리 기술_클라우드 인프라 기술 part3_CPU 가상화 본문

ADP/이론

4-3 데이터 처리 기술_클라우드 인프라 기술 part3_CPU 가상화

specialscene 2020. 1. 24. 01:42

CPU 가상화

CPU 가상화에서는 '하이퍼바이저(Hypervisor)'를 떠올리자

 

1. 하이퍼바이저(Hypervisor)의 개념 및 특징

     • 물리적 서버 위에 존재하는 가상화 레이어(층)을 통해 운영체제를 수행하는데 필요한 하드웨어 환경을 가상으로 만들어 준다.

     • 하이퍼바이저(Hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하도록 하기위한 논리적인 플랫폼(platform)을 의미

     • 엄격하게 구분할 경우에는 차이가 있지만 일반적으로 가상머신(Virtual Machine)을 '하이퍼바이저'라고 할 수 있으며, 하이퍼바이저는 VMM(Virtual Machine Monitor)라고도 함

     • 하이퍼바이저는 서버 가상화 기술의 핵심으로 x86 계열 서버 가상화에서는 소프트웨어 기반으로 하이퍼바이저를 구성

     • 하이퍼바이저를 통해 사용자는 추가 하드웨어 구입 없이 새로운 운영체제의 설치, 애플리케이션의 테스팅 및 업그레이드를 동일한 물리적 서버에서 동시에 수행 가능

 

2. (참고)하이퍼바이저의 기능

     • 하드웨어 환경 에뮬레이션(Emulates a complete hardware evnironment)

     • 실행환경 격리(Isolate execution in each VM)

     • 시스템 자원 할당(Allocates platform resources-processing, memory, I/O, storage)

     • 소프트웨어 스택 보존(Encapsulates software stacks including the OS and state information)

 

3. 하이퍼바이저 관련 기술의 분류

     ① 플랫폼별 분류

x86 계열 유닉스 계열 메인 프레임 계열
VMware, Xen
MS Virtual Server
IBM의 POWER Hypervisor z/VM과 하드웨어 펌웨어로
분류되는 PR/SM 등

 

     ② 하이퍼바이저의 위치와 기능에 따른 분류

          • 하이퍼바이저가 물리적인 하드웨어 또는 호스트 운영체제와의 관계에서 어디에 위치하는지에 따라 베어메탈(Bare-metal) 하이퍼바이저와 호스트 기반(Hosted) 하이퍼바이저로 나뉨

종류 개념 사례
베어메탈 가상화
(Bare-metal Virtualization)
베어메탈 하이퍼바이저를 사용하는 서버 가상화
베어메탈 하이퍼바이저는 하드웨어와 호스트 운영체제 사이에 위치
• 완전 가상화(Full Virtualization)
: VMware ESX, MS VirtualPC/ Server
 반 가상화(Para Virtualization)
: Denali, Xen
호스트 기반 가상화
(Hosted Virtualization)
호스트기반 하이퍼바이저를 사용하는 서버 가상화
호스트기반 하이퍼바이저호스트 운영체제와 게스트 운영체제 사이에 위치 사이에 위치
Vmware Wrokstation
컨테이너 기반 가상화
(Container-based Virtualization)
• 책에 별도 설명없었음 ㅠㅠ • OpenVz, Linux-Vserver, FreeBSD Jails

 

     ③ privileged 명령어 처리 방법에 따른 분류

          • privileged 명령어는 하드웨어에 대한 제어를 하는 명령어

          • x86 아키텍처에서 가상화 기술의 핵심은 가상머신이 요청하는 privileged 명령어를 1)어떻게,

2)어떤 계층에서 처리하느냐 이다.

          • 완전가상화, 반가상화로 나누는 방식은 privileged 명령어를 어떻게에서 처리하느냐를 기준으로 나눔

          • privileged 명령을 하이퍼바이저가 모두 다루냐? 일부만 다루냐? 에 따라 나뉨

          • 완전가상화 : privileged 명령어를 하이퍼바이저가 모두 다룸

          • 반가상화 : privileged 명령어를 게스트 운영체제에서 hypercall로 하이퍼바이저에게 전달한것만 다룬다

          • x86 계열 운영체제는 자신의 모든 하드웨어에 대한 제어 소유권을 갖고 있다는 가정 아래 하드웨어에 직접명령을 수행하는 방식으로 디자인 됨

          • 가상화는 사용자 어플리케이션인 Ring3레벨로 수행됨

          • 가상머신 내에서도 운영체제가 필요하고 이 운영체제는 Ring 0의 권한이 필요. 따라서, 가상머신의 운영체제가 응용 애플리케이션 권한(Ring 3)으로 수행될 경우 x86 아키텍처에서는 복잡한 문제 발생

          • 그래서, Ring 3에서 수행된 가상머신 운영체제에서 Ring 0 수준의 명령을 호출하면 가상화를 지원하는 계층에서 이를 Ring 0 수준의 명령어로 다시 변환해 실행해야함. 이를 위해 가상화 지원 계층은 반드시 Ring 0 레벨(Intel VT-x, AMD-V에서는 Ring -1)로 수행되어야함.

<x86 privilege level architerture>

4. 가상화 방식의 분류(6가지)

     ① 완전 가상화 : 'trap' 이라는 용어 기억!

          • 완전 가상화란 하이퍼바이저보다 우선순위가 낮은 가상머신에서는 실행되지 않는 privileged 명령어에 대해서 하이퍼바이저가 trap을 발생시켜 실행하는 방식

          • 즉, 하이퍼바이저가 모든 명령어를 핸들링 하다보니 부담이 커 성능에 영향이 있음

          • VMware ESX server, MS Virtual Server 등의 제품이 완전 가상화 기반 솔루션

          • 초기 Xen에서는 완전 가상화를 지원하지 않았지만, 최근 Intel VT-X, AMD-V 환경에서 완전가상화를 지원

                                        완전 가상화의 장점과 단점
장점 CPU뿐만 아니라 메모리, 네트워크 장치 등 모든 자원을 하이퍼바이저가 직접 제어·관리
• 따라서, 어던 운영체제라도 수정하지 않고 설치 가능
• MS 윈도우 같은 Guest OS가 하이퍼바이저 상에서 변경되지 않은 상태로 실행될 수 있음

단점 하이퍼바이저가 자원을 직접제어하기 때문에 성능에 영향을 미쳐, 반가상화에 비해 속도가 느림
• 자원들이 하이퍼바이저에 너무 밀접하게 연관돼있어 운영 중인 게스트 운영체제에 할당된 CPU나 메모리 등의 자원에 대한 동적변경 작업이 단일 서버 내에서는 어려움
 자원에 대한 동적 변경을 하기 위해서는 VMware의 VMotion과 같은 솔루션의 도움을 받아야 함

 

     ② 하드웨어 지원 완전 가상화 : Ring -1 계층 얘기 나오면 하드웨어 지원 완전 가상화

          • 최근 완전 가상화 방식에서 Intel Vt-x, AMD-V CPU의 하드웨어에서 제공하는 가상화 기능을 이용

          • 가상머신에서 메모리와 CPU 등의 하드웨어에 명령을 내릴 수 있는 반가상화 수준의 성능을 발휘하도록 개선하고 있음

          • CPU에 Ring -1 계층이 추가되었으며, 하이퍼바이저는 Ring -1에서 수행됨

          • 가상머신의 운영체제(Guest OS)는 Ring 0에서 수행되어(보통 Ring 3에서 수행됨) privilieged 명령어에 대해 추가로 변환 과정이 필요 없음
          (참고 사항)

          • 하이퍼바이저를 거쳐 바로 하드웨어로 명령이 전달돼 빠른 성능 보장

          • 인텔에서 제시하는 하드웨어 지원 가상화 사용시 주의점 : "하드웨어 지원 가상화를 사용하는 경우 CPU 사용률이 높아짐. 특히 I/O나 메모리를 많이 사용하는 경우 CPU 사용률이 높아짐. 따라서, 서버 통합을 목적으로 하는 경우 비효율적일 수 있음

          • 인텔에서는 반가상화와 하드웨어 지원 완전 가상화를 모두 사용하는 하이브리드 가상화를 제시

          • Xen을 이용한 하이브리드 가상화의 경우, 반가상화용으로 수정된 운영체제에 하드웨어 지원 완전 가상화 모듈을 탑재해 명령어의 종류에 따라 반가상화 또는 완전 가상화를 선택.사용 하도록 함

 

     ③ 반가상화 : 'hypercall' 용어 기억!

          • privileged명령어를 게스트 운영체제에서 hypercall로 하이퍼바이저에 전달하고, 하이퍼바이저는 hypercall에 대해서 privileged 레벨에 상관없이 하드웨어로 명령을 수행

          • hypercall은 게스트 운영체제에서 요청하면 하이퍼바이저에서 바로 하드웨어 명령을 실행하는 call

          • 반가상화가 적용된 게스트 운영체제는 CPU나 메모리와 같은 자원에 대한 직접적인 제어권을 가짐으로써 자원의 변화와 같은 동적 가상화 환경에 유연하게 적응 가능

          • 따라서, 반가상화 기반에서는 CPU 메모리 자원의 동적 변경이 서비스 중단 없이 이루어 질 수 있으며, 완전 가상화에 비해 성능이 뛰어남

          • 반가상화는 privileged 명령어를 직접 호출(hypercall)하므로 속도는 빠르나, 커널을 변경해야하고(=게스트 운영체제를 수정해야한다는 얘기), 완전 가상화는 dynamic binary traslation(Xen은 emulation)모듈과 통신을 통해 처리하므로 속도는 느리나 커널 변경이 없다

          (참고 사항)

          • VMware와 같은 상용 솔루션은 완전 가상화와 반가상화의 장단점을 보완해 아키텍처, 기능, 성능 등에서 뚜렬한 차이가 없음

          • VMI(Virtual Machine Interface)라는 표준 인터페이스를 제시하고, 이 인테페이스를 준수하는 모든 게스트 운영체제를 지원하는 체계로 반가상화를 지원하고 있음

          • VMI는 아직 정식 표준으로 채택되지 않았지만 리눅스 진영에서도 도입하려는 움직임이 나타나고 있음 

 

     ④ Monolithic vs Microkernel

          • 하드웨어에 대한 드라이버가 어느 계층에 있느냐에 따라 Monolithic 방식과 Microkernel 방식으로 구분ㄷ할 수 있음

Monolithic 방식 Microkernel 방식
• 가상머신이 I/O를 위해 하드웨어에 접근할 때 사용하는 드라이버를 하이퍼바이저 계층에서 모두 갖고있는 방식

• 반가상화 그림을 보면 VMware의 경우 하이퍼바이저가 드라이버를 갖고있으며 모든 I/O 요청은 하이퍼바이저가 수행

• 성능은 조금 향상될 수 있지만 하이퍼바이저에게 모든 드라이버를 가지고 있어야하기 때문에 하드웨어가 추가되거나 드라이버가 업데이트 되는 경우 하이퍼바이저가 수정되어야하고 더 많은 코드를 가지고있기 때문에 장애가 발생할 가능성도 높다

• 가상머신 I/O를 위해 하드웨어에 접근할 때 사용하는 드라이버를 각 가상머신에서 드라이버를 갖는 방식

• Xen에서 하이퍼바이저는 드라이버가 없으며 호스트 운영체제가 드라이버를 가지고 있고, 각 게스트 운영체제는 가상드라이버를 가지고있어 I/O 요청을 위해서는 호스트 운영체제를 거쳐야 함

• 게스트와 호스트 운영체제는 서로 격리되어 있기때문에 하이퍼바이저(또는 VMBus)를 이용해 요청을 주고 받음

• 속도는 조금 느리지만 하이퍼바이저 계층이 간단하여 드라이버 업데이트나 하드웨어 추가에 따른 하이퍼바이저 변경이 필요 없음 따라서, 장애 발생 확률이 훨씬 낮다

<하이퍼바이저 기반 가상화 기술 비교>

구분 완전 가상화
(CPU 기술 이용 안함)
완전 가상화
(CPU 기술 이용)
반가상화
사용기술 바이너리 변환,
Direct Execution
Privileged Instruction은
Ring -1로 처리됨
수정된 OS 사용
게스트OS
반응/호환성
게스트 OS 변경 필요 없음,
호환성이 뛰어남
게스트 OS 변경 필요 없음,
호환성이 뛰어남
(단, CPU가 지원해야함)
hypercall을 가능하도록
게스트 OS 변경함,
호환성이 안좋음
성능 좋음 Fair
(점점 Binary Translation 방식의 
성능에 근접)
특정 경우에 더 좋음
게스트 OS가
하이퍼바이저에
독립적인가?
독립적 독립적 Xen Para Virtualization은
Xen 하이퍼바이저에서만 동작,
VMI 규칙을 따르는
VMI-Linux는 하이퍼바이저에
독립적
제품 VMware, Microsoft,
Parllels
VMware, Microsoft, Xen,
Parllels
VMware, Xen

 

     ⑤ 호스트 기반 가상화 : 하이퍼바이저가 호스트 운영체제 위에 탑재, 옛날 하드웨어 및 운영체제 테스트 환경에서 많이 사용되었고 요즘은 잘 안씀

          • 호스트 기반 가상화는 완전한 운영체제가 설치되고, 가상화를 담당하는 하이퍼바이저가 호스트 운영체제 위에 탑재하는 방식

          • 다른 가상화 환경에 비해 성능은 물론 자원 관리 능력 측면에서도 제약 사항이 많은 편

          • 가장 큰 단점은 단일 운영체제의 취약성이다. 예를 들어 호스트 운영체제 레벨에서 보안 이슈가 발생할 경우 전체 게스트 운영체제의 신뢰성에도 문제가 발생할 수 있음

          • 주로 테스트 환경에서 많이 사용되었으며 최근에는 많이 사용하지 않음

          • 호스트 기반가상화의 대표적 사례로는 VMware, Workstation, Microsoft Virtual PC등이 있음

          • 기존 레거시 애플리케이션 중 아주 오래된 하드웨어와 그 하드웨어를 지원하는 특정 운영체제에서만 수행되어야 하는 애플리케이션을 가상화 기반에서 운영하는 경우에 사용할 수 있음

 

     ⑥ 컨테이너 기반 가상화 : 운영체제만을 가상화한 방식

          • 컨테이너 기반 가상화는 호스트 운영체제 위에 가상의 운영체제를 구성하기 위한 운영 환경 계층을 추가하여 운영체제만을 가상화한 방식

          • 컨테이너 기반 가상화 방식에서 가상화를 지원하는 계층을 하이퍼바이저라 하지 않고, 가상 운영환경(Virtual server environment)라고 부름

          • 컨테이너 기반 가상화에는 오픈소스 진영의 OpenVZ와 OpenVZ를 상용화한 Virtuozzo, Solaris Containers, Linux-VServer등 여러 솔루션이 있음

장점 단점
운영체제만을 가상화 대상으로 하므로 전체 하드웨어를 대상으로 하는 하이퍼바이저 기반 가상화 방식에 비해 훨씬 적게 가상화함
가상화 수준이 낮기 때문에 다른 방식에 비해서 빠른 성능을 보임
• 한 대의 서버에서 더 많은 컨테이너를 실행할 수 있음
자원 간 격리 수준이 낮아 하나의 가상 운영 체제에서 실행되는 애플리케이션의 자원 사용에 따라 다른 가상 운영체제가 영향을 받음
호스트 운영체제의 보안 취약성에 의해 모든 가상 운영체제에 문제가 발생할 수 있음
• 호스트 운영체제를 공유하기 때문에 호스트 운영체제의 문제가 전체 가상 운영체제에도 영향을 미침

<하이퍼바이저 기반 가상화와 컨테이너 기반 가상화 비교>

구분 하이퍼바이저 기반(Full, Para) 컨테이너 기반
하드웨어 독립성 가상머신 내에서 완전 독립 호스트 OS 사용
OS 독립성 호스트 OS와 완전 독립
(리눅스와 윈도우 머신 동시 사용 가능)
호스트 OS와 게스트OS 동일
격리 수준 높은 격리 수준 낮은 격리 수준
관리 가상머신 별로 별도 관리 공통 SW 중앙 집중식 관리
성능 높은 오버헤드 발생
성능 향상을 위해 HW 가상화 기술 병행
오버헤드 거의 없음,
HW 자원의 대부분을 활용
응용분야 이기종 통합(윈도두와 리눅스 혼합 환경) 단일 OS 환경 자원 통합 대규모 호스팅 업체
대표제품 VMware ESX, MS Virtual Server,
Xen(Para Virtualization)
Virtuozzo(상용, OpenVZ-공개)
Sun Solaris Container

 

(참고) 가상화 vs 반가상화

https://sarc.io/index.php/cloud/858-full-virtualization-paravirtualization