가상화 (Virtualization)

아카짱·2023년 11월 13일
0

가상화란?

가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다.

가상화의 종류

서버 가상화
OS-Level 가상화
데스크톱 가상화
애플리케이션 가상화
네트워크 가상화

가상화 방법

HyperVisor란?

하이퍼바이저(영어: hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)을 말한다. 가상화 머신 모니터 또는 가상화 머신 매니저(: virtual machine monitor 또는 virtual machine manager, 줄여서 VMM)라고도 부른다.

HyperVisor의 종류

hypervisor_type

  • Type 1(Native)

    Native 또는 Baremetal HyperVisor라고도 불리며, Host의 Hardware에서 직접 HyperVisor가 구동되어 게스트 운영체제를 관리한다. 대표적인 Type 1 HyperVisor의 종류로는 KVM, VMWare ESXi, Windows Hyper-V가 대표적이다.

  • Type 2(hosted)

    hosted HyperVisor라고 불리며, 기존의 Host Machine의 운영체제에서 소프트웨어 Layer 또는 어플리케이션으로써, 구동된다. Host OS는 Guest OS를 추상화하는 방식으로 작동하며, VM 리소스는 호스트 OS에 따라 예약된 후 하드웨어에 대해 실행된다. 대표적인 Type 2 HyperVisor의 종류로는 VMWare Workstation, Oracle VirtualBox, qemu가 대표적이다.

가상화 방식

전 가상화(Full Virtualization)

호스트 CPU의 가상화 기술을 이용하여, 하드웨어를 완전히 가상화하는 기술

반 가상화(Para Virtualization)

전 가상화에서의 단점(가상화 오버헤드)을 보완하고자 등장하였으며, HyperCall을 이용하여, Host의 하드웨어에 접근하는 기술

CPU 가상화 기술의 발전 과정

x86 Architecture 하드웨어 가상화의 시작

초기 x86 아키텍처를 가진 운영체제는 물리적으로 존재하는 하드웨어에 직접 접근할 수 있도록 설계되었다. 아래 그림과 같이 가상화를 하지 않았을 경우의 Protection Ring 구조에서는 OS는 커널과 같은 Level인 Ring 0, 사용자의 어플리케이션들은 Ring 3에 존재하여, 직접적으로 호스트의 하드웨어를 접근할 수 있었다.

x86 Privilege level architecture

가상화를 하기 위해서는 Ring 3인 User Apps로 Guest OS를 올려야 하며, 이러한 Guest OS들은 메모리 및 물리적인 하드웨어에 Privileged Instruction을 수행하기 위해, Ring 0의 권한에 접근할 수 있어야 하였다. 이에 운영체제 아래에 가상화 계층을 생성하고, 이 가상화 계층을 이용하여, 가상 시스템을 생성하고 관리하여야 했다.

전 가상화 - Trap & Emulate

초기, 전 가상화를 하게 되면, root모드와 non-root모드가 생겨(DualMode-Operation) Guest OS는 Ring 3(non-root모드)에 배치되게 되는데, 이러한 구조에서 만약 Guest OS가 Privileged Instruction을 처리해야 되는 상황이 온다면, HyperVisor는 Trap & Emulate 방식으로 처리를 하였다.

x86 Privilege level architecture

Non-root모드에서 Guest OS에서 Privileged Instruction이 발생한다면, 해당 OS는 Trap상태로 바뀌게 되고, Trap Handler는 제어권을 하이퍼바이저로 넘기게 된다. 이후 하이퍼바이저는 해당 명령을 처리(Emulate)하고, 제어권을 다시 OS로 넘겨주게 된다.

Trap & Emulate는 호환성을 확실하게 보장할 수 있지만, Trap이라는 이벤트 발생으로 인하여, Guest OS의 실행이 중단되는 그 자체만으로 System Overhead가 크다. 따라서, Trap & Emulate 방식만으로 하이퍼바이저를 구현하는 것은 어렵다고 한다.

※ Trap이 발생한다는 것은 시스템 입장에서는 무조건 Interrupt가 발생하는 사항임

전 가상화 - Binary Translation

위와 같은 문제점으로 인하여, VMware에서는 1998년도에 Binary Translation 이라는 기술을 개발하였고, 이를 발표하였다.

Binary Translation

Binary Translation 기법은, 각 Guest OS에서 Privileged Instruction을 수행하려 할때, VMM(하이퍼바이저)가 Binary Translation을 통해 하드웨어가 인식할 수 있는 명령으로 변환하여 전달하는 기법이다. Guest OS는 가상화 계층에 의해 하드웨어로부터 완전하게 추상화되기 때문에 자신이 가상화 중이라고 인식하지 못하여, 별도로 커널 코드나 하드웨어 등을 수정할 필요가 없다.

반 가상화 - Para-Virtualization

Para Virtualization

반 가상화는 오픈소스인 Xen 프로젝트에서 전 가상화의 문제점을 해결하기 위해 고안된 가상화 기술이다. 이 경우 Guest OS는 스스로 가상화된 환경임을 인지하고 있으며, 하드웨어 명령을 호스트로 요청하기 위해서는 별도의 드라이버를 필요로 한다. 즉, 반 가상화를 하기 위해서는 코드가 수정된 커널과 별도의 장치 드라이버를 필요로 하여, 이식성과 호환성이 좋지 않다. 반 가상화의 특징으로는, Guest OS의 커널을 수정하여 Privileged Instruction이 발생할 경우 HyperCall을 호출하여 하이퍼바이저가 실행되게 한다.

전 가상화와 반 가상화의 차이점

para-full difference

전 가상화와 반 가상화의 가장 큰 차이점은 Privileged Instruction을 어디로 보내냐, 커널코드의 수정 여부 이다.

하드웨어 기반 가상화

hardware assisted virtualization

2006년도에 하드웨어 벤더사들은 빠르게 가상화를 수용하고, 가상화 기술을 쉽게 접할 수 있도록 새로운 기능을 개발하고 이를 출시하였다. 1세대 하드웨어의 향상된 기능으로 대표적으로 Intel VT-x와 AMD-V가 있다. 위 그림과 같이 VMM을 Ring 0 아래의 새로운 Root-mode에서 실행할 수 있는 CPU 실행모드 기능을 통해 Privileged Instruction 또는 민감한 명령을 자동으로 VMM에 Trap되도록 하여, 별도로 Binary Translation이나 Para-Virtualization을 진행할 필요가 없다. 또한, Guest OS의 상태는 Virtual Machine Control Structures(VT-x) 또는 Virtual Machine Control Blocks(AMD-V)에 저장된다.

용어 설명

Dual-Mode Operation

Dual-Mode Operation

운영체제 보호기법으로 권한을 User Mode와 Kernal Mode로 나눈다. User Mode에서 실행되던 Application이 시스템에 직접적인 영향을 줄 수 있는 명령어를 실행시 Kernal Mode로 Trap되는 과정을 말한다.

Privileged Instruction

Privileged Instruction

Kernal Mode Instruction은 User Mode Instruction을 포함한다. 하지만, User Mode에서 시스템에 영향을 줄 수 있는 특정 명령어들은 Kernal Mode에만 존재하는 명령어를 요청하게 되는데, 이를 특권 명령(Privileged Instruction) 이라고 한다.

참고자료

https://ko.wikipedia.org/wiki/가상화

https://mangkyu.tistory.com/87

https://velog.io/@skynet/가상화-입문-에뮬레이션-가상머신-컨테이너

https://www.educative.io/answers/what-is-virtualization-and-describe-its-overhead

https://ko.wikipedia.org/wiki/하이퍼바이저

https://blog.naver.com/alice_k106/220218878967

https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf

https://judo0179.tistory.com/36

profile
내가 아카카이조쿠단의 센죠다!!!

0개의 댓글