가상화
물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성하는 기술, 논리적으로 격리된 환경을 생성하는 것이 핵심이다.
하나의 물리 시스템에서 복수의 시스템(서비스)을 구동하는 것, 하드웨어 요소(CPU/메모리/디스크)를 논리적으로 분리하고 각 가상화된 서버별로 분배해 줌으로써 서버를 구동시킨다.
이러한 가상화는 그렇게 최근에 등장한 기술은 아니나, PC의 하드웨어적 스펙이 비약적으로 발전함에 따라 가상화를 안정적으로 활용할 수 있게 되어 근래에 주목받고 있다.
기존에는 하나의 서버에 하나의 OS만 설치해 사용하는 구조를 이용했다고 한다. 그에 따라 각 서비스마다 하나의 물리적 서버가 필요했고, 그에 따라 낭비되는 하드웨어 리소스가
가상화로 하나의 서버에 여러 OS를 설치하게 되어 하드웨어 리소스를 보다 효율적으로 사용할 수 있는 것이다.
가상화 이전의 환경은 host OS 위에 각 서비스 Application이 올라가는 구조로, 단 하나의 App이라도 문제가 발생해 다운되는 경우 전체 host OS에 영향을 주어 다른 모든 App에 영향이 생기게 된다
가상화 이후에는 OS 위에 가상머신이 올라가고 그 가상머신 위에 서비스 Application이 올라감
따라서 가상머신 위에 여러 컴퓨터를 띄운다고 보면됨
가상화로 인해 얻을 수 있는 장점은 아래와 같다.
가장 먼저 하드웨어의 비용/공간의 절감이 있다. 기존의 서버 구조에서는 운영하는 서버 갯수별로 물리적 장비를 들여와야하기 때문에 서버의 추가와 같은 작업에 매번 비용과 공간의 이슈가 존재했다.
가상화를 활용하게 되면 물리적 서버의 갯수를 획기적으로 줄일 수 있으며, 더불어 서버의 추가 작업도 물리적 리소스가 남아있는 가정하에 신속하게 서버를 증설할 수 있다.
또한 하드웨어 갯수가 줄어들어 관리해야할 포인트도 감소한다는 점도 존재한다.
다음으로 가용성의 향상이 있다. 위에서 서술한 점과도 상충하는 부분이 있지만, 서버의 이중화를 하는 부분에서 가상화의 장점을 찾아볼 수 있다.
물리적 서버 하나를 이중화하는 경우, 동일한 스펙의 물리적 서버가 하나 더 필요하게된다. 하지만 물리적 서버가 최소 2개 이상이기만 하면 모든 가상화된 서버는 이중화가 가능해진다.
그 다음은 재해 복구(DR)로 하드웨어에 이상이 발생한 경우의 복구까지의 과정에서 확인할 수 있다.
이러한 문제가 발생해서 백업본을 이용해 복구해야하는 경우, 하드웨어는 복원까지 비교적 시간이 소요되어 서비스 중단시간이 발생하게 된다.
반면, 가상화된 환경에서는 백업된 이미지 파일을 통해 빠르게 복구가 가능하며, 장애 조치에 대한 아키텍쳐를 구성한 경우 서비스 무중단으로 복구가 가능하다.
Hypervisor
호스트 컴퓨터에 가상화를 구현하기 위한 플랫폼, guest OS와 그 위에서 구동되는 Application을 물리적 host로부터 분리하는 프로세스
실행되는 구조에 따라 Type1, Type2로 나뉜다.
- Type1 : bare-metal, 하드웨어 바로 위에 hypervisor가 존재, 하드웨어에서 직접 hypervisor가 실행됨
대표적인 Type 1 유형의 하이퍼바이저로는 VMware ESXi, Proxmox, Hyper-V, KVM, Xen이 있다.
(하드웨어 > hypervisor > guest OS) - Type2 : host OS위에 hypervisor가 존재
대표적인 Type 2 유형의 하이퍼바이저로는 VMware Server/Workspace, Virtualbox, QEMU가 있다.
(하드웨어 > host OS > hypervisor > guest OS)
Type1 방식의 hypervisor는 host OS없이 하드웨어에 직접 설치되기 때문에, DOM0라는 관리머신도 같이 구동됨
이 DOM0의 개입 방식에 따라 다시 전가상화/반가상화로 나뉜다
전가상화
하드웨어를 완전히 가상화하는 방식, guest OS가 host와 완전히 분리되어 실행된다. 따라서 guest OS는 자신이 가상머신 OS인지 인지할 수 없다.
모든 가상머신들의 하드웨어 접근에 DOM0가 개입을 하게된다.
- 장점 : 하드웨어를 완전히 가상화하기 때문에 guest OS에서 별 다른 작업을 해줄 필요가 없음
- 단점 : hypervisor가 모든 명령에 개입을 하기 때문에 반가상화에 비해 성능은 비교적 떨어짐
반가상화
전가상화와 달리 하드웨어를 완전히 가상화하지 않는 방법, Hyper Call이라는 인터페이스를 통해 hypervisor에 직접 요청을 내린다. 여기서 Hypervisor는 Hyper Call 요청을 하드웨어로 전송하기만 하는 것으로 전가상화와 차이가 존재한다.
가상화된 모든 guest OS에 해당 인터페이스가 필요하다.
- 장점 : 전가상화에 비해 비교적 높은 성능
- 단점 : hypervisor에 hyper call을 요청하기 위해 각 OS 커널의 수정이 필요, 오픈소스OS 이외에 사용이 힘듦 (윈도우의 경우 Xen을 통해 해결 가능)
전가상화와 반가상화가 구분되는 기준은 Guest OS의 수정여부로 볼 수 있다.