하이퍼 바이저란?
가상머신 하이퍼바이저(Hypervisor)는 컴퓨터 하드웨어 위에서 다수의 운영체제를 동시에 실행할 수 있게 해주는 소프트웨어이다. 하이퍼바이저는 기본적으로 물리적 호스트 시스템에서 실행되며, 각 가상머신(VM)은 독립적으로 운영체제를 실행할 수 있다. 하이퍼바이저는 두 가지 주요 유형으로 나뉜다
타입 1(베어 메탈)과 타입 2(호스트형) 하이퍼바이저이다.
타입 1 하이퍼바이저 (베어 메탈)
- 정의: 직접 하드웨어에서 실행되며, 운영체제 없이 바로 물리적 서버의 리소스를 관리.
- 예시: VMware ESXi, Microsoft Hyper-V, Xen
- 특징: 더 나은 성능과 보안, 낮은 오버헤드, 더 높은 안정성
타입 2 하이퍼바이저 (호스트형)
- 정의: 기존 운영체제 위에서 실행되는 하이퍼바이저로, 운영체제의 애플리케이션처럼 동작.
- 예시: VMware Workstation, Oracle VM VirtualBox, Parallels Desktop
- 특징: 설치와 관리가 쉬우며, 데스크톱 환경에서 주로 사용된다. 호스트 운영체제의 자원을 공유하므로 성능이 다소 낮을 수 있다.
주요 기능
1. 자원 할당: CPU, 메모리, 디스크와 같은 하드웨어 자원을 각 가상 머신에 할당
2. 격리: 가상 머신 간의 간섭을 최소화하고 보안을 강화.
3. 스냅샷 및 백업: 가상 머신의 상태를 저장하고 필요 시 복원할 수 있는 기능을 제공.
4. 이동성: 가상 머신을 물리적 서버 간에 이동할 수 있게 하여 유연성을 제공.
하이퍼바이저의 장점
- 비용 절감: 물리적 하드웨어의 효율적인 사용을 통해 비용을 절감합
- 유연성: 다양한 운영체제와 애플리케이션을 동일한 물리적 서버에서 실행할 수 있다
- 확장성: 필요에 따라 쉽게 리소스를 추가하거나 줄일 수 있다.
- 고가용성: 시스템 장애 시 가상 머신을 다른 서버로 쉽게 이전할 수 있어 다운타임을 최소화.
사용 사례
- 서버 통합: 여러 서버의 기능을 하나의 물리적 서버로 통합하여 관리 효율성을 높임
- 테스트 및 개발 환경: 다양한 운영체제와 소프트웨어를 테스트하는 환경을 신속하게 구축 가능
- 클라우드 컴퓨팅: 클라우드 서비스 제공업체가 다양한 가상 머신을 운영하고 관리하는 데 사용
하이퍼바이저는 현대 데이터센터와 클라우드 컴퓨팅의 핵심 구성 요소로, IT 인프라의 효율성과 유연성을 크게 향상시키는 역할을 한다.
그렇다면 이러한 하이퍼 바이저의 작동원리는 어떻게 되는 것인가?
하이퍼 바이저의 작동원리
하이버 바이저의 작동원리는 다음과 같다.
1. 하드웨어 추상화
하이퍼바이저는 물리적 하드웨어 자원을 추상화하여 가상화된 자원으로 만든다. 이는 CPU, 메모리, 디스크, 네트워크 인터페이스 등을 포함한다. 하이퍼바이저는 가상 머신이 이러한 자원을 직접 접근하는 대신 가상화된 자원을 사용하게 하여 여러 VM이 동일한 물리적 자원을 공유할 수 있게 한다.
2. 가상 머신 모니터(VMM)
하이퍼바이저는 각 VM마다 가상 머신 모니터(VMM)를 실행한다. VMM은 VM과 하이퍼바이저 간의 인터페이스 역할을 하며, VM의 모든 명령과 요청을 가로채고 이를 하드웨어에 전달하거나 처리한다. 이를 통해 VM은 독립적으로 실행되며, 다른 VM의 존재를 알지 못한다.
3. 자원 할당 및 스케줄링
하이퍼바이저는 물리적 자원을 여러 VM 간에 동적으로 할당하고 관리한다. 이는 다음과 같은 방법으로 이루어진다:
- CPU 스케줄링: 하이퍼바이저는 물리적 CPU를 여러 VM 간에 시분할 방식으로 할당한다. 각 VM은 자신이 전체 CPU를 사용하는 것처럼 느끼지만, 실제로는 시간 단위로 CPU를 공유한다.
- 메모리 관리: 하이퍼바이저는 물리적 메모리를 여러 VM 간에 나누어 할당하고, 필요에 따라 동적으로 조정한다.
- 디스크 및 네트워크 자원 관리: 하이퍼바이저는 각 VM에 가상 디스크와 가상 네트워크 인터페이스를 제공하며, 물리적 디스크 및 네트워크 자원을 효율적으로 분배한다.
4. 가상화 기법
하이퍼바이저는 다양한 가상화 기법을 사용하여 VM이 물리적 하드웨어를 사용하는 것처럼 느끼게 한다. 주요 가상화 기법은 다음과 같다:
- 전체 가상화(Full Virtualization): 하드웨어를 완전히 가상화하여 VM이 실제 하드웨어를 사용하는 것처럼 동작하게 한다. 이 기법은 하드웨어 지원이 필요할 수 있다.
- 부분 가상화(Partial Virtualization): 하드웨어의 일부만 가상화하여 VM이 하드웨어의 일부에 직접 접근할 수 있게 한다.
- 패러버추얼라이제이션(Paravirtualization): VM이 가상화된 환경에서 효율적으로 동작하도록 운영체제를 수정하여, 하이퍼바이저와 협력하게 한다.
5. I/O 가상화
하이퍼바이저는 I/O(입출력) 작업을 가상화하여, VM이 디스크, 네트워크, USB 등 다양한 I/O 장치를 사용할 수 있게 한다. I/O 가상화는 성능 저하를 최소화하기 위해 효율적으로 처리된다.
6. 격리 및 보안
하이퍼바이저는 VM 간의 격리를 보장하여 한 VM의 오류나 보안 침해가 다른 VM에 영향을 미치지 않도록 한다. 이를 통해 높은 수준의 보안을 유지한다.
7. 관리 및 모니터링
하이퍼바이저는 VM의 상태를 모니터링하고 관리하는 도구를 제공한다. 이는 VM의 생성, 삭제, 복제, 스냅샷 생성 등을 포함한다. 또한, 하이퍼바이저는 자원 사용률을 모니터링하여 효율적인 자원 관리를 지원한다.
이러한 원리들을 통해 하이퍼바이저는 물리적 서버에서 다수의 가상 머신을 효율적으로 실행하고 관리할 수 있게 하며, 현대 데이터센터와 클라우드 컴퓨팅 환경의 핵심 기술로 자리잡고 있다.
이 중에서도 가장 중요한 부분은 하드웨어 가상화라고 생각한다.
하드웨어 가상화 과정
하드웨어 가상화 과정은 다음과 같다.
1. 가상화 계층 생성
하이퍼바이저는 물리적 하드웨어와 가상 머신 사이에 가상화 계층을 만든다. 이 계층은 하드웨어 자원의 직접 접근을 차단하고, 대신 가상화된 자원에 대한 접근을 허용한다.
2. 가상 CPU(VCPU)
하이퍼바이저는 물리적 CPU를 여러 가상 CPU로 분할하여 각 VM에 할당한다. 이를 통해 각 VM은 자신이 독립적인 CPU를 사용하는 것처럼 동작한다. 하이퍼바이저는 CPU 스케줄링을 통해 물리적 CPU의 사용 시간을 각 VCPU에 할당한다.
3. 가상 메모리
하이퍼바이저는 물리적 메모리를 가상 메모리로 추상화하여 VM에 할당한다. 이는 메모리 매핑 기술을 사용하여 구현되며, 각 VM은 자신이 독립적인 메모리를 사용하는 것처럼 동작한다. 하이퍼바이저는 물리적 메모리의 할당과 해제를 관리하여, 효율적인 메모리 사용을 보장한다.
4. 가상 디스크
하이퍼바이저는 물리적 디스크를 가상 디스크로 추상화하여 VM에 제공한다. 가상 디스크는 실제 물리적 디스크의 일부 또는 전체를 나타내며, 각 VM은 가상 디스크를 통해 데이터를 저장하고 읽을 수 있다. 하이퍼바이저는 디스크 입출력(I/O) 요청을 가로채고 이를 물리적 디스크로 전달한다.
5. 가상 네트워크 인터페이스
하이퍼바이저는 가상 네트워크 인터페이스를 통해 VM이 네트워크에 연결될 수 있게 한다. 가상 네트워크 인터페이스는 물리적 네트워크 인터페이스를 추상화한 것으로, VM 간의 네트워크 통신과 외부 네트워크와의 연결을 지원한다. 하이퍼바이저는 네트워크 패킷을 가로채고 이를 적절한 VM이나 물리적 네트워크로 전달한다.
6. I/O 가상화
하이퍼바이저는 다양한 I/O 장치를 가상화하여 VM이 사용할 수 있게 한다. 이는 가상화된 드라이버와 장치 모델을 사용하여 구현된다. 예를 들어, 가상 네트워크 카드, 가상 USB 장치 등이 포함된다. 하이퍼바이저는 I/O 요청을 처리하고 이를 실제 물리적 장치로 전달한다.
7. 하드웨어 지원 가상화
현대의 CPU와 칩셋은 하드웨어 지원 가상화 기술(Intel VT-x, AMD-V 등)을 제공하여 하이퍼바이저가 보다 효율적으로 하드웨어 자원을 가상화할 수 있게 한다. 이러한 기술은 하이퍼바이저가 CPU 명령을 직접 실행하고, 가상 메모리와 I/O를 보다 효율적으로 관리할 수 있도록 지원한다.
8. 하이퍼콜(Hypercall)
하이퍼바이저는 하이퍼콜(Hypercall)을 통해 VM과 상호작용한다. 하이퍼콜은 VM이 하이퍼바이저에 특정 작업을 요청할 수 있게 하는 인터페이스이다. 이는 시스템 호출과 유사하지만, 하이퍼바이저와의 직접적인 상호작용을 위해 사용된다.
이와 같은 방식으로 하이퍼바이저는 물리적 하드웨어를 추상화하여, 각 VM이 독립적인 자원을 사용하는 것처럼 느끼게 만들고, 여러 VM이 동시에 동일한 물리적 하드웨어 자원을 효율적으로 공유할 수 있게 한다.
간단히 말해보자면 하드웨어 가상화란
실제 물리적인 PC를 가상화하여 게스트OS가 인식하기에 물리적 하드웨어로 인식하게끔 해주는 기술인것이다.
'CS' 카테고리의 다른 글
컴파일러 VS 인터프리터 (0) | 2024.11.27 |
---|---|
RISC vs CISC: 컴퓨터 아키텍처의 두 가지 접근법 (0) | 2024.08.23 |
정적 배열(Static Arrays)과 동적 배열(Dynamic Arrays) (0) | 2024.07.12 |
도커와 VM의 차이 (0) | 2024.07.07 |
웹어셈블리란? (1) | 2024.05.22 |