하이퍼바이저란?
하이퍼바이저는 물리 서버 위에서 여러 가상 서버 인스턴스(VSI)를 만들어내는 소프트웨어이다. 하이퍼바이저(Hypervisor)의 어원을 살펴보면 "하이퍼-" 는 "초월적인" 또는 "더 높은 단계의" 라는 의미를 가지고 있어 하이퍼바이저가 물리적인 하드웨어 위에서 가상 시스템을 관리하는 소프트웨어임을 나타내고 "바이저(Visor)" 는 "관리자" 또는 "감시자"라는 뜻으로, 하이퍼바이저가 물리적 자원을 감독하고 가상 머신이 이 자원을 잘 활용하도록 관리하는 역할을 한다는 것을 알 수 있다. 즉 하이퍼바이저는 물리적 자원을 초월해 여러 가상 머신을 관리하는 상위 관리자라는 의미를 내포하고 있다.
컴퓨터 부팅될 때 물리적 하드웨어에서 시작해 운영체제가 메모리에 올라가고 프로그램들이 실행되는데 하이퍼바이저(Hypervisor) 는 이러한 부팅 과정을 가상 환경에서 가능하게 해주며, 가상 머신(VM)들이 프로그램을 실행할 수 있도록 셋팅해준다.
하이퍼바이저는 크게 두가지 종류로 나뉘어진다. Type 1 하이퍼바이저는 서버의 하드웨어 위에서 직접 실행되며, 운영체제 없이 가상화를 구현한다. Bare Metal 하이퍼바이저라고도 불리며 오버헤드가 없어 고성능과 안정성을 자랑하기 때문에 실제 프로덕션 레벨에서 많이 사용되는 타입이다.
예시: VMware ESXi, Microsoft Hyper-V, KVM, Xen
Type 2 하이퍼바이저는 기존의 운영체제 위에서 실행된다. 아무래도 또하나의 운영체제가 있어 오버헤드가 있기 때문에 주로 개인 개발 환경이나 테스트 환경에서 사용된다.
예시: VMware Workstation, Oracle VirtualBox, Parallels Desktop
구분 | Type 1 Hypervisor | Type 2 Hypervisor |
위치 | 하드웨어 위에서 직접 실행된다 | 호스트 운영체제 위에서 실행된다. |
성능 | 오버헤드 없어 고성능 | 운영체제 하나 더끼고있어 성능 낮음 |
주요 환경 | 프로덕션 용, 대규모 인프라에서 사용 | 개인 개발, 테스트 환경 |
설치 난이도 | 설치가 어렵다 | 설치가 쉽다 |
Docker 와 VM
개발을 할 때 필요 환경을 셋팅하기 위해 postgreSQL, Redis, Node 등등을 도커로 셋팅하여 프로젝트를 진행한 기억이 있어 그럼 도커도 가상화 머신인가? 라는 의문점이 들었다. 결론부터 말하자면 도커는 하이퍼바이저처럼 가상화기술인건 맞지만 구조가 다르다.
가장 큰 차이로 하이퍼바이저는 물리서버를 추상화한 뒤 자원을 나누어 사용하지만 컨테이너(도커 구동 방식)는 OS를 추상화해 자원을 나누어 사용한다. 즉 하이퍼바이저는 물리자원을 나눠써서 각각 vm에 운영체제가 올라가지만 도커는 운영체제 자체를 추상화해서 나누어 쓰고 있기 때문에 운영체제가 추가적으로 또 올라가지 않아 각각의 인스턴스가 훨씬 가벼워진다.
이러한 운영체제를 추상화하고 분배하는 핵심적인 역할을 도커엔진이 맡게 되는데 도커엔진에는 cgoup과 namespaces가 있어 각 컨테이너간 격리된 환경을 유지하게 해준다. (도커 백그라운드 포트에서 도는걸 끌때 pid 자주 찾았는데 이때 사용하는 process id가 바로 namespacs 들 중 하나이다, 이외에는 네트워크 네임스페이스, 파일시스템을 위한 mount 네임스페이스 등이 있다.)
'☁️ 인프라 & 클라우드' 카테고리의 다른 글
NAT Gateway 가 단방향임에도 외부 API 요청응답을 가져올 수 있는 이유 (0) | 2024.11.19 |
---|---|
Terraform 테스트 코드 작성하기 (0) | 2024.11.19 |
왜 Cloudflare 를 쓰는걸까? (feat. untangle) (0) | 2024.11.17 |
오픈소스 클라우드 인프라 관리 플랫폼 OpenStack 알아보기 (0) | 2024.11.08 |
ESXi와 vCenter를 활용한 온프레미스 인프라 구축 (0) | 2024.11.08 |