물리장비의 가상화 : 자원을 가상화하여 VM을 띄워 Control하는 것을 의미한다. 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행할 수 있다.
하이퍼바이저는 크게 2가지로 분류된다.
운영체제가 프로그램을 제어하는 것처럼 하드웨어에서 하이퍼바이저가 직접 실행된다. Guest OS는 하드웨어 위에서 두번째 수준으로 실행된다.
각 VM은 모두 독립적이며 각 VM에는 Guest OS가 존재한다.
장점 : 장애가 났을 시 해당 VM을 쉽게 이전(migration)가능하다.
오픈소스 하이퍼바이저에는 대표적으로 Xen과 KVM이 있다. 이를 이해하기 위해서는 우선 OpenStack과 CloudStack에 대한 개념을 먼저 알아야 한다.
하이퍼바이저를 Control하는 도구 중 하나이다. 가상 리소스를 사용하여 프라이빗 및 퍼블릭 클라우드를 구축하고 관리하는 오픈소스 플랫폼이다.
OpenStack의 가장 큰 특징은 MSA구조라는 것이다.
MSA란?
MSA(Micro Service Architecture)는 단일 프로그램을 각 컴포턴트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다.
각 프로젝트는 고유의 기능을 가지고 있으며 프로젝트 간 통신은 Rest API를 사용한다.
Controller Node & Compute Node
OpenStack은 컨트롤러와 다른 공유 리소스를 관리하는 Controller Node와 OpenStack이 관리하는 가상머신이 존재하는 Compute Node로 구성된다.
Controller Node는 서버 측 API서비스를 관리하며 OpenStack 배포를 위한 주요 인터페이스 역할을 한다.
Compute Node에서 인스턴스 동작 시에는 Hypervisor가 실행되며, 주로 KVM 하이퍼바이저를 사용한다.
OpenStack 구성요소
Xen
Baremetal 하이퍼바이저로 호스트 운영체제가 존재하지 않는다.
Xen에는 가장 많은 권한을 가지는 Domain0이 존재한다. 하드웨어에 직접 접근하기 위해서는 Domain0을 이용해야하며, 다른 가상머신(DomU)는 Domain0의 관리를 받는다.
Domain0은 하이퍼바이저에서 하나의 도메인으로 관리하기 때문에 Type1 하이퍼바이저이다.
KVM
Linux OS를 Type1 하이퍼바이저로 전환한다. 즉, Linux 커널에 KVM 하이퍼바이저가 위치하게 된다.
CloudStack 또한 하이퍼바이저를 Control하는 도구 중 하나이다.
IaaS를 구축하기 위해 컴퓨터 자원을 모아 관리하는 오픈소스 소프트웨어 플랫폼이다.
일반 프로그램과 같이 호스트 운영체제에서 하이퍼바이저가 실행되며, VM내부의 Guest OS는 하드웨어에서 3번째 수준으로 실행된다.
하이퍼바이저 위에 자체적인 Application을 사용가능하다는 장점이 있지만 OS를 거쳐서 한번 더 처리하기 때문에 Latency가 생긴다는 단점이 있다.
OS자체를 가상화함으로써 논리적으로 OS를 할당한다. OS레벨에서 프로세스를 격리하여 모듈화된 프로그램 패키지를 수행하기 때문에 하이퍼바이저와 GuestOS가 불필요하다.
컨테이너가 OS 커널을 공유하기 때문에 가볍다는 장점이 있지만, OS 커널에 장애가 발생 시 모든 VM이 영향을 받는다는 단점이 있다.
하이퍼바이저는 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링하게 된다. 하이퍼바이저 위에 VM이 올라가고 각 VM에는 독립적인 Guest OS가 들어있기 때문에 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있다.
반면 컨테이너는 하나의 OS 환경을 가상화하여 논리적으로 OS를 할당하기 때문에 하드웨어를 가상화하는 하이퍼바이저와 GuestOS가 불필요하다. 모든 컨테이너가 OS 커널을 공유하게된다.