1680 단어
8 분
가상화
가상화
가상화는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어
- 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술
가상화 대상 시스템
- ABI 레벨 : Application 관점 가상화 (Ex. JVM)
- ISA 레벨 : 명령어 집합에 대한 가상화 (Ex. Vmware)
하이퍼바이저
하이퍼바이저는 가상화 소프트웨어
-
Type 1 Hypervisor
- 물리시스템 하드웨어에 직접 설치되어 실행되고 가상머신 관리
- 베어 메탈 하이퍼바이저라고도 함
- EX. Xen, KVM, Microsoft Hyper-V, VMWare ESX/ESXi
-
Type 2 Hypervisor
- 호스트머신 운영체제 위에서 애플리케이션처럼 설치되어 가상머신 관리
- Ex. VMWare Workstation, VirtualBox, QEMU, KVM
가상화 유형
- 전가상화 : 게스트 OS를 수정하지 않는 가상화
- 반가상화 : 게스트 OS를 수정하여 하이퍼바이저와 통신할 수 있는 API를 추가한 가상화
- 하이브리드 가상화 : I/O나 메모리 집약형 작업 등 제약이 있는 환경에 대해서 반가상화를 적용하여 성능을 개선하고자 제안
- 운영체제 레벨 가상화 : 컨테이너화. 일반적인 가상화와 달리 물리시스템에 설치된 운영체제를 모든 컨테이너가 공유하는 시스템
가상화 기술
- 폰노이만 구조의 컴퓨터는 CPU, Memory, I/O 장치로 구성
CPU 가상화
NOTE운영 체제는 CPU의 커널 모드에서 실행되며, 일반 사용자 프로그램은 유저 모드에서 실행된다.
- 커널 모드는 모든 CPU 명령 실행 가능
- 유저 모드는 일부 제한된 명령 실행 가능
소프트웨어 지원 전가상화
- 가상머신을 실행하는 Guest OS는 원래 커널 모드에서 실행되어야하지만, 가상화 환경에선 이를 실행할 수 없음
- 이에 유저 모드에서 Guest OS를 실행 후, 커널 명령이 실행될 때 예외를 발생시켜 하이퍼바이저가 이를 가로채서 처리
단점 - 일부 명령어는 예외를 발생하지 않음 - 따라서 이러한 명령을 수정하는 바이너리 트랜슬레이션이 필요한데, 이 과정에서 성능을 저하시킴
소프트웨어 지원 반가상화
하이퍼 콜은 가상 환경에서 Guest OS가 직접 하이퍼바이저와 통신하기 위한 특수한 호출
- Guest OS가 물리적 하드웨어를 직접 제어할 수 없기에 필요한 기능을 하이퍼바이저에게 요청
- 이를 시스템콜과 유사한 방식으로 하이퍼바이저에게 직접 명령을 전달하므로 하이퍼 콜이다
장점은 트랩보다 성능은 향상되지만 Guest OS가 지원하도록 수정해야함
- 이를 지원하는 방식이 반 가상화
하드웨어 지원 가상화
소프트웨어 가상화의 성능 문제 해결을 위해 Intel VT-x, AMD-V 같은 하드웨어 지원 가상화 지술 등장
이 기술은 CPU 내부에 하이퍼바이저 전용 실행 모드를 추가하여, Guest OS를 특권 모드에서 실행할 수 있도록 지원
- 하이퍼바이저가 직접 개입하지 않아도 CPU나 Guest OS 특권 명령을 처리할 수 있으므로 성능 향상
- 트랩과 바이너리 트랜슬레이션이 불필요해지며, 가상 오버헤드 감소
메모리 가상화
가상화 이전에도 컴퓨터 시스템은 가상 메모리를 사용하고 있다. 따라서 주소 변환 과정은 아래와 같음
- 비가상화 환경(일반 환경)
가상 주소 → 물리 주소
- 가상 주소(Virtual Address): 프로세스 또는 VM이 사용하는 주소
- 물리 주소(Physical Address): 실제 RAM에서 사용하는 주소
운영 체제는 **페이지 테이블(Page Table)**을 사용해 가상 주소를 물리 주소로 매핑
- 가상화 환경(하이퍼바이저 개입)
가상 주소 → 가상물리 주소 → 물리주소
- 가상화 환경에서는 가상머신 또한 하이퍼바이저 상에서 동작하는 프로세스이므로, 가상주소를 사용한다. 따라서 주소 변환에 한 단계가 추가
섀도우 페이지 테이블 (Shadow Page Table) 방식 메모리 가상화
- 하이퍼바이저가 게스트 OS의 페이지 테이블을 감시하고, 별도의 섀도우 페이지 테이블을 유지하며 주소 변환을 수행
- 단점: 오버헤드가 크다 (페이지 테이블 변경 시 하이퍼바이저가 개입)
하드웨어 지원 페이지 테이블 (EPT, NPT) 방식 메모리 가상화
- Intel VT-x: EPT (Extended Page Tables)
- AMD-V: NPT (Nested Page Tables)
- CPU가 2단계 주소 변환을 직접 처리하여 하이퍼바이저의 개입을 최소화 → 성능 향상
| 메모리 가상화 방식 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 섀도우 페이지 테이블 | 하이퍼바이저가 페이지 테이블을 관리 | 모든 OS 지원 가능 | 성능 저하 |
| EPT/NPT (하드웨어 지원) | CPU가 직접 2단계 주소 변환 | 성능 향상 | 하드웨어 지원 필요 |
I/O 가상화
-
소프트웨어적 I/O 가상화
- I/O 장치 에뮬레이션 : 하이퍼바이저가 가상 머신(VM)에 가짜(에뮬레이션된) I/O 장치를 제공하고, 실제 I/O 처리는 하이퍼바이저가 담당
- I/O 반가상화 : VM이 하이퍼바이저와 직접 통신하여 최적화된 I/O 드라이버를 사용. (예: VirtIO 방식)
- 직접 접근 I/O : VM이 특정 물리적 I/O 장치를 직접 제어할 수 있도록 하이퍼바이저가 장치를 VM에 직접 할당 (장치 공유 불가, 한 VM이 독점)
-
하드웨어 지원 I/O 가상화
- IOMMU (I/O memory management unit) : DMA(Direct Memory Access) 요청을 가상 주소에서 물리 주소로 변환하여 I/O 장치가 가상화 환경에서도 안전하게 메모리에 접근 가능하도록 지원
- SR-IOV (single root I/O virtualization) : 하나의 물리적 I/O 장치를 여러 개의 가상 기능(VF, Virtual Function)으로 나누어 여러 VM이 직접 I/O 장치를 공유할 수 있도록 지원