본문 바로가기
Virtualization/[상용] hyper-v

Hyper-v의 Virtualization Stack 알아보기

by blackcon 2021. 12. 16.

들어가기에 앞서..

해당 포스트는 MSRC(Microsoft Security Response Center) 블로그에 작성된 First Ttep Hyper-V Research 내용을 토대로 작성하였습니다.


가상화 Stack에 대한 간략한 소개

1) Partition

Partition은 hypervisor 위에서 실행되는 다른 VM들을 말합니다. 파티션은 Root partition(또는 부모 파티션), enlightened guest partitions, unenlightened guest partitions 와 같이 3가지 유형으로 구분되며, 이 중에서도 Root partion 은 다른 vm과 달리 host OS를 말합니다. root partition은 웹 브라우저처럼 일반적인 프로그램들을 실행할 수 있는 Windows OS 이지만 가상화 스택의 일부는 root partion kernel과 userspace에서 실행됩니다. 루트 파티션은 하이퍼바이저와 함께 작동하는 특별한 권한이 부여된 게스트 VM으로 생각할 수 있습니다.

예를 들어, Hyper-V Management Services 는 root partion 에서 실행되고 새로운 guest partion 을 생성할 수 있습니다. 다시말해 hyper call 을 이용하여 hypervisor kernel과 통신을 합니다. 통신을 하기 위해서는 더 높은 상위 API가 있는데 그 중 하나는 VMBus 입니다. VMBus는 가상화 Stack에서 가장 많이 사용하는 cross-partiion IPC 구성요소 입니다.

2) Enlightened IO

guest partition 용 가상화 기기는 Storage, Networking, Graphic 및 입력 서브 시스템에 대해 Enlightened(계몽or향상) I/O 라는 기능도 활용할 수 있습니다. Enlightened I/O는 VMBus 위에서 실행되는 통신 프로토콜(예: SCSI) 가상화에 적합한 구현입니다. 이것은 게스트가 가상화 스택을 인식하고 있기 때문에(이런 이유로 "englightened"라 칭함) 더 나은 성능과 기능을 제공하는 device emulation layer를 우회합니다. 그러나 이 기능(Enlightended IO) 을 사용하려면 게스트 VM용 특수 드라이버가 필요합니다.

Hyper-V 통합 서비스를 설치할 때 Hyper-V enlightened I/O 와 a hypervisor aware kernel 을 사용할 수 있습니다. VSC(Virtual Server Client) 드라이버를 포함하는 통합 구성 요소는 Windows 및 일반 리눅스 배포판 일부에서 하용할 수 있습니다.

3) Generation (1세대 / 2세대)

Hyper-V에서 게스트 파티션을 만들 때 "1세대" 또는 "2세대" 게스트를 선택할 수 있습니다. 두 가지 유형의 VM 간의 차이점에 대해 설명하지 않겠지만, 1세대 VM은 대부분의 게스트 운영 체제를 지원하는 반면 2세대 VM은 보다 제한된 운영 체제(대부분 64비트)를 지원한다는 점을 알아야 합니다. 이 게시물에서는 1세대 VM만 사용하겠습니다. "1세대"와 "2세대"의 차이점에 대한 자세한 설명은 여기에서 볼 수 있습니다.

4) Summary

요약하자면 일반적인 가상화 설정은 다음과 같습니다.

Root Partition Enlightened child partitions Unenlightened child partitions

Windows
Windows or Linux FreeBSD, legacy Linux ...

5) EOD

이 블로그 게시물에 대해 알아야 할 모든 것입니다. 자세한 내용은 이 프레젠테이션 또는 TLFS를 참조 하세요.