하이퍼 바이저를 직역하면 ‘ 무언가를 뛰어넘는 가리개 막 ‘
위키백과에서의 하이퍼바이저의 정의:
하이퍼바이저는 **호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼**을 말한다. 가상화 머신 모니터 (Vurtual Machine Monitor, VMM) 라고 부른다.
헬멧 등에서 바이저 : 여닫을 수 있는 부분
베어메탈(bare-metal)은 말 그대로 헐 벗은 금속이라는 의미이다.(의역하면 빈 깡통)
빈 깡통이니 OS가 설치되기 전의 서버라고 생각하면 된다.
옛날에는 이 서버에 OS를 직접 설치했으나 x86 서버 자체가 유닉스 서버 대비 중요도가 덜한 서비스에 사용되다 보니 OS 사용률이 평균 10%를 넘어서는 일이 많지 않았다.
x86 가상화를 구현하는 핵심이 바로 하이퍼바이저고, 하이퍼바이저는 기존 서버와 OS의 관계를 허무는 역할을 한다.
하이퍼바이저는 하이퍼바이저 방식과 호스티드 방식, 두 가지 Type으로 구분할 수 있다.
1. Type 1, 하이퍼 바이저 방식 (bare-metal 방식)
서버에 하이퍼바이저 제품을 직접 설치하는 방식이다.
VMware의 ESXi server, Citrix의 Xenserver, MS의 Hyper-V 서버 등이 베어메탈 방식의 하이퍼바이저라고 보면 된다.
- OS 처럼 설치하는 가상화 제품
- 설치 CD로 제공되기 때문에 OS 설치하듯 설치하면 된다.
- KVM은 리눅스 커널에 하이퍼바이저를 탑재하여 가상화를 구현한다.
- 대부분의 IT 데이터센터에서는 Type 1 방식으로 x86 가상화를 구축하고 있다.
- Type 1도 Full Vitualization 방식이냐 Para-Vitualization 방식이냐로 나뉜다.
1-1 전가상화 (Full Virtualiztion)
전가상화는 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불린다.
하이퍼바이저를 구동하면 DOM0 이라고하는 관리용 가상 머신이 실행되며, 모든 가상머신들의 하드웨어 접근이 DOM0 을 통해서 이루어진다.
즉, 모든 명령에 대해서 DOM0이 개입을 하게되는 형태이다.
쉽게 말해 하이퍼바이저는 가상화된 OS가 뭐든지간에 각 OS들이 내리는 명령어를 알아들을 수 있다. 예로, 윈도우에서 Add, 리눅스에서 ADD, 맥에서 add 라는 명령어를 내렸을때 하이퍼바이저가 ‘더해라’ 라고 번역하여 명령어를 실행해주는것이다.
장점 : 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음
단점 : 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느림
1-2 반가상화 (Para-vitualization)
반가상화는 전가상화과 달리 하드웨어를 완전히 가상화 하지 않는다.
전가상화의 가장 큰 단점인 성능저하의 문제를 해결하기 위해 하이퍼콜(Hyper call) 이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있다.
쉽게 말해 가상화된 각 OS들이 각각 다른 번역기를 갖고 있는 것이다. 그 번역기가 각각 다른 OS에서 내리는 명령어를 ‘더해라’ 라고 번역해주게 되는 것이다.
장점 : 모든 명령을 DOM0을 통해 하이퍼바이저에게 요청하는 전가상화에 비해 성능이 빠름
단점 : 하이퍼바이저에게 Hyper Call 요청을 할 수 있도록 각 OS의 커널을 수정해야하며, 오픈소스 OS가 아니면 반가상화를 이용하기가 쉽지 않다.
2. Type 2, 호스티드 방식 (Hosted 방식)
기존에 설치된 OS(윈도우 ,리눅스) 위에 응용 어플리케이션으로 가상화 제품을 설치하고 그 위에 또 다시 가상머신을 만들어서 운영하는 방식이다.
VMware의 Workstation Pro, VMware Player Pro, Oracle의 VitualBox 등이 대표적인 프로그램이다.
(Type 2 방식은 IT 데이터센터에서는 사용되지 않는 방식이며 개인용 개발 및 테스트를 할 경우에 많이 활용되고 있다.)
- 기존의 x86 가상화는 물리적 서버 차원에서의 가상화 지원이 약했다.
- 그래서 VMware 제품에서는 에물레이션을 통해 해결해야만 했고 (Binary Treanslation 이라고 함)
- 약간의 성능 저하는 피할수 없지만, 이후 Intel 및 AMD 에서 CPU 차원에서의 가상화 지원 기능을 통해 그런 문제들을 대부분 해결했다.
- Intel은 Intel-VT, AMD는 AMD-V 라는 CPU 차원의서의 가상화를 지원하게 됬다.
- 기존 x86 가상화 시에 소프트웨어를 통해 해야 했던 여러 가지 소프트웨어적인 기능들을 하드웨어인 CPU가 지원하게 됨으로써 소프트웨어에서 발생하는 부하가 줄었다고 생각하면 된다.
*유저모드? 커널모드?
커널에서 중요한 자원을 관리하기 때문에, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈 것이다.
- 유저모드 : 유저(사용자)가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드이다.
- 커널모드 : 모든 자원(드라이브, 메모리, CPU 등) 에 접근, 명령을 할 수 있다.
컨테이너 가상화
호스트 OS 위에 컨테이너관리 소프트웨어를 설치하여, 논리적으로 컨테이너를 나눈다.
컨테이너는 어플리케이션 동작을 위한 라이브러리와 어플리케이션 등으로 구성되기 때문에 이를 각각 개별 서버처럼 사용가능하다.
- 장점 : 컨테이너 가상화는 오버헤드가 적어 가볍고 빠른 장점이 있다.
'DevOps > virtualization_가상화' 카테고리의 다른 글
[가상화] VMware vSphere 개요 (0) | 2023.10.11 |
---|---|
[가상화] x86 가상화 아키텍쳐 구현 방식 (0) | 2023.09.20 |
[가상화] 전가상화와 반가상화 (0) | 2023.09.18 |
[가상화] x86 가상화를 이해하기 위한 기초 지식 (0) | 2023.09.09 |