하이퍼바이저(Hypervisor)란 무엇인가? with 가상화 (Virutalization)

2024. 5. 22. 14:10· Security 🔒/System
목차
  1. 1. Hypervisor
  2. 2. Hypervisor Type
  3. 2.1. Type 1 (navtive, bare-metal)
  4. 2.2. Type 2 (Hosted Hypervisor)
  5. 3. 가상화(Virtualization)
  6. 3.1. 가상화 작동 방식 및 종류
  7. 3.1.1. 데이터 가상화
  8. 3.1.2. 데스크탑 가상화
  9. 3.1.3. 서버 가상화
  10. 3.1.4. 운영체제 가상화
  11. 3.1.5. 네트워크 기능 가상화 (Network Fuctions Virtualization, NFV)

하이퍼바이저란 무엇인가?

커널까지는 뭐하는 앤지 대충 알겠는데, 최신 OS에 대해 논하다보면 항상 Hypervisior라는 단어가 빠지지 않는다.

하이퍼바이저란 무엇일까?

1. Hypervisor


하이퍼바이저는 가상화를 구현하기 위해 기반이 되는 기술이고

가상화 계층을 구현해주는 소프트웨어를 말한다.

 

하드웨어 위에서 가상 머신을 생성하고 자원을 할당하고, 요청을 처리해주는 매니저의 역할을 수행한다.

 

그래서 가상 머신 매니저(Virtual Machine Manager)  또는 가상 머신 모니터(Virutual Machine Monitor, VMM) 라고 불리기도 한다.

 

그럼 이 하이퍼바이저가 우리가 사용하는 윈도우 아래에서 왜 작동하는가?

윈도우는 OS가 하나인데 하이퍼바이저를 두면 뭐가 좋아서? 싶다.

 

우선 하이퍼바이저의 종류부터 알아보자.

 

 

2. Hypervisor Type


하이퍼바이저는 Type 1과 Type 2로 나뉜다.

 

2.1. Type 1 (navtive, bare-metal)

타입 1 하이퍼바이저는 native 또는 Bare-metal 하이퍼바이저라고도 불린다. 이름 그대로의 의미로 하드웨어에서 직접 구동되어 게스트 OS를 관리한다.

 

바로 하드웨어 위에서 동작하므로 호스트 OS가 존재하지 않고, 게스트 OS는 하드웨어 위에 2번째 수준으로  실행되기 때문에 오버헤드가 적다는 장점을 가진다. 

 

그러나 VM들에 대한 자체 관리 기능이 없어, VM  관리를 위한 컴퓨터나 콘솔이 별개로 필요하다.

 

Type 1 하이퍼바이저는 IBM의 CP/CMS에서 시작(최초의 하이퍼바이저는 CP-40)되어 IBM의 z/VM으로 이어졌다.

최근에는

  • Xen, Ctrix의 XenServer
  • Vmware의 ESX Server, L4 마이크로 커널, TANGO
  • IBM의 POWER 하이퍼바이저 (PR/SM) 
  • 마이크로소프트 Hyper-V, Parallel Server
  • 썬의 로지컬 도메인 하이퍼바이저

등이 있다. 또는 히타치의 Virtage 하이퍼바이저같이 플랫폼 펌웨어에 하이퍼바이저를 넣기도 하며,

KVM은 하이퍼바이저에 완전한 리눅스 커널을 넣었는데 이것도 Type 1이다.

 

Type 1 하이퍼바이저는 구현 방식에 따라

  • 전가상화 (Full-Virtualization) => VMware ESX Server, MS Hyper-V
  • 반가상화 (Half-Virtualization) => Citrix XenServer
  • HAV (Hardware Asssisted Virtualization)

으로 나뉜다.

 

2.2. Type 2 (Hosted Hypervisor)


Type 2 하이퍼바이저는 Hosted 하이퍼바이저라고도 불리며, Host OS를 갖는 하이퍼바이저를 말한다.

 

하드웨어에 이미 Host OS가 설치되어 있고, 하이퍼바이저는 OS 위에서 소프트웨어로서 동작한다. => 하드웨어로부터 3번째 수준으로 실행된다 

 

기존 시스템 위에서 쉽게 사용 가능하다는 장점을 가진다. 

그러나 오버헤드가 커지고 Host OS 문제가 전체 게스트 OS에 영향을 미칠 수 있다는 단점이 존재한다.

 

대표적인 종류로는

  • VMware Server
  • VMware Workstation, Fusion
  • QEMU
  • 마이크로소프트 버추얼 PC와 버추얼 서버
  • Oracle의 Virutal Box
  • SWsoft의 Paralles Workstation과 Parallels Desktop

등이 있다. 그냥 VM 소프트웨어들 같아보인다.

 

보통 개인 컴퓨터에서 VM을 사용하고자 할 때 일반적으로 사용하는 유형이다.

 

Q1. Type 1 하이퍼바이저와 Type 2 하이퍼바이저를 동시에 사용 가능한가?
Q2. BoB에서 VT-x 를 설정해야했는데 그거랑 무슨 관련이 있는가? 왜 그렇게 했어야만 하는가?
Q3. Hyper-V는 Default 설정이 Enable인가?

 

A1. GPT: 가능은 하지만 호환성 문제나 성능저하를 야기할 수 있다.

 

 

A2. BoB에서 VT-x를 설정해야 하는건 Hyper-V를 꺼야 적용되는 옵션이었다.

우선, 에러명은

VMware Workstation does not support nested virtualization on this host.
Module 'HV' power on failed.
Failed to start the virtual machine

이고, 이 에러가 발생하기 이전에 "virtualized intel vt-x/ept is not supported on this platform" 이 언급된다.

 

VT-x/EPT란 무엇인가? 이에 대해선 다음 글에 설명해봐야겠다. 우선 알고 넘어갈 것은 CPU에 내장된 하드웨어 가상화 기능이라는 것이다.

이 에러는 nested virtualization (중첩 가상화)와 관련이 있는데

이 에러가 뜨는 vm은

이 화면에서 Virtualize Intel VT-x/EPT or AMD-V/RVI 기능이 켜져있었다.

https://www.clien.net/service/board/kin/5244830

 

Vmware 프로그램에서 옵션에 프로세스 부분에 "virtualize intel vt-x/ept or amd-v/rvi" 옵션은 무슨옵션인가

알려주실 고수분 계신가요 -.-a;; 갑자기 궁굼해서 ㅠㅠ

www.clien.net

 

이 옵션을 켜는 이유는 nested VM을 지원하기 위함이며, 해당 VM이 이 옵션을 사용하던 이유는 KVM에서 커널 취약점을 분석하기 위해서 사용하던 VM이기 때문이다.

 

덧붙여서

 

  • Virtualize Intel VT-x/EPT or AMD-V/RVI
    : CPU가 가상화 기술을 지원할 때, 실행 모드를 Intel VT-x나 AMD-V/RVI로 실행하도록 VMware에 지시하는 옵션임
  • Virtualize CPU performance counters
    : 고급 디버깅이나 성능 모니터링을 수행하는 경우 이 옵션을 활성화하나, 일반적으로는 권장되지 않는다.
  • Virtualize IOMMU (IO memory management unit)
    : 메모리 및 DMA 리매핑 기술로 AMD와 Intel의 이더넷 가상화 기술이다. 가상 이더넷 장치를 추가할 때 하드웨어 가속을 해준다. 메인보드 지원 필요.

A3. Hyper-V는 기본적으로 Disable 상태로 되어있다.

 

 

3. 가상화(Virtualization)


하이퍼바이저가 있고 VM이 있고 위에서 뭐 게스트 OS가 돌아가고 하는 것은 대충 알겠는데,

 

가상화는 왜 사용하는가?

 

하드웨어 성능이 빠르게 증가하던 1960, 70년대에 소프트웨어 발전 속도는 하드웨어 발전 속도를 따라가지 못하였고

소프트웨어 요구 성능보다 서버 성능이 좋다보니 자원이 남아 돌았다.

 

자원이 남아도는 비효율로 문제를 해결하기 위해서 가상화 개념이 도입되었다.

 

기존에는 하나의 OS, 1개의 태스크를 실행하기 위해서 각각의 물리적 서버가 필요했으나,

 

서버를 가상화한다면 더 효율적으로 쓸 수 있는 것임.

 

이렇게 하면

  • 비용 절감: 마이그레이션이 쉬워 빈 서버를 재사용하거나 중지시켜서 유지관리를 수월하게 할 수도 있음
  • 유연성: 동일 하드웨어에서 여러 운영체제 동시 실행 가능
  • 민첩성: 한 물리서버에서 다른 물리 서버로 OS 이동 가능
  • 내결함성: 물리적 서버에 장애가 있으면 관리 소프트웨어가 마이그레이션하여 신속한 조치 가능 

이러한 장점을 가진다.

 

3.1. 가상화 작동 방식 및 종류

하이퍼바이저 소프트웨어를 설치하면 하나의 물리 시스템을 가상 머신으로 분할하여 구현할 수 있다.

하이퍼바이저 소프트웨어의 주 역할은 CPU, 메모리, 기타 물리적 리소스를 가상 인스턴스와 분리하는 가상화 계층을 생성(재차 언급임)

 

 

https://www.redhat.com/ko/topics/virtualization/what-is-virtualization

 

3.1.1. 데이터 가상화

데이터 가상화는 여러 곳에 분산된 데이터를 단일 소스로 통합한다.

이를 통해 사용자 요구에 따라 데이터를 변환할 수 있는 처리 역량을 확보할 수 있고 적시에 애플리케이션 또는 사용자에게 필요한 데이터를 제공한다.

 

 

3.1.2. 데스크탑 가상화

운영체제 가상화와 혼동하기 쉽다.

중앙 관리자나 자동화 툴을 이용해서 시뮬레이션된 데스크탑 환경을 수백개의 물리 머신에 동시에 배포할 수 있도록 지원한다.

 

각 머신에서 물리적으로 설치, 구성, 업데이트 되는 전통적인 데스크탑 가상화와 달리,

관리자가 모든 데스크탑에서 설치, 구성, 업데이트를 수행 가능하다.

 

 

3.1.3. 서버 가상화

서버를 가상화해서 서버의 기능을 많이 수행할 수 있고, 서버 파티셔닝을 통해 구성요소로 여러 기능을 지원할 수 있다.

 

3.1.4. 운영체제 가상화

운영체제 가상화는 커널에서 이루어진다.

이렇게 하면 linux 환경과 windows 환경을 함께 실행할 수 있다.

기업에서는 운영체제를 push해서 다음과 같은 이점을 얻을 수 있다.

  • 하드웨어 비용 감소: 컴퓨터에 고도의 OOTB(Out Of The Box) 기능이 필요하지 않음
  • 보안 강화: 모든 가상 인스턴스를 모니터링하고 격리할 수 있음
  • 시간 절약: 소프트웨어 업데이트같은 IT서비스의 소요시간이 감소됨

3.1.5. 네트워크 기능 가상화 (Network Fuctions Virtualization, NFV)

디렉터리 서비스, 파일 공유, IP 설정같은 네트워크 주요 기능을 분리하여 이러한 기능을 환경에 배포시킴

소프트웨어 기능이 속한 물리머신으로부터 분리하면 특정 기능을 새 네트워크에 패키징하고 이를 환경에 할당할 수 있음. =>뭔말이래;

 

네트워크를 가상화하면 물리 구성 요소의 수가 감소한다. (스위치, 라우터, 서버, 케이블, 허브 등 여러 독립적인 네트워크를 생성하는데 필요하며, 특히 산업에서 일반적으로 사용되는 물리 구성 요소..)

 

 

 

 

 

 

'Security 🔒 > System' 카테고리의 다른 글

A memory Allocator (Doug Lea의 글) (dlmalloc)  (5) 2025.01.06
LD_PRELOAD란?  (7) 2025.01.04
운영체제별 glibc 버전 확인 방법  (1) 2025.01.03
커널 패닉(Kernel Panic)에서 괄호 시간의 의미  (0) 2024.05.20
  1. 1. Hypervisor
  2. 2. Hypervisor Type
  3. 2.1. Type 1 (navtive, bare-metal)
  4. 2.2. Type 2 (Hosted Hypervisor)
  5. 3. 가상화(Virtualization)
  6. 3.1. 가상화 작동 방식 및 종류
  7. 3.1.1. 데이터 가상화
  8. 3.1.2. 데스크탑 가상화
  9. 3.1.3. 서버 가상화
  10. 3.1.4. 운영체제 가상화
  11. 3.1.5. 네트워크 기능 가상화 (Network Fuctions Virtualization, NFV)
'Security 🔒/System' 카테고리의 다른 글
  • A memory Allocator (Doug Lea의 글) (dlmalloc)
  • LD_PRELOAD란?
  • 운영체제별 glibc 버전 확인 방법
  • 커널 패닉(Kernel Panic)에서 괄호 시간의 의미
neutrinox4b1
neutrinox4b1
neutrinox4b1
Neu@security-blog
neutrinox4b1
  • All Categories
    • Security 🔒
      • System
      • > Protection Tech
      • Web
      • Reversing & Malware
      • Network
      • CTF hosting
      • Red teaming
      • > Windows
      • > Linux
      • SOC & DFIR
      • Tools
    • CTF ⚔️
    • Wargame 🪖 N
      • After CTF
      • dreamhack.io N
      • pwnable.kr
      • pwnable.tw
      • pwnable.xyz
      • pwn.college
      • phoenix (exploit.education)
      • fusion (exploit.education)
      • webhacking.kr
      • cryptohack.org
      • HackTheBox
    • Develop 🐾
      • C, C++
      • Tools
    • PS 👨‍💻
      • acmicpc
      • programmers
      • Project Euler
    • Insights 👨‍🔬
      • Code Reuse Attacks (CRA)
      • Control Flow Integrity (CFI..
      • Air-Gap
      • Embedded
      • Paper

태그

  • misc
  • sys
  • WEB

최근 글

블로그 메뉴

  • About me
  • 방명록
hELLO · Designed By 정상우.v4.3.0
neutrinox4b1
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.