오늘날, 이제는 당연시 되고 있는 클라우드 컴퓨팅. 이런 클라우드를 구성하는 요소 중에서 가상화(Virtualization) 기능은 빠질 수 없는 핵심 요소 중에 하나인데요.
가상화를 구성하기 위해서는 하이퍼바이저(Hypervisor)라는 프로그램이 필요하며, 서버단의 가상화는 자원의 효율성 측면에서 기본이 되어가고 있습니다.
Xen, KVM, HVM, PV 등 들어는 봤지만 머리속에 남아있지 않아 정리할 겸 간단한 개념들을 적어보려고 합니다.
Xen
Xen은 오픈소스 하이퍼바이저 중 하나로 Metal 상에 동작하는 가상화 기술, 하이퍼바이저이다.
*Domain : 호스트 가상 머신
*PV : ParaVirtualization (반가상화)
*HVM : Hardware Virtual Machine
*Emulation : 하드웨어 리소스의 동작을 소프트웨어로 대신하는 가상화 방식
PV
Xen PV는 ParaVirtualization (반가상화) domain 이다. 이는 OS가 Xen 하에서 동작하도록 수정되었다는 것을 의미, 하드웨어 에뮬레이션을 할 필요가 없다.
-> Guest OS가 하이퍼바이저를 통해 Hardware를 제어하고 가벼워서 퍼포먼스에 좋다, 하지만 Guest OS 수정이 필요
(가장 효율적인 방법으로 성능면에서도 좋다)
HVM
Domain이 하드웨어로 에뮬레이션 되며 OS가 수정되지 않으며 하드웨어에 의해 에뮬레이트 된다.
-> Guest OS와 완전히 독립되고 OS 수정없이 사용 가능, 하지만 hardware 자체가 전가상화 (Fully virtualization)지원 해야 하기 때문에 퍼포먼스가 PV보다는 떨어진다고 알려진다.
(성능상 중요한 하드웨어 부분은 ParaVirtualized로 동작시킨다)
KVM
KVM은 Xen이 아니며 리눅스 커널에 내장된 또 다른 가상화 플랫폼. 게스트 관점에서 보면 Xen HVM과 닮았다
(게스트는 fully virtualized로 동작하며 디스크나 네트워크를 위해 특정 드라이버를 사용해 부분적으로 paravirtualized로 동작)
*Xen HVM과 KVM (Linux)은 하드웨어 가상화 기술 (Intel VT-x, AMD-v)에 도움을 받지만 Xen PV는 PV 지원 없이는 운영체제를 동작시킬 수 없다. (Xen PV에서 윈도우즈를 동작시킬 수 없다)
즉, Xen의 "하이퍼바이저 위에서 모두 놀아라." 라던지, KVM의 "커널이 곧 하이퍼바이저이다." 라던지 현 시점에는 더 이상 의미가 없어졌다. 돈이 좀 들더라도 높은 완성도에 기술 지원을 바라면 VMWare가 정답이고, MS빠라면 하이퍼-V가 정답이다. 무료로 필요에 따라 소스 수정도 할 생각이면 Xen이나 KVM 어느 것도 괜찮다. 그냥 익숙한 것을 선택하면 된다. 지금 사용 중인 하이퍼바이저가 다른 하이퍼바이저보다 성능이 떨어진다면 하이퍼바이저를 의심 할 것이 아니라 튜닝이 잘못 된 것이므로 담당 엔지니어의 능력을 의심해 보라.
이상입니다!
References
https://serverfault.com/questions/222010/difference-between-xen-pv-xen-kvm-and-hvm
https://blog.naver.com/parkjy76/220650265785
https://blog.naver.com/complusblog/220990379931
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=parkjy76&logNo=220650261922