클라우드 가상화 기술(Cloud Computing Virtualization Technology)
1. 가상화 기술이란(What is Virtualization Technology)
- 물리적인 컴포넌트(HW장치)를 논리적인 객체로 추상화 하는 기술
쉽게 말해서 마치 하나의 장치를 여러 개처럼 동작시키거나 반대로 여러 개의 장치를 묶어 하나의 장치인 것처럼 사용자에게 공유 자원으로 제공할 수 있게 만드는 기술이다. 더 쉽게 말하자면 1개를 3개 처럼 사용하던가 3개를 1개처럼 사용하는 것이다. 결국엔 클라우드 컴퓨팅에 핵심이 되는 기술임. 가상화의 대상이 되는 컴퓨팅 자원은 프로세서, 메모리, 스토리지, 네트워크가 될 수 있다.
2. 가상화 분야(Fields in Virtualization)
- 데이터 가상화 : 다수의 이기종 데이터를 단일한 소스로 접근 가능
- 네트워크 가상화 : SDN, NFV
- 서버 가상화 : 하이퍼바이저(Hypervisor)
- 운영체제 가상화 : 컨테이너(Container)
3. 서버 가상화(Server Virtualization)
서버 가상화를 통해 기존 전통적인 서버 구조에서는 하나의 OS만 구동이 가능했다면, 물리 서버 하드웨어 위에 ‘하이퍼바이저’ 라는 가상화 소프트웨어를 통해 여러 개의 게스트 OS 구동을 할 수 있게 됨
3.1. 서버 가상화 솔루션(Server Virtualization Solution)
Ctrix-Xen
- 캠브리지 대학교의 연구 프로젝트로 개발
- 오픈 소스 소프트웨어
- X86 서버 기반의 반 가상화 솔루션
- 게스트 운영체제의 수정이 필요함
- 전 가상화에 비해 처리에 대한 오버헤드가 적다
Hyper-V
- Microsoft에서 개발한 소프트웨어
- Window x64 버전을 위한 하이퍼바이저
- 라이선스 추가 구매 필요
- 다른 솔루션에 비해 전문적인 조작이 필요함
- 대부분의 지원되는 게스트 운영체제는 윈도우, 일부 리눅스 지원
Vmware EXSi
- 전 가상화 솔루션
- 라이센스 구매 필요
- 다양한 애플리케이션 지원 가능
- 강력한 암호화 기능으로 보안 강화
- 운영 자동화를 위한 다양한 플랫폼 지원
KVM
- 오픈 소스 소프트웨어
- x86 서버 기반의 전/반 가상화 솔루션
- 게스트 운영체제의 수정이 필요 없음
- 다른 가상화 솔루션에 비해 성능 우수
- ESX Server, Xen Server 등과 같이 전용 하이퍼바이저가 아닌 Linux 자체를 호스트 OS로 이용
- 엔터프라이즈급 클라우드에 적합
- 오픈스택에서 권장하는 솔루션
Oracle VirtualBox
- x86 서버 기반의 전 가상화 솔루션
- Linux, macOS, 솔라리스, 윈도우를 게스트 운영 체제로 가상화 하는 솔루션
- 원격 데스크톱 프로토콜(RDP), RDP를 거치는 원격 장치의 USB 지원과 같이 원격으로 가상 컴퓨터 제어 가능
- 낮은 오버헤드
- 신속한 배포 자동화
5. 하이퍼바이저(Hypervisor)
Virtualzation Layer에 설치되는 소프트웨어가 하이퍼바이저다. 다수의 운영체제에 대한 명령어들을 하드웨어 입장에서 이해 할 수 있도록 조율하고 컨트롤하는 중간 관리자의 역할을 한다.
5.1 하이퍼바이저 타입(Type of Hypervisor)
하이퍼바이저 타입에는 Type 1, Type 2가 있다. 호스트 OS 존재 유무에 따라 나뉘게 됨.
-
Type 1
하드웨어상에서 직접 가상화 소프트웨어를 실행하여 그 위에 가상 머신을 동작하는 기술로 호스트 OS를 거치지 않으므로 우수한 성능으로 대표적인 하이퍼바이저 형태 예) VMware ESX server, Citrix Xen Server, Microsoft Hyper-V, KVM -
Type 2
호스트 OS 위에서 동작되며 주로 개발, 테스트용으로 사용되며 설치에는 용이하나 Type 1에 비해 성능이 떨어짐 예) VMware Workstation, Oracle VirtualBox, QEMU
호스트 OS가 없는 Type1 모델의 하이퍼바이저가 당연히 성능이 좋을 수 밖에 없다. 따라서 대부분의 하이퍼바이저가 이 타입에 해당 된다고 보면 된다.
6. 컨테이너(Hypervisor)
그림에서 보면 왼쪽이 하이퍼바이저를 이용한 가상머신의 서버 가상화 방식이라면 오른쪽 그림은 컨테이너를 사용한 서버 가상화 방식이다. 가장 큰 차이점은 게스트OS와 하이퍼바이저가 없다는 것이다. 컨테이너 방식은 운영체제를 공유하고 그 위에 어플리케이션 영역을 나누어 다양한 App을 사용할 수 있는 방식이다.
따라서, 하이퍼바이저 방식에서 사용하는 게스트OS와 하이퍼바이저에 사용되는 리소스가 없기 때문에 가볍고 빠르게 동작할 수 있는 장점이 있다. 클라우드 컴퓨팅 환경에서는 대부분 리눅스 컨테이너를 사용한다고 볼 수 있다. 대표적인 컨테이너 오픈소스는 도커가 있음.
7. 결론(Conclusion)
클라우드 컴퓨팅에서는 가상하 기술이 핵심이다. 왜냐하면 셀프 서비스가 클라우드 컴퓨팅에 가장 큰 특징 중 하나인데, 즉 원할 때마다 원하는 리소스를 삭제하거나 생성할 수 있어야 하기 때문이다.
대표적으로 서버 가상화를 하는 방법에는 하이퍼바이저 방식과 컨테이너 방식이 있다.
- 하이퍼바이저 : 하드웨어를 추상화하여 여러개의 OS 구동 그 위에 필요한 어플리케이션 설치
- 컨테이너 : 호스트 OS를 추상화하여 여러개의 어플리케이션 구동 하이퍼바이저는 각각의 게스트 os 위에 어플리케이션을 구동하기 때문에 세부적인 os 나 네트워크 조작이 가능하지만, 리소스를 많이 먹는다. 컨테이너 방식은 하이퍼바이저 방식에 비해 가볍고 빠르다는 장점이 있지만 호스트 OS 영역을 공유하기 때문에 안정성에는 조금 불안해 보임.