서버가상화에 대한 시장의 관심은 대단히 뜨거운데요, 각 기술의 아키텍처 측면에서 설명을 해보려고 합니다.
1. VMWare ESX
2. Microsoft Hyper-V
3. Xen
위의 3가지가 바로 가상화 삼국지의 주인공 들입니다. 오늘은 그 중 ESX와 Hyper-V에 대해서만 언급하려고 합니다. 그렇다면 어느 회사의 어떤 기술을 사용하는 것이 훨씬 효과적일까요? TCO, Feature 등 다양한 각도에서 이유를 찾아볼 수 있겠지만 저는 순수하게 아키텍처 측면으로 살펴보는 것임을 다시한 번 강조합니다.
주로 2가지의 내용이 주로 많이 언급됩니다.
1. 하이퍼바이저의 아키텍처 구현 방식
- 우리 회사의 방식이 더 선진화된 방식이고, 사이즈가 작고 가볍다
2. 하드웨어 지원 방식 vs 소프트웨어 방식, 내가 더 빠르다
첫번째 내용을 먼저 살펴볼까요?
1. 하이퍼바이저의 아키텍처 구현 방식
1) VMWare ESX
2) 마이크로소프트 Hyper-V
VMWare의 ESX에서는 VMKernel이 핵심적인 역할을 하는데, 하드웨어를 지원하기 위한
Device Driver들과 함께 번들링 되어 있습니다. 약 200,000 라인 정도의 코드로 개발되었고
VMWare Console OS가 바로 그 윗단을 구성하고 있고, VMKernel, http, Virtual Center Service
등을 포함한 관리 업무를 수행하는데, 가상 머신의 업무들을 지원하는 역할을 VMKernel이 대부분 처리합니다.
(약 32M Byte)
마이크로소프트의 Hyper-V(Viridian)은 조금 다르게 만들어졌는데, Console OS의 역할을 Parent Partion이 수행합니다.
하이퍼바이저의 크기가 훨씬 더 작게 만들어져 있고 실제로 약 800K Byte 밖에 되지 않습니다.
VMWare에 비해 훨씬 더 크기가 작기에 오류 코드가 포함될 확률이 작고, 큰 특징중의 하나가 Device Driver가
하이퍼바이저가 아닌 Parent Partition에 올라가 있다는 것입니다.
하드웨어 드라이버에 문제가 생겼을 시 VMWare 아키텍처는 전체 가상화에 문제가 발생하지만 Hyper-V
아키텍처에서는 문제가 있는 드라이버를 사용하는 가상머신에만 문제가 발생하기에 위험요인이 더 적습니다.
두번째 내용을 살펴보겠습니다. 인텔에서는 Intel-VT, AMD V x64 비트 칩을 개발했죠.
마이크로소프트는 바로 이 하드웨어, 즉 칩이 지원하는 가상화 아키텍처를 이용하고 VMWare는 "바이너리 변환",
즉 가상머신이 발생시킨 명령어를 하이퍼바이저가 받아서 재작업을 하여 가상환경에서 잘 구동되도록 변환하는 방식을 사용합니다.
이런 소프트웨어 변환 방식을 사용하면 "가상화환경에서 구동되도록 수정되지 않는 게스트 OS"가 가상머신에서 잘 동작하도록
할 수 있게되기에 실제로 큰 의미가 있습니다. Xen에서도 이런 유사한 형태를 구현하기 위해 Paravirtualization을 구현했습니다.
Paravirtualization은 하이퍼바이저가 표준 게스트 OS의 명령어를 처리하도록 하는 방식이 아니고, 게스트 OS가 가상 환경에서
잘 동작하도록 변경 (Paravirtualized)되는 방식을 의미합니다. 결국 게스트 OS의 커널을 변경할 필요하여 Xen 기반의 하이퍼바이저에서는
Linux 기반의 OS만 동작가능할 수 밖에 없었던 이유이기도 합니다. (즉, 다른 운영체제 커널의 코드에 접근할 수 없었기 때문이죠)
그런데, 앞에 언급한 Intel-VT, AMD-V 칩의 등장으로 큰 변화가 이루어집니다. 이제는 하이퍼바이저가 "가상머신이 발생한 명령어를
소프트웨어적으로 에뮬레이션 하지 않고 최적화" 해주는 역할을 하게 된거죠.
이제는 VMWare는 기존과 동일하게 "바이너리 변환"하는 방식을 취하고 마이크로소프트와 Xen은 하드웨어,
즉 칩이 지원하는 하이퍼바이저 방식을 취하게 된 것입니다. VMWare는 소프트웨어 방식이 빠르다고 주장하고,
마이크로소프트와 Xen은 하드웨어 지원 방식이 빠르다고 주장을 하고 있는 것이죠.
해당 상황에 따라 벤치마크 결과가 조금씩 다르지만, 거의 차이가 없다는 것이 시장의 설득력을 얻고 있습니다.
하지만, 여기서 VMWare는 Intel-VT, AMD V x64비트 칩을 장착한 하드웨어가 없어도 가상화를 구현할 수 있다는 장점을 갖게 되는 것은 분명하죠.
위와 같은 장,단점이 아키텍처 상에 내재하고 있음을 이해할 필요가 있다고 생각합니다.