win-back 프로젝트 진행중..
OS 체크리스트 작성 중 하이퍼바이저 관련하여 지식이 전무하여 공부한 내용 기록.
그냥 OS를 설치하는게 아니라, 하이퍼바이저 위에다가 OS를 설치한다는 건데..
사용하는 이유도 중요하겠지만 그 전에 가상화 개념부터 이해가 필요하다.
가상화 이후에는 Application들이 OS가 아닌 가상머신 위에서 실행.
하나의 컴퓨터에서 여러 환경을 가진 Application을 운영할 수 있음.
여러 가상머신에 존재하는 각각의 OS의 커널이 하드웨어로 명령을 날리는 경우, 서로 다른 OS로부터 전달된 명령을 하드웨어가 이해할 수 없기에 하이퍼바이저가 각 OS마다 말하는 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해준다.
출처 https://blog.naver.com/alice_k106/220218878967
정리하면
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 사용 가능.
단점 : 하이퍼바이저 관리용 가상 머신이 모든 명령을 중재하고 번역하기 때문에 비교적 성능이 느릴 수 있음.
출처 : http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter01/01
Guest OS는 스스로가 가상 환경임을 인지하고 있음.
Guest OS에서 물리 자원으로 직접 접근 가능.
전가상화에서 하이퍼바이저의 '번역' 역할을 가상머신에서 처리함.
(명령어를 던지는 OS가 직접 번역(hyper-call)을 하여 하이퍼바이저에게 요청 전달)
하이퍼바이저는 각 OS에게 리소스를 전달해주기만 하면 됨.
위와 같은 명령을 위해 Guest OS 일부(커널)를 수정해주어야 함.
실행중인 VM에서 확인해보자.
Hypervisor vendor: KVM
진행중인 프로젝트 환경에서 살펴보자.
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 : 인텔 가상화 기술
가상화 기술 지원 가능한 여부만 나오고, 가상화가 되어있지는 않은 듯 하다.
(알려주시면 감사하겠습니다.)