하이퍼바이저

김진규·2022년 8월 19일
0

win-back 프로젝트 진행중..
OS 체크리스트 작성 중 하이퍼바이저 관련하여 지식이 전무하여 공부한 내용 기록.

그냥 OS를 설치하는게 아니라, 하이퍼바이저 위에다가 OS를 설치한다는 건데..
사용하는 이유도 중요하겠지만 그 전에 가상화 개념부터 이해가 필요하다.

  • 가상화
    단일 물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성하게 해주는 기술
    하나의 물리머신 상에서 복수의 시스템 동시 운영.
    가상화 이전에는 특정 서비스 운영을 위해서 OS 위에서 Application이 실행되고 있고,
    그 os들은 CPU,메모리,디스크 같은 하드웨어(x86아키텍쳐)위에 있는 환경으로 구성됨.
    (x86 아키텍쳐 - 인텔이나 AMD에서 나오는 일반적인 CPU를 사용한 서버)

가상화 이후에는 Application들이 OS가 아닌 가상머신 위에서 실행.
하나의 컴퓨터에서 여러 환경을 가진 Application을 운영할 수 있음.

여러 가상머신에 존재하는 각각의 OS의 커널이 하드웨어로 명령을 날리는 경우, 서로 다른 OS로부터 전달된 명령을 하드웨어가 이해할 수 없기에 하이퍼바이저가 각 OS마다 말하는 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해준다.

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

정리하면

  • 하이퍼바이저
    가상화 구현을 위한 기반. 하드웨어에 직접 연결된 소프트웨어로, 하나의 시스템을 여러 VM으로 분할할 수 있음.
    VM은 하이퍼바이저를 통해 리소스를 할당받음.
    VM과 하드웨어 간의 IO 명령을 처리하며 각 VM위에 올라간 OS들의 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역,
  • 하이퍼바이저 유형
  • TYPE 1 - 하이퍼바이저 가상화
    하이퍼바이저가 os에 종속되지 않고 하드웨어에 직접 설치되는 구조.
    하이퍼바이저가 다수의 VM을 관리
    호스트 OS에 하드웨어 리소스를 할당할 필요가 없기 때문에 호스트 가상화(TYPE 2)에 비해 오버헤드가 적다. 반가상화 / 전가상화로 세분화된다.
    Citrix XenServer, MS hyper-V, KVM 등이 있다.

  • TYPE 1 - 전가상화
    하드웨어를 완전히 가상화 하는 방식. 하이퍼바이저 관리용 가상 머신이 실행되며, 모든 가상머신들의 하드웨어 접근이 해당 관리 머신을 통해서 이루어짐.
    Guest OS는 하이퍼바이저의 존재를 모름.
    Guest OS에서 물리 자원으로 직접 접근이 불가. 하이퍼바이저를 통해 하드웨어 리소스를 OS로 제공

출처 : http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter01/01

장점 : 하드웨어를 완전히 가상화 하기 때문에 Guest OS의 커널 수정이 필요 없음. 다양한 OS 사용 가능.

단점 : 하이퍼바이저 관리용 가상 머신이 모든 명령을 중재하고 번역하기 때문에 비교적 성능이 느릴 수 있음.

  • TYPE 1 - 반가상화

출처 : http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter01/01
Guest OS는 스스로가 가상 환경임을 인지하고 있음.
Guest OS에서 물리 자원으로 직접 접근 가능.
전가상화에서 하이퍼바이저의 '번역' 역할을 가상머신에서 처리함.
(명령어를 던지는 OS가 직접 번역(hyper-call)을 하여 하이퍼바이저에게 요청 전달)
하이퍼바이저는 각 OS에게 리소스를 전달해주기만 하면 됨.
위와 같은 명령을 위해 Guest OS 일부(커널)를 수정해주어야 함.

  • TYPE 2 - 호스트형 가상화
    일반적으로 사용하는 가상화방식
    HOST OS 위에 하이퍼바이저가 실행되고, 그 위에 Guest OS가 실행.(ex: Xen방식)
    기존 컴퓨터 환경에서 하이퍼바이저 활용, 설치가 용이하고 구성이 편리함.
    TYPE 1보다 성능이 낮음.
    윈도우 Virtual Box라 생각하면 될듯.

실행중인 VM에서 확인해보자.

Hypervisor vendor: KVM

  • KVM(Kernel-based Virtual Machine)
    리눅스 커널 기반으로 만들어진 전가상화 오픈소스 하이퍼바이저
    전가상화로 서버에 직접 하이퍼바이저를 설치하는 형식.
    KVM을 사용하면 리눅스를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM 등 격리된 가상 환경 여러개가 실행되도록 할 수 있다.

진행중인 프로젝트 환경에서 살펴보자.

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 2
Core(s) per socket: 10
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz
Stepping: 4
CPU MHz: 1286.242
CPU max MHz: 3000.0000
CPU min MHz: 800.0000
BogoMIPS: 4400.00
Virtualization: VT-x

대충 살펴보면..
CPU(s) : 40
Thread(s) per core : 2
Core(s) per socket : 10
Socket(s) : 2
2개의 Socket에 CPU가 장착되어 있고, CPU당 Core 수는 10개.
Thread(s) per core가 2로 HyperThredaing(코어를 가상으로 늘려줌) 상태.
총 프로세서는 2 X 10 X 2 해서 40이 됨.

VT-x : 인텔 가상화 기술
가상화 기술 지원 가능한 여부만 나오고, 가상화가 되어있지는 않은 듯 하다.
(알려주시면 감사하겠습니다.)

profile
천천히

0개의 댓글