가상화는 단일한 물리 하드웨어 시스템에서 여러 시물레이션 환경이나 전용 리소스를 생성할 수 있는 기술입니다. 하이퍼바이저라 불리는 소프트웨어가 하드웨어에 직접 연결되며 1개의 시스템을 가상머신VM 이라는 별도의 고유하고 안전한 환경으로 분할할 수 있습니다. 이러한 VM은 하이퍼바이저의 기능을 사용하며 머신의 리소스를 하드웨어에서 분리한 후 적절하게 배포합니다. 가상화는 기존 제품을 최대한 활용할 수 있도록 지원합니다.
하이퍼바이저가 설치된 물리 하드웨어를 호스트라고 하며 그 리소스를 사용하는 여러 VM을 게스트 라고 합니다. 이러한 게스트는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스를 처리하는 리소스의 풀로, 쉽게 재배치 할 수 있습니다.
운영자는 필요할 때 필요한 리소스가 게스트에 제공될 수 있도록 CPU, 메모리, 스토리지, 기타 리소스의 가상 인스턴스를 제어할 수 있습니다.
전가상화(Full-Virtualization)
모든 것을 가상화 시킨다. 하드웨어의 자원을 게스트 OS에다가 분배시켜주는 작업.
게스트 OS 명령이 Binary Translation 과정을 거쳐 하이퍼바이저의 중재를 통해서 하드웨어로 전달이 됩니다. Binary Translation 과정에서 지연이 발생합니다.
출처 : https://www.sciencedirect.com/topics/computer-science/full-virtualization
장점은 쉽지만, 단점은 지연 요소가 발생합니다. (느리다.)
반가상화(Para-Virtualization)
전가상화와 달리 Binary Translation 과정 없이 하이퍼콜 (Hyper Call) 이라는 인터페이스를 통해 게스트 OS명령이 하이퍼 바이저를 거쳐서 하드웨어로 전달 됩니다. Binary Tranlation 과정에서 발생하는 오버헤드가 없어서 전가상화보다 빠릅니다.
XEN Server (Hypervisor) -> Citrix.. 반가상화는 많이 사용안함. 커널 수정 어려움.
윈도우 서버는 오픈소스인 리눅스와는 다르게 커널(번역기)도 공개가 되어있지않음.
반가상화는 속도는 빠르지만, OS별로 명령이 다르기 때문에 사용자가 OS별로 커널(번역기)를 처리해야하기 때문에 어렵고 번거롭다.
하드웨어 지원 가상화(Hardware-assisted Virtualization)
CPU의 VT-x(Intel)와 SVM(AMD)기술. CPU 자체적으로 가상화를 지원해주기 시작.
전가상화에서 성능 하락을 일으켰던 Binary Translation을 하이퍼바이저가 아닌 CPU 에서 대신 처리하게 됨으로써 큰 폭의 성능이 향상되었다.
반가상화의 성능을 따라올 만큼의 속도가 발전되었다.
출처 : https://thecustomizewindows.com/2014/09/hardware-assisted-virtualization/
출처 : https://www.parallels.com/blogs/ras/hypervisor/
운영체제가 프로그램을 제어하듯, 하이퍼바이저가 해당 하드웨어에서 직접 실행되며 게스트 운영체제는 위에서 2번째 수준으로 실행된다.
대표적으로는,
AWS에서는 Xen Server(유료)와 일부는 KVM(무료)을 사용했었다.. 지금은 달라졌으려나..
Type 1은 실무!
하이퍼바이저는 일반 프로그램과 같이 호스트 운영체제에서 실행되며 VM 내부에서 동작되는 게스트 운영체제는 하드웨어에서 3번째 수준으로 실행됩니다.
VM의 대표적인 종류는,
Host OS 부분이 지연요소가 됨. Type 2는 Type 1에 비해서 편리성을 제공해주지만, VM에게는 Overhead가 발생하게 된다. Type 2는 서비스용 보다는 실습용이다.
출처 : https://networkinterview.com/type-1-vs-type-2-hypervisors/
성능은 type 1 (bare-metal)이 좋음.
정리 잘 하셨네요 ..