개요
가상화 기술은 크게 하이퍼바이저(HyperVisor) 와 컨테이너(Container) 로 나뉩니다. 두 차이 및 특징을 이 글을 통해 서술합니다.
HyperVisor
하이퍼바이저는 메모리 등의 컴퓨터의 물리적 자원을 가상 머신에 재할당하는 소프트웨어 입니다. 호스트 OS가 사용하는 하드웨어 자원에 직접 접근하므로 I/O 및 프로세스 스케쥴러 등의 기능을 가진 운영체제 수준의 소프트웨어 입니다.
하이퍼바이저는 Type 1 과 Type 2 으로 구분될 수 있습니다.
Type 1 (1형, Bare-Metal)
하드웨어 자원을 직접 사용합니다. 하드웨어 자원을 직접 컨트롤하고 이를 상위 VM에 할당합니다. 호스트 OS가 필요없습니다. 하이퍼바이저 그 자체가 운영체제 역할을 대신합니다.
- Type 1 하이퍼바이저 : VMware ESXi, Microsoft Hyper-V
Type 2 (2형, Hosted)
호스트 OS 위에서 동작합니다. 하나의 소프트웨어 형태로 Host OS으로부터 하드웨어 자원 할당 등을 요청합니다. 직접적으로 하드웨어 자원에 접근하지 않습니다. 간접적으로 하드웨어 자원을 접근, 활용하기 때문에 성능이 낮습니다.
- Type 2 하이퍼바이저 : VMware WorkStation Pro
Container
컨테이너는 호스트 OS 위에서 동작하는 가상화, 격리 소프트웨어입니다. 하드웨어 물리적 자원을 호스트 OS를 통해 사용합니다. 컨테이너 위에 올리는 것은 자체적인 운영체제를 가진 가상머신(VM)이 아닌 어플리케이션을 실행하기 위한 런타임과 최소한의 라이브러리만을 담고 있습니다. 하이퍼바이저에 비해 매우 가볍습니다.
운영체제 또한 컨테이너 위에 올라갈 수 있습니다. 하이퍼바이저와 무슨 차이일까요? 컨테이너 이미지로 사용되는 운영체제는 커널과 드라이버 등을 제외한 경량화한 이미지입니다. Ubuntu 22.04의 공식 ISO 이미지 크기는 약 3.6 GB이고 Ubuntu 22.04의 Docker 이미지 크기는 약 77 MB입니다.
- 컨테이너 : Docker
HyperVisor vs Container
하이퍼바이저 1형, 2형, 컨테이너 비교입니다. 하이퍼바이저는 GuestOS 를 가진 가상머신이 위에 존재하고 컨테이너는 어플리케이션이 실행되기 위한 최소한의 런타임, 라이브러리가 격리되어 위에 존재합니다.
그럼 컨테이너가 항상 좋은 걸까요?
아니요. 경우에 따라 다릅니다. 물리적 컴퓨터가 한 대일때는 컨테이너의 성능이 압도적으로 보입니다. 물리적 컴퓨터가 여러 대일 경우 또한 컨테이너가 좋을까요?
데이터센터 내 수백 대의 독립적인 물리적 컴퓨팅 자원을 하이퍼바이저를 통해 하나로 묶어 관리할 수 있습니다. 이러한 기술을 Datacenter Virtualization, Software Defined Datacenter (SDDC)라고 부릅니다.
AWS EC2 서비스를 고객이 사용하기 위해서는 위 기술이 필요합니다. 고객이 요청하는 컴퓨팅 자원을 요구 사항에 맞게, AWS의 유휴 자원을 유연하게 할당해야 하니깐요.
HyperVisor Type 2는 산업용이 아닌 개인용으로 적합합니다.
물리적 컴퓨팅 자원이 하나일 경우 하이퍼바이저보다는 컨테이너가 좋은 선택입니다. 그러나 맥북을 쓰고 있지만 프로그램 호환성 문제로 잠시 윈도우를 사용하고 싶으면 어떻게 해야 할까요? 컨테이너를 만들어서 사용할 수 있을까요? 가능합니다. GUI를 지원하는 이미지를 사용하면 됩니다.
그러나, HyperVisor Type 2인 WorkStation, Parallels를 이용하면 성능은 별로일 수 있지만 맥에서 윈도우를 가장 쉽게 쓸 수 있다는 것을 우리는 알고 있습니다. 하이퍼바이저 2형 소프트웨어는 개인용으로 사용하기에 적합합니다. 저 또한 공부를 위해 WorkStation에 ESXi 를 깔아서 실습을 공부하고 있습니다.
참고 자료
'소프트웨어 & 클라우드' 카테고리의 다른 글
[Windows] windows 11 Hyper-V 비활성화 및 활성화 하기 (0) | 2024.10.26 |
---|---|
[Packet Tracer] 패킷 트레이서 다운로드 방법 (3) | 2024.10.20 |
[Packet Tracer] 패킷 트레이서 404 로그인 오류 해결 방법 (5) | 2024.10.13 |
[OpenVoice] MyShellAI OpenVoice Linux (Ubuntu)에 설치, 활용하기 (2) | 2024.09.29 |
[Windows] WSL openSSH 사용하여 ssh 원격 접속 허용하기 (0) | 2024.09.28 |