우리 회사에서는 가상화 환경으로 VMWare 를 사용해오다가 몇년 전부터 VirtualBox 를 사용하고 있습니다.
최근 내부적으로 Hyper-V 를 사용 요구가 증가하고 있어, 각 Hypervisor 의 장단점을 따져보고 적절한 가상화 방식을 선택하는데 도움을 주고자 이 글을 작성하게 되었습니다.
Hyper-V 와 VirtualBox 에 대한 속도 비교 등 객관적인 자료와 정량적 비교를 한 글들은 많이 나와 있습니다.
이 글은 제가 아는 지식을 바탕으로 정성적인 부분들에 촛점을 맞출 예정입니다.
가상화에 친숙하지 않은 많은 분들이 Hyper-V 에 대해 오해를 하시는 부분들이 꽤 있을듯 보여서 이부분도 집중적으로 이야기 해보겠습니다.
결론을 맨 앞에 적어놓았으니 결론부터 읽어 보시고, 그 이유에 대해 차근차근 뒷부분을 읽어보시면 좋을것 같습니다.
Hyper-V vs. VirtualBox #
바쁘신 분들을 위해 결론부터 적습니다.
속도가 중요하면 Hyper-V #
속도 면에서 Type 1 방식인 Hyper-V 가 Type 2 인 VirtualBox 에 비해 월등히 우월합니다.
개발자들은 속도가 중요하기 때문에 Hyper-V 를 쓰시는게 좋습니다.
다양한 하드웨어에서 사용하려면 VirtualBox #
여러 종류의 하드웨어에서 VM 을 공유하고 싶다면 Type 2 방식인 VirtualBox 를 사용하는게 유리합니다.
운영서버 VM 을 복사하여 내 장비에서 돌린다면 Hyper-V 에서는 실패할 수 있습니다.
Hyper-V 와 VirtualBox 동시 사용 #
일단 이론적으로 가능하지만 현실적이지 않습니다.
동시에 사용할 경우 Hyper-V 로 1차 가상화가 된 상태에서 VirtualBox 로 2차 가상화가 됩니다. VirtualBox 만 돌릴 때에 비해 엄청나게 느려져 현실적으로 쓰기 어려울 겁니다.
동시에 사용하려면 전재조건도 있습니다.
CPU 코어 격리 기능이 켜져 있으면 동시 사용이 불가능합니다. CPU 코어 격리 기능이 Off 상태여야 동시 사용이 가능합니다.
결론은 한가지만 사용하시는걸 적극 X 3 권고 드립니다.
가상화에 대한 이해 #
가상화 환경을 만들어주는 플랫폼을 우리는 Hypervisor 라 부릅니다.
Hyper-V, KVM, VirtualBox, VMWare 등이 Hypervisor 입니다.
Hypervisor 를 분류하는 대표적인 기준은 다음과 같습니다.
- CPU 명령어 가상화 방식에 따른 분류 : 전가상화, 반가상화
- 가상화 레이어에 따른 분류 : Type 1, Type 2
전가상화 vs. 반가상화 #
예전에는 꽤 중요한 구분이었으나 최근에는 전가상화와 반가상화의 구분이 애매모호하기도 하고 중요성도 크게 떨어집니다.
굳이 구분할 필요가 없어, 이 글에서는 거의 다루지 않습니다. 그냥 무시하셔도 좋습니다.
그럼에도 알고 싶다면…
Hypervisor 가 CPU 명령셋 전체를 가상화 한 경우를 전가상화라고 합니다.
CPU 명령셋의 일부만 가상화 하는 경우를 반가상화라고 합니다.
끝.
Type 1 vs. Type 2 #
속도와 기종간 호환성을 구분하는 것은 Type 1
과 Type 2
구분입니다.
다음 그림은 Type 1
과 Type 2
의 차이를 보여줍니다.
Type 1
하이퍼바이저는 H/W 에서 직접 운영됩니다. 거의 BIOS 와 같은 레벨이며, 실행되는데 OS 가 필요없습니다.
H/W 에 종속적이므로 상대적으로 속도가 빠른 대신 CPU 명령셋이 다르면 동작하지 않습니다.
예를 들어, Intel x86 CPU 와 AMD x86 CPU 도 일치하지 않는 경우가 발생합니다.
대표적인 Type 1 하이퍼바이저에는 Hyper-V, KVM, Xen 등이 있습니다.
Type 2
하이퍼바이저는 Host OS 위에서 일반 Application 처럼 실행됩니다.
어떤 OS 라도 동일한 Type 2 하이퍼바이저라면 VM 을 동일하게 실행할 수 있습니다.
구조적 특성 때문에 VM 의 호환성은 좋으나 Type 1 에 비해 상대적으로 (매우?) 속도가 느린것이 흠입니다.
대표적인 Type 2 하이퍼바이저는 VMWare 와 VirtualBox 가 있습니다.
Type 1 에 대한 이해 #
Type 2 는 VMWare 나 VirtaulBox 등을 통해 많은 분들이 실제로 경험을 해봤을 것으로 생각합니다.
굳이 설명을 하지 않아도…
여러분들이 아는 가상머신… 맞습니다.
Hyper-V 나 VirtualBox 나 거기서 거기 ? #
Hyper-V 나 VirtualBox 나 다 가상머신 아닌가요? 거기서 거기죠.
다 가상머신인 것은 맞습니다.
하지만 동일하거나 비슷하지는 않습니다.
Hyper-V (Type 1) 과 VirtualBox (Type 2) 는 아키텍쳐 뿐만 아니라 실제 사용 측면에서도 큰 차이가 있습니다.
우리는 이미 Type 2 는 꽤 익숙한 편이니 Type 1 을 심도있게 이해 한다면 두 방식의 차이를 이해할 수 있으리라 생각됩니다.
Hyper-V 가 Type 1 이라고? #
“Type 1 Hypervisor 는 OS 보다 저수준에 위치한다고 하는데, Hyper-V 는 Windows 에서 돌아 갑니다. 어떻게 Hyper-V 가 Type 1 입니까?”
Hyper-V 에 대해 가장 큰 오해는 VirtualBox 와 같은 Type 2 하이퍼바이저로 착각하는 것 입니다.
Type 1 하이퍼바이저는 OS 없이, H/W 에서 직접 실행됩니다.
Hyper-V 는 Windows 어플리케이션이나 서비스가 아닙니다.
단지 설치의 편의를 위해 Windows 의 UI 를 이용하는것 뿐이죠.
노트북의 BIOS 업데이트를 상상해 보세요.
BIOS 는 OS 가 실행되기 전에 H/W 에서 OS 를 실행해주는 프로그램입니다. OS 가 필요없는 H/W 전용 프로그램입니다. 그런데 사용자 편이를 위해 업데이트는 Windows 나 DOS 에서 실행합니다.
Hyper-V 도 이와 동일하다고 보시면 됩니다.
다음 그림은 Hyper-V 설치 화면입니다.
Hyper-V
가 Hyper-V 관리 도구
와 Hyper-V 플랫폼
으로 구성된 것을 확인하실 수 있습니다.
여러분들이 Hyper-V 가 Windows 어플리케이션이라고 착각하게 만드는 것이 Hyper-V 관리 도구
입니다. 이것은 확실히 Windows 어플리케이션 입니다.
진짜 Hyper-V
는 Hyper-V 플랫폼
입니다.
여러분이 Hyper-V 플랫폼
을 설치하는 순간, Hyper-V
가 BIOS 처럼 H/W 에 직접 설치 됩니다.
Hyper-V
는 더 이상 여러분의 Windows 에 있지 않습니다.
Hyper-V
는 여러분의 장비와 지금 사용하고 있는 Windows 사이에 존재하게 됩니다.
아뿔싸! 여러분이 모르는 사이에 지금 사용하고 있는 Windows 가 Hyper-V
의 VM 중 하나가 되었습니다.
농담 하냐고요? 아니요. 진담 입니다.
컴퓨터가 켜질 때마다 무조건 Hyper-V 가 먼저 실행되고, 켜져있는 동안 항상 Hyper-V 가 실행되고 있을겁니다.
내가 만든 Hyper-V VM 은 어디에? #
“내가 쓰고 있는 Windows 가 VM 이라고요? 내가 만든 다른 Windows 와 Ubuntu VM 들도 여러개 돌고 있는데…”.
여러분들이 만든 VM 은 어디에 있죠?
그 VM 들은 논리적으로 현재 사용하고 있는 Windows 와는 완전히 다른 장비로 실행됩니다.
Hyper-V 관리자
에 가셔서 다른 VM 으로 접속
해 보세요.
실행
이 아니라 접속
입니다. Hyper-V 의 VM 들은 다른 장비이기 때문에 그 VM 에는 원격접속
해야 사용할 수 있는 것이죠.
Type 2 인 VirtualBox 와 비교해 볼까요?
VirtualBox VM 은 실행
합니다.
Host OS 인 여러분의 Windows 에서 Guest OS 인 Ubuntu VM 을 실행할 수 있죠.
Hyper-V 에는 Host OS 가 없습니다. 모두 Guest OS 뿐이죠.
심지어 여러분이 지금 사용하는 Windows 도 Guest OS 의 하나일 뿐입니다.
KVM. 또 다른 Type 1 Hypervisor #
Linux 계열에는 KVM 이라는 Type 1 Hypervisor 가 있습니다.
이 Hypervisor 는 Linux 커널에 기생하는 형태로 작동합니다.
Linux 커널을 이용하는 것이 아니라 H/W 와 Linux 커널 사이 위치에 설치가 되어 작동하는 방식입니다.
Hyper-V 와는 다른듯 같은 종류라고 할 수 있습니다.
당연히 KVM 도 설치시 Linux OS 를 사용합니다. 마치 Hyper-V 가 Windows 를 사용하듯이…
Hyper-V 와 VirtualBox 를 같이 사용하면 안되는 이유 #
Hyper-V 를 설치하는 순간 Hyper-V 는 내 손을 떠납니다.
컴퓨터를 켜면 무조건 먼저 실행되고, 항상 실행되고 있습니다.
지금 사용하고 있는 장비에 있는 모든 것들이 Hyper-V VM 상에서 실행되고 있는 것이죠.
당신이 사용하고 있는 Windows 도 잘 느끼지 못하겠지만 조금 (어쩌면 많이) 느려졌습니다.
Hyper-V 를 제거하지 않는 한, 여러분은 VM 을 피할 수 있는 방법은 없습니다.
여러분의 Windows VM 을 Host OS 로 하는 VirtualBox Ubuntu VM 을 실행한다고 가정해 보죠.
다른 간섭 없이 VirtualBox VM 이 잘 실행되었다고 해도, 너무 느려서 쓸수 없을 겁니다.
그냥 돌려도 느린 VirtualBox VM 을 또 다른 VM 위에서 돌린다고요?
“상상만 해도 끔찍하네요.”