Virtualization
) 란? 가상화는 물리적인 자원과 사용자가 사용하는 자원을 분리하는 것이다. 가상화는 물리적인 자원과 논리적인 자원을 구분하며, 이를 위해 가상화 층(virtualization layer
)을 도입한다. 이 층은 실제 물리적인 자원의 복잡함을 숨기고 단일하며 일관된 가상 자원들을 제공한다.
Utilization
) 증대 가상화는 서버의 이용률을 높이고 관리 부하(느낌상 load balancing
에 도움이 된다는 뜻으로 해석됨)를 줄일 수 있다. 가상화는 다양한 응용들과 시스템 소프트웨어들을 하나의 시스템에서 통합(consolidation
) 운영할 수 있기 때문에 이용률이 증가하며, 가상화 층에서 통합 관리가 가능하므로 관리 비용을 줄일 수 있다.
isolation
) 가상화는 각 사용자의 수행 환경을 다른 환경들로부터 고립(isolation
) 시킬 수 있다. 각 사용자는 물리 자원을 직접 접근하는 것이 아니라 가상화 층에서 제공한 가상 자원만을 접근하며, 따라서 사용자의 비정상적인 행위와 결함을 그 사용자의 가상 머신으로 제한할 수 있어 신뢰성이 증가한다.
aggregation
)물리적으로 떨어져 있는 저장 공간들을 논리적으로 연결하고 동일한 인터페이스를 통해 접근하게 함으로써 큰 저장 용량과 병렬 접근을 지원할 수 있으며, 서로 독립된 PC 들을 연결하여 고성능 클러스터 시스템이나 GRID 시스템을 만들 수 있다.
GRID vGPU
는 단일 GPU(Graphics Processing Unit)를 여러 가상 데스크톱 간에 공유할 수 있는 NVIDIA의 그래픽 가속 기술입니다. NVIDIA GRID 카드(x86 카드에 설치됨)가 VMware vSphere® 6.0에서 실행되는 데스크톱 가상화 솔루션에서 사용되는 경우, 하드웨어 이외의 가속 환경에 비해 탁월한 성능으로 애플리케이션 그래픽을 렌더링할 수 있습니다.
위 내용은 NVIDIA
공식 문서(출처는 최하단)의 내용인데, 느낌상 parallel gpu computing
을 의미하는 것 같다.
mobility
) 가상화는 시스템의 이동성(mobility
)를 증가시킨다. OS
는 가상화 층이 제공한 가상 자원을 이용하며, 따라서 동일한 가상 자원을 이용한다면 실제 물리적인 자원의 종류에 무관하게 응용 프로그램과 OS 가 이주(migration
) 될 수 있다.
하드웨어 가상화는 아니지만 윗단의 개념을 빌려오면, JVM
이 그 대표적인 예라고 생각할 수 있을 것 같다.
emulation
) 가상화는 새로운 시스템이나 아직 개발되지 않은 하드웨어를 모의실험(emulation
)하는 기능을 제공한다. 가상화 기술의 핵심은 물리 자원을 가상 자원으로 추상화 시키는 것이며, 이 기술은 실재 존재하지 않는 물리 자원에 대한 가상 자원의 생성도 가능하게 한다.
물리 자원을 가상 자원으로 추상화할 때 다음의 두 가지 상반되는 요구 조건이 발생한다:
VMM
(Virtual Machine Monitor
)이 생성하는 가상 자원은 실제 물리 자원과 비견될 수 있는 인터페이스를 제공해야 한다.VMM
은 Guest OS
의 동작을 제어할 수 있어야 하며, 필요할 경우 Guest OS
의 자원 접근을 통제할 수 있어야 한다.
설계 방식은 크게 아래와 같다:
Full Virtualization
) 전가상화는 VMM
이 범용적인 가상 자원들을 제공하기 때문에 Guest OS
는 전혀 수정 없이 있는 그대로 수행 가능하다.
Para Virtualization
) 반가상화는 효과적인 Guest OS
제어와 성능 향상을 위해 VMM
과 Guest OS
간에 의존 관계를 가지며 이 때문에 Guest OS
의 일부 수정이 필요하다.
가상화 기술은 CPU
가상화, 메모리 가상화, I/O
가상화 기술 등으로 세분할 수 있다.
CPU
가상화CPU
가상화는 물리 CPU
에 대한 논리적인 CPU
들을 생성하고 이것들을 공평성과 효율성에 맞게 각 가상 기계에게 할당하는 것을 의미한다.
Direct Execution
과 그 문제점 CPU
가상화에서 가장 중요한 기술 중 하나는 Direction Execution
의 지원이다. 이는 "가상머신을 실제 머신 상에서 직접 수행할 수 있으며 동시에 CPU
에 대한 제어는 전적으로 VMM
이 담당" 함을 의미한다.
이를 위해선 VMM
의 수행 특권과 가상 머신 상에서 수행되는 Guest OS
및 응용 프로그램의 수행 특권이 구분되어야 한다.
그러나 대부분의 CPU
는 VMM
의 존재를 고려하지 않고 설계가 되었으며, 결국 VMM
으로 trap
을 발생하지 않는다.
XEN
의 반가상화 기술XEN
의 경우 Guest OS
를 수정하여 trap
을 발생하지 않는 특권 명령 사용 부분을 trap
을 발생시키도록 인위적으로 수정한다.VMWare ESX
서버의 전가상화 기술VMWare
에서는 runtime binary translator
를 이용해 수행 중에 특권 명령어를 trap
이 발생하는 명령으로 변경한다.CPU
Intel
과 AMD
는 위 문제를 해결하기 위해 CPU
에서 VMM
이 동작하는 새로운 특권과 가상화 기술을 지원하는 CPU
제품을 출시하고 있다. Intel
의 VT-i
와 VT-x
, 그리고 AMD
의 Pacifica
등이 가상화 기술을 채택한 대표적인 CPU
의 예이다.
VT-x
는 VMM
을 위한 새로운 특권(VMX root
) 을 지원하며, 이 특권 모드로 전이를 위한 VM entry
, VM exit
를 지원하여 VMM
에서의 direction execution
을 훨씬 더 단순화했다.
메모리 가상화의 목표는 물리 메모리를 Guest OS
가 이용하기 쉬운 형태의 가상 메모리로 추상화시켜 지원함과 동시에 각 가상 머신이 thrashing
없이 효과적으로 동작할 수 있도록 가 가상 머신의 요구에 맞게 메모리를 동적 할당하는 것이다.
thrashing
이란 메모리 사용 요구가 감당할 수 없을 만큼 많고 실행 중인 프로세스가 요구하는 메모리가 가용 물리 메모리 크기를 초과하는 경우에 운영체제는 끊임없이 페이징하는 상황을 의미한다. (출처는 하단)
shadow page table
VMM
에서 메모리 가상화를 구현하는 전통적인 방법은 shadow page table
을 사용하는 것이다. Shadow page table
은 VMM
에서 관리되며 모든 가상 머신의 페이지 테이블 내용을 동일하게 담고 있다.
즉, 특정 가상 머신에서 페이지 테이블 내용이 바뀌면, 이것이 VMM
에게 알려지고 VMM
은 shadow page table
에 이 수정을 반영하여 모든 물리 메모리에 대한 제어를 파악한다.
Balloon process
Balloon process
는 Guest OS
상에서 동작하며 inflation
또는 deflating
작업을 수행한다.
VMM
이 가상머신으로부터 메모리를 회수할 때에는 balloon
에게 inflating
을 요구. balloon
은 가상 머신으로부터 메모리를 할당받고 이 공간을 VMM
에게 반납, 이때 가상 머신이 가장 사용하지 않을 페이지들을 balloon
에게 할당해 주었을 것이기 때문에, 페이지 회수에 따른 가상 머신의 성능 저하가 적음.
Contents-based page sharing
VMWare ESX
서버는 각 가상 머신에 동일한 페이지를 사용할 경우 서로 다른 복사본을 갖는 것이 아닌 하나를 공유하는 기법. 또한 쓰기 시 복사(Copy-On-Write
) 기법을 사용하여 공유의 가능성을 극대화한다.
I/O
가상화 I/O
가상화는 각 가상 머신 간에 간섭을 없애며 동시에 각 가상 머신이 예약한 입출력 품질을 보장하도록 노력한다. 그러나 I/O
가상화는 입출력 장치가 너무나 종류가 많고 다양해서 단일한 인터페이스로의 추상화가 어렵다는 점이 있다.
VMWare
의 I/O
가상화 VMWare Workstation
은 VMM
이 Host OS
의 드라이버를 이용하여 I/O
가상화를 제공한다. Guest OS
가 VMM
에게 I/O
를 요청하면, 이것을 Host OS
의 디바이스 드라이버에게 전달하고 실제 서비스는 Host OS
가 담당하는 기법이다.
Xen
의 I/O
가상화 Xen
은 가상 머신이 수행하는 공간을 도메인(domain
) 이라 부르며, 시스템이 초기화될 때 초기 도메인(initial domain or domain 0
) 이 네트워크와 디스크를 VIF (Virtual network InterFace
) 들과 VBD (Virtual Block Disk)
에 대한 접근은 Xen
통해 실제 네트워크와 디스크에 대한 접근이 된다.
공유 메모리는 위에서 보이고 있는 I/O ring
이라는 원형 큐를 통해 각 도메인이 Xen
과 통신하게 된다.
인텔, AMD
등에서 가상화를 지원하는 CPU
를 발표하고 있으며, 가상화를 고려한 장치들이 업체와 학교에서 연구되고 있다. 가상화 기술을 지원하는 하드웨어의 등장은 VMM
의 효과적인 구현을 가능케 하며, 결국 가상화의 상용화를 가속시킬 것이다.
2022년 현재, 실제로 요즈음 CPU 추상화
기능이 안 들어간 CPU
를 찾기가 더 어려울 정도다. 서버가 아니라 PC
에도 다 들어간다.
PAENE Virtualization
은 운영체제 기반 가상화 기술이다. PAENE Virtualization
은 container
라는 개념을 사용하는데, 이것은 자원 고립(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.)
가상화 층이 내장형 시스템에서 사용될 경우 다양한 시스템들 간에 상호 호환성을 제공할 수 있을 뿐만 아니라 개발 과정에서 복잡도를 완화할 수 있을 것이라 기대되고 있다. 이 때문에 내장형 시스템에서 사용할 수 있는 경량 가상화 (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
멋져요