가상화
- 1. 호스트 가상화
Host OS 위에 Guest Os가 구동되는 방식
- 가상화의 하드웨어를 시뮬레이션 하기에 Host OS에 제약 사항이 많지 않음
- Host OS 위에 Guest OS가 실행되는 방식으로 OverHeader 가 크게 발생
-2. 하이퍼바이저 가상화
하드웨어 위에 하이퍼 바이저를 설치하여 사용하는 방식
- Host OS 가 없어 overheader가 적으며 직접 하드웨어를
가상화 OS가 직접 제어하기에 효율적인 리소스 사용이 가능
- 자체적인 머신 관리 기능이 없어 다른 컴퓨터나 콘솔이 필요
하이퍼 바이저의 전 가상화 와 반 가상화
전 가상화(Ful-Virtualization) - bare-metal or hypervisor
- 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 부름
하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상 머신이 실행되며 모든 가상
머신들은 하드웨어 접근을 DOM0를 통해서 이루어지게 되며 이것은 모든 System
Call 에 DOM0가 개입을 한다는 의미 입니다.
- 하이퍼 바이저는 가상화된 모든 OS(종류에 관계없이)에서 보내는 모든 명령어를
이해하여 실행하는 형태
- 하이퍼 바이저가 모든 명령러를 중계하는 형태의 브로커 역할을 하기에 성능
느려질 수 있음(DOM0 하나를 통해서 중계)
- 하드웨어를 완전히 가상화 하기에 Guest OS의 수정이 필요 없음
- host의 CPU 가상화 기술을 이용하기에 Intel-VT 또는 AMD-V 등의 물리적인
가상 지원이 가능해야 합니다.
- Trap & Emulate으로 인한 성능 저하 발생
전가상화를 보다 상세 하게 설명하면 아래와 같음
출처(https://mangkyu.tistory.com/87)
OS에서 구동되는 소프트웨어는 보안을 위해 권한과 보호 수전에 따라 링(RING) 등급으로 나뉘어진다.
Ring 0를 특권 모드라고 하며 시스템 자원을 관리하는 OS 커널이 동작한다.
Ring 1,2는 예약된 상태로, 평상시에는 사용되지 않는다.
Ring3는 우리가 일반적으로 사용하는 응용프로그램들이 동작한다.
전가상화를 하면
root모드와 non-root 모드가 생기게 되는데,
하이퍼 바이저가 root 모드,
운영체제 및 애플리케이션과 같은 도메인이 non-root 모드에 해당된다.
이러한 구조에서 만약 게스트 OS가 특권 명령(Privileged Instruction)을 처리해야 하는 상황이 오면 전가상화는 Trap & Emulate 방식으로 처리를 해준다
[ Trap & Emulate ]
Trap이란 특권 명령을 실행할 권한이 없는 비특권 모드(게스트 OS)에서 특권 명령을 실행할 때 시스템에 발생하는 예외또는 결함이다. 예를 들어 0으로 나누기(divide by zero)나 디버깅을 위한 중단점(break point)과 같은 처리를 하면 프로그램의 제어권이 트랩 사건을 처리하는 트랩 핸들러로 넘어가게 된다.
Trap & Emulate는 아래와 같은 순서로 작동한다.
비특권 모드인 게스트 OS에서 특권 명령을 수행하려고 한다.
게스트 OS는 트랩 상태(trap state)로 바뀌게 되고, 트랩 핸들러는 VM exit를 통해 제어권을 VMM(Hypervisor)로 넘겨준다.
Hypervisor는 해당 명령을 처리한다.(Emulate)
해당 명령의 처리가 끝나면 VM enter를 통해 실행 결과와 함께 제어권을 운영체제로 넘겨준다.
Trap&Emulate 방식은 호환성을 확실하게 보장할 수 있는 방법이지만 트랩이라는 이벤트가 발생하여 게스트 OS의 실행이 중단되는 등 그 자체로 시스템 오버헤드가 상당히 크다. 또한 x86 아키텍처는 약 17개 정도 특권 명령과 비특권 명령의 경계가 모호한 명령어가 있어서 Trap&Emulate 방식만으로 하이퍼바이저를 구현하는 것은 어렵다고 한다.
그래서 이러한 문제를 극복하고자 전가상화를 하기 위한 Binary Translation이 등장
[ Binary Translation(이진 변환) ]
Trap & Emulate 방식의 단점을 해결하기 위해 VMware에서는 이진 변환(Binary Translation)이란 기술을 선보였습니다.
이진 변환이란 게스트 OS에서 특권 명령을 수행하려고 할 때 하이퍼바이저가 바이너리 연산을 통해서 하드웨어가 인식할 수 있는 명령어로 변환하여 전달하는 기법이다.
이진 변환이란 CPU에서 직접 실행하는 방식이지만 중간에 하이퍼바이저가 번역하는 과정이 추가되었다. 이러한 방법은 개발하기가 상당히 까다롭다는 단점이 있었다.
VMware가 선보인 이진 변환이라는 기술과 다르게 Xen은 Hypercall이라는 방법을 제안하였는데, 반가상화라는 대비되는 명칭을 갖게 되었다.
반가상화(Para-Virtualization)
- 전가상화와 달리 하드웨어를 완전히 가상화 하지 않음
- 전가상화의 성능이 느려지는 문제를 해결하기 위해 Hyper-Call 인터페이스를
통해 하이퍼바이저에게 직접 요청
- Hyper Call (인터페이스)를 호출 할 수 있도록 guest OS의 커널을 수정해야 하며
Open 소스 OS가 아니면 반 가상화를 이용하기는 쉽지가 않음
- 모든 명령어를 DOM0을 통한 전달이 아닌 Hyper Call interface를 호출하는
방식이어 전 가상화보다 속도가 빠름
반가상화를 설명하면 아래와 같음
출처(https://mangkyu.tistory.com/87)
[ 반가상화(Para Virtualization) ]
반가상화란 Xen에서 전가상화의 성능적인 문제점을 해결하기 위해 고안한 기술로, 하드웨어를 완전히 가상화하지 않기 때문에 게스트 OS는 스스로 가상화된 환경임을 인지하고 있고, 하드웨어 명령을 호스트로 요청하기 위한 드라이버를 필요로 한다.
반가상화는 하이퍼바이저가 동작하는 호스트의 CPU 등의 장치가 가상화 기술을 지원하지 않아도 이용이 가능하며, Trap & Emulate나 Binary Translation과 같이 성능의 불이익 없이 가상화를 할 수 있다는 장점이 있다
반가상화를 사용하기 위해서는 반가상화를 지원하도록 수정된 커널과 장치 드라이버가 있어야 한다. 가상화 환경에서는 커널 대신 하이퍼바이저가 하드웨어를 관리하고 보호해야 하는 책임을 가지기 때문에 하이퍼바이저가 x86에서 제공하는 보호 링 중 가장 권한이 높은 링0에서 실행되도록 하고, 커널을 수정하여 링 0에서 실행되는 명령을 보다 낮은 권한인 링 1에서 실행되도록 하고, 가상 환경과 실제 환경과의 클럭 동기화 같은 일부 명령의 경우 하이퍼바이저에게 요청하는 하이퍼 콜이 발생하도록 수정을 한다
반가상화란 게스트 OS의 커널을 수정하여 특권 명령이 수행될 때 Hypercall을 호출하여 하이퍼바이저가 실행되도록 하는 기술이다. 반가상화의 대표적인 기술로는 Xen, KVM 등이 있다.
정의: 하드웨어를 완전히 가상화하지 않아 게스트 OS가 직접 하드웨어를 제어하지 않고 하이퍼바이저가 제어하는 기술
장점: 전가상화 기술보다 빠른 속도로 처리가 가능하다.
단점: 게스트 OS의 커널을 일부 수정해야 한다.
반가상화는 게스트 OS의 커널을 수정해야 된다는 번거로움이 있지만 최근에는 OS에서 내장된 상태로 존재하여 번거로움이 없다고 한다
3. 컨테이너 가상화
- 호스트 OS 위에 컨테이너관리 소프트웨어를 설치하여
논리적으로 컨테이너를 나누어 사용
- 컨테이너는 어플리케이션 동작을 위한 라이브러리와 어플리케이션등올 구성되기 때문에
이를 각가 개별 서버처럼 사용 가능
- 컨테이너 가상화는 오버헤드가 적어 가볍고 빠름
isms-p[2021.06.02] (0) | 2021.06.02 |
---|---|
메타버스[IT] [2021.06.01] (0) | 2021.06.01 |
컨테이너 (IT) [ 2021.06.01] (0) | 2021.05.27 |
2020.11.11 DB 보안 목적 (0) | 2020.11.11 |
2020.11.10 침입차단시스템 (0) | 2020.11.10 |
댓글 영역