가상머신 (Virtual Machine)
- 줄여서 VM 이라고 부른다.
- 컴퓨터 환경을 소프트웨어적으로 구현한 것
- 내부구조가 물리적인 서버의 컴퓨팅 환경과 매우 유사
- 여러 VM이 동시에 존재할 수 있고, 각 VM마다 서로 다른 구동 환경을 갖출 수 있어 다양한 어플리케이션을 수행하는 것이 가능
하이퍼바이저(Hypervisor)
하이퍼바이저란?
- 가상화를 구현하기 위한 기반이 되는 기술
- 하이퍼바이저는 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어
- VMM(Virtual Machine Monitor or Virtual Machine Manager)라고 함
하이퍼바이저 특징
- 하이퍼바이저로 사용되는 물리 하드웨어를 'Host'
리소스를 사용하는 여러 VM들을 'Guest'
- CPU, Memory, Storage 등의 리소스를 처리하는 풀로, 기존 게스트간 또는 새로운 가상머신에 쉽게 재배치 가능
- 서로 다른 여러 개의 운영 체제를 나란히 구동
동일한 가상화 하드웨어 리소스를 공유
하이퍼바이저의 종류
Enterprise 데이터센터와 서버 기반 환경에서 일반적으로 사용
- Hypervisor가 OS에 종속되지 않고 하드웨어에 직접 설치되는 구조
(Host OS가 없음)
- Bare-Metal = "어떤 소프트웨어도 담겨 있지 않은 하드웨어"
- 하이퍼바이저가 다수의 VM을 관리하는 형태
Pros and Cons
Pros
- 하이퍼바이저에서 직접 하드웨어 제어 가능 → 상대적으로 오버헤드 적음 (직접 관리 → 리소스 관리 유연)
- Type 2에 비해 향상된 성능
예) KVM, Microsoft Hyper-V, VMware vSphere
Cons
- 별도의 관리기능 필요
- 여러 하드웨어 세팅이 필요함 (번거로움)
하드웨어를 컨트롤할 OS가 없어 별도의 관리 기능이 필요하며 'DOm0' 라는 관리 머신이 같이 구동된다.
DOm0에서 일 처리량에 따라 크게 2가지로 나뉜다. (전가상화, 반가상화)
전가상화 vs 반가상화
전가상화
- 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불린다.
- 모든 가상머신들의 하드웨어 접근이 DOm0을 통해서 이루어짐
i.e 모든 명령에 대하여 DOm0가 개입을 하게 되는 형태
- Guest는 자신이 가상화 위에 동작하고 있다는 것을 인식할 수 없음
- Guest OS에서 물리자원을 직접 접근 불가
장·단점
- (장점): Guest OS 운영체제의 별다른 수정이 필요 없음
- (단점): 반가상화에 비해 비교적 느림
반가상화
- 전가상화의 성능저하 문제를 해결하기 위해 등장한 기술
'Hyper Call' 인터페이스를 통해 하이퍼바이저에게 직접 요청할 수 있음.
- Guest OS가 자신이 가상머신 위에 동작하고 있다는 것을 인식할 수 있음
- Guest OS에서 물리자원을 직접 접근가능
Hyper Call
반가상화는 전가상화에서 DOM0이 수행했던 '번역'의 역할을 각 가상머신에서 처리하는 것이다.
명령을 던지는 사람이 직접 번역을 해서 전달한다는 것이며 미리 번역된 명령을 DOM0를 통해서가 아닌 하이퍼바이저에게 직접 전달한다. 이를 Hyper Call이라 한다.
장·단점
- (장점): 전가상화에 비해 성능이 빠름
- (단점): Hyper Call 요청을 할 수있도록 각 OS의 커널을 수정해야하며 오픈소스OS가 아니면 반가상화를 이용하기 쉽지 않음.
Type2: Host형 가상화
개인 PC 환경에서 여러 운영 체제를 구동하려는 개인 사용자에게 이상적
일반적으로 사용하는 가상머신으로 생각하면 된다.
- (Xen 방식) Host OS위에 하이퍼바이저가 실행되고, 그 위에 Gust OS를 올리는 방식
- Host OS가 Bare-Metal을 알아서 관리해주기에 DOM0과 같은 관리툴이 따로 필요없다.
- Type 1보다 성능이 낮음.
Ex) VMware Workstation, Oracle VirtualBox
참고
https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor
https://pearlluck.tistory.com/121
https://itholic.github.io/hypervisor/
https://tech.cloud.nongshim.co.kr/2018/09/18/%EA%B0%80%EC%83%81%ED%99%94%EC%9D%98-%EC%A2%85%EB%A5%983%EA%B0%80%EC%A7%80/