리눅스 커널 내부구조 부록 #A, 가상화(Virtualization)란

문연수·2022년 3월 14일
0

iamroot (Linux Internal)

목록 보기
21/24
post-thumbnail

1. 가상화(Virtualization) 란?

  가상화는 물리적인 자원과 사용자가 사용하는 자원을 분리하는 것이다. 가상화는 물리적인 자원과 논리적인 자원을 구분하며, 이를 위해 가상화 층(virtualization layer)을 도입한다. 이 층은 실제 물리적인 자원의 복잡함을 숨기고 단일하며 일관된 가상 자원들을 제공한다.

2. 가상화의 장점

1. 이용률(Utilization) 증대

 가상화는 서버의 이용률을 높이고 관리 부하(느낌상 load balancing 에 도움이 된다는 뜻으로 해석됨)를 줄일 수 있다. 가상화는 다양한 응용들과 시스템 소프트웨어들을 하나의 시스템에서 통합(consolidation) 운영할 수 있기 때문에 이용률이 증가하며, 가상화 층에서 통합 관리가 가능하므로 관리 비용을 줄일 수 있다.

2. 고립(isolation)

 가상화는 각 사용자의 수행 환경을 다른 환경들로부터 고립(isolation) 시킬 수 있다. 각 사용자는 물리 자원을 직접 접근하는 것이 아니라 가상화 층에서 제공한 가상 자원만을 접근하며, 따라서 사용자의 비정상적인 행위와 결함을 그 사용자의 가상 머신으로 제한할 수 있어 신뢰성이 증가한다.

3. 집합(aggregation)

 물리적으로 떨어져 있는 저장 공간들을 논리적으로 연결하고 동일한 인터페이스를 통해 접근하게 함으로써 큰 저장 용량과 병렬 접근을 지원할 수 있으며, 서로 독립된 PC 들을 연결하여 고성능 클러스터 시스템이나 GRID 시스템을 만들 수 있다.

+ GRID 시스템이란?

GRID vGPU는 단일 GPU(Graphics Processing Unit)를 여러 가상 데스크톱 간에 공유할 수 있는 NVIDIA의 그래픽 가속 기술입니다. NVIDIA GRID 카드(x86 카드에 설치됨)가 VMware vSphere® 6.0에서 실행되는 데스크톱 가상화 솔루션에서 사용되는 경우, 하드웨어 이외의 가속 환경에 비해 탁월한 성능으로 애플리케이션 그래픽을 렌더링할 수 있습니다.

 위 내용은 NVIDIA 공식 문서(출처는 최하단)의 내용인데, 느낌상 parallel gpu computing 을 의미하는 것 같다.

4. 이동성(mobility)

 가상화는 시스템의 이동성(mobility)를 증가시킨다. OS 는 가상화 층이 제공한 가상 자원을 이용하며, 따라서 동일한 가상 자원을 이용한다면 실제 물리적인 자원의 종류에 무관하게 응용 프로그램과 OS 가 이주(migration) 될 수 있다.

 하드웨어 가상화는 아니지만 윗단의 개념을 빌려오면, JVM 이 그 대표적인 예라고 생각할 수 있을 것 같다.

5. 모의실험(emulation)

 가상화는 새로운 시스템이나 아직 개발되지 않은 하드웨어를 모의실험(emulation)하는 기능을 제공한다. 가상화 기술의 핵심은 물리 자원을 가상 자원으로 추상화 시키는 것이며, 이 기술은 실재 존재하지 않는 물리 자원에 대한 가상 자원의 생성도 가능하게 한다.

3. 가상화 방법

 물리 자원을 가상 자원으로 추상화할 때 다음의 두 가지 상반되는 요구 조건이 발생한다:

  1. VMM (Virtual Machine Monitor)이 생성하는 가상 자원은 실제 물리 자원과 비견될 수 있는 인터페이스를 제공해야 한다.
  2. VMMGuest OS 의 동작을 제어할 수 있어야 하며, 필요할 경우 Guest OS 의 자원 접근을 통제할 수 있어야 한다.


 설계 방식은 크게 아래와 같다:

1. 전가상화(Full Virtualization)

 전가상화는 VMM이 범용적인 가상 자원들을 제공하기 때문에 Guest OS 는 전혀 수정 없이 있는 그대로 수행 가능하다.

2. 반가상화(Para Virtualization)

 반가상화는 효과적인 Guest OS 제어와 성능 향상을 위해 VMMGuest OS 간에 의존 관계를 가지며 이 때문에 Guest OS 의 일부 수정이 필요하다.

4. 가상화 기술

 가상화 기술은 CPU 가상화, 메모리 가상화, I/O 가상화 기술 등으로 세분할 수 있다.

1. CPU 가상화

CPU 가상화는 물리 CPU 에 대한 논리적인 CPU 들을 생성하고 이것들을 공평성과 효율성에 맞게 각 가상 기계에게 할당하는 것을 의미한다.

1. Direct Execution 과 그 문제점

CPU 가상화에서 가장 중요한 기술 중 하나는 Direction Execution 의 지원이다. 이는 "가상머신을 실제 머신 상에서 직접 수행할 수 있으며 동시에 CPU 에 대한 제어는 전적으로 VMM 이 담당" 함을 의미한다.

 이를 위해선 VMM의 수행 특권과 가상 머신 상에서 수행되는 Guest OS 및 응용 프로그램의 수행 특권이 구분되어야 한다.

 그러나 대부분의 CPUVMM 의 존재를 고려하지 않고 설계가 되었으며, 결국 VMM 으로 trap 을 발생하지 않는다.

  1. XEN 의 반가상화 기술
    위 문제 해결을 위해 XEN 의 경우 Guest OS 를 수정하여 trap 을 발생하지 않는 특권 명령 사용 부분을 trap 을 발생시키도록 인위적으로 수정한다.
  2. VMWare ESX 서버의 전가상화 기술
    VMWare 에서는 runtime binary translator 를 이용해 수행 중에 특권 명령어를 trap 이 발생하는 명령으로 변경한다.

2. 가상화 기술 CPU

IntelAMD 는 위 문제를 해결하기 위해 CPU 에서 VMM 이 동작하는 새로운 특권과 가상화 기술을 지원하는 CPU 제품을 출시하고 있다. IntelVT-iVT-x, 그리고 AMDPacifica 등이 가상화 기술을 채택한 대표적인 CPU 의 예이다.

VT-xVMM 을 위한 새로운 특권(VMX root) 을 지원하며, 이 특권 모드로 전이를 위한 VM entry, VM exit 를 지원하여 VMM 에서의 direction execution 을 훨씬 더 단순화했다.

2. 메모리 가상화

 메모리 가상화의 목표는 물리 메모리를 Guest OS 가 이용하기 쉬운 형태의 가상 메모리로 추상화시켜 지원함과 동시에 각 가상 머신이 thrashing 없이 효과적으로 동작할 수 있도록 가 가상 머신의 요구에 맞게 메모리를 동적 할당하는 것이다.

thrashing 이란 메모리 사용 요구가 감당할 수 없을 만큼 많고 실행 중인 프로세스가 요구하는 메모리가 가용 물리 메모리 크기를 초과하는 경우에 운영체제는 끊임없이 페이징하는 상황을 의미한다. (출처는 하단)

1. shadow page table

VMM 에서 메모리 가상화를 구현하는 전통적인 방법은 shadow page table 을 사용하는 것이다. Shadow page tableVMM 에서 관리되며 모든 가상 머신의 페이지 테이블 내용을 동일하게 담고 있다.

 즉, 특정 가상 머신에서 페이지 테이블 내용이 바뀌면, 이것이 VMM 에게 알려지고 VMMshadow page table 에 이 수정을 반영하여 모든 물리 메모리에 대한 제어를 파악한다.

2. Balloon process

Balloon processGuest OS 상에서 동작하며 inflation 또는 deflating 작업을 수행한다.

VMM 이 가상머신으로부터 메모리를 회수할 때에는 balloon 에게 inflating 을 요구. balloon 은 가상 머신으로부터 메모리를 할당받고 이 공간을 VMM 에게 반납, 이때 가상 머신이 가장 사용하지 않을 페이지들을 balloon 에게 할당해 주었을 것이기 때문에, 페이지 회수에 따른 가상 머신의 성능 저하가 적음.

3. Contents-based page sharing

VMWare ESX 서버는 각 가상 머신에 동일한 페이지를 사용할 경우 서로 다른 복사본을 갖는 것이 아닌 하나를 공유하는 기법. 또한 쓰기 시 복사(Copy-On-Write) 기법을 사용하여 공유의 가능성을 극대화한다.

3. I/O 가상화

I/O 가상화는 각 가상 머신 간에 간섭을 없애며 동시에 각 가상 머신이 예약한 입출력 품질을 보장하도록 노력한다. 그러나 I/O 가상화는 입출력 장치가 너무나 종류가 많고 다양해서 단일한 인터페이스로의 추상화가 어렵다는 점이 있다.

1. VMWareI/O 가상화

VMWare WorkstationVMMHost OS 의 드라이버를 이용하여 I/O 가상화를 제공한다. Guest OSVMM 에게 I/O 를 요청하면, 이것을 Host OS 의 디바이스 드라이버에게 전달하고 실제 서비스는 Host OS 가 담당하는 기법이다.

2. XenI/O 가상화

Xen 은 가상 머신이 수행하는 공간을 도메인(domain) 이라 부르며, 시스템이 초기화될 때 초기 도메인(initial domain or domain 0) 이 네트워크와 디스크를 VIF (Virtual network InterFace) 들과 VBD (Virtual Block Disk) 에 대한 접근은 Xen 통해 실제 네트워크와 디스크에 대한 접근이 된다.

  공유 메모리는 위에서 보이고 있는 I/O ring 이라는 원형 큐를 통해 각 도메인이 Xen 과 통신하게 된다.

5. 가상화의 움직임

1. 가상화 지원 하드웨어

 인텔, AMD 등에서 가상화를 지원하는 CPU 를 발표하고 있으며, 가상화를 고려한 장치들이 업체와 학교에서 연구되고 있다. 가상화 기술을 지원하는 하드웨어의 등장은 VMM 의 효과적인 구현을 가능케 하며, 결국 가상화의 상용화를 가속시킬 것이다.

 2022년 현재, 실제로 요즈음 CPU 추상화 기능이 안 들어간 CPU 를 찾기가 더 어려울 정도다. 서버가 아니라 PC 에도 다 들어간다.

2. 새로운 가상화 접근 방법에 대한 발전

PAENE Virtualization 은 운영체제 기반 가상화 기술이다. PAENE Virtualizationcontainer 라는 개념을 사용하는데, 이것은 자원 고립(resource isolation), 이름 공간 고립(name space isolation), 보안 고립(security isolation), 결함 고립(fault isolation) 등을 제공하는 수행 공간이다.

 이게 요즘 유행하는 쿠버네티스? 인가 뭔가 하는 그거 아닌가? 이게 2006 년도 논문인데 대체 이들은 뭘 연구하고 있는거지? 진짜 가슴이 웅장해진다. (S.Soltesz, M. E.Fiuczynski, L.Peterson, M.Mccabe, J.Matthews, “Virtual
Doppelg¨anger: On the Performance, Isolation, and Scalability of Paraand Paene- Virtualized Systems” 2006, http://people.clarkson.edu/~jnm/
publications/paenevirtualization.pdf.)

3. 경량화된 가상화 기술

 가상화 층이 내장형 시스템에서 사용될 경우 다양한 시스템들 간에 상호 호환성을 제공할 수 있을 뿐만 아니라 개발 과정에서 복잡도를 완화할 수 있을 것이라 기대되고 있다. 이 때문에 내장형 시스템에서 사용할 수 있는 경량 가상화 (lightweight virtualization) 기술에 대한 연구가 시작되고 있다.

출처

[책] 리눅스 커널 내부구조 (백승제 최종무 저)
[사이트] https://www.vmware.com/files/kr/pdf/products/horizon/vmware-nvidia-grid-vgpu-FAQ.pdf
[사이트] https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf
[책] 운영체제: 아주 쉬운 세 가지 이야기 (Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau 지음), (원유집, 박민규, 이성진 옮김)
[사이트] https://slidetodoc.com/virtualization-part-iii-vmware-ahmad-ibrahim-1-overview/
[사이트] https://l2men.tistory.com/18
[사이트] https://lin-web.clarkson.edu/~jmatthew/publications/paenevirtualization.pdf

profile
2000.11.30

2개의 댓글

comment-user-thumbnail
2022년 3월 19일

멋져요

1개의 답글