이번 차트의 핵심
가상화를 왜 하는가??? → 하드웨어 자원을 나눠쓰기 위해서 한다.
그러면 자원을 나눠쓸 때 중요한 포인트는 무엇인가?? → 서로 독립적 (간섭, 충돌, 영향 X)
VM → 하드웨어를 독립적으로 만들어준다.
Container → 서로 독립적으로 보이게 만들어준다. → os를 가상화 한다.
컴퓨터에서 물리적인 자원을 추상화하는 기술
-> 물리적인 자원인 하드웨어를 추상화를 통해 여러 개의 하드웨어로 보이게 해준다.
호스트 컴퓨터에서 다수의 OS를 동시에 실행하기 위해 자원을 가상화 해준다.
이 과정이 수행이 되어야 여러 OS를 동시에 운영할 수 있다.

해당 그림을 보면 Hypervisor가 자원들을 분배시켜 virtual H/W를 생성함을 알 수 있다.
Hypervisor는 2가지의 분류가 있다.

호스트의 하드웨어 위에서 바로 동작한다.
-> cpu가 가상화를 지원해줘야 된다.
XenServer, Vmware ESX 등이 있다.
KVM(linux에 같이 포함)

호스트의 하드웨어의 위가 아닌 OS상에서 Hypervisor가 동작한다.
-> Hypervisor는 OS를 통해서 H/W를 호출하게 된다.
Virtual Box, VMware Desktop
QEMU
type 1의 Hypervisor 이다.
Linux Hardware의 전가상화(full virtualization)을 지원한다.
type 2의 Hypervisor 이다.
Linux위에서 별도로 동작한다.
작업이 느리다는 단점이 있다.
cpu가 아닌 다른 H/W의 가상화를 지원한다. → cpu의 명령처리보다 덜 급한 작업들
느리다는 단점을 보완하기 위해 cpu 작업은 KVM, 나머지 작업은 QEMU를 사용하여 느린 점을 보완하는 방법이 있다.
하드웨어 전체를 완전히 가상화한다. → Guest OS를 원 OS의 변경없이 사용이 가능하다.
하드웨어를 완전히 가상화 하지 않는다.
→ Guest OS에서 직접 하드웨어 제어가 안된다. 따라서 Hypervisor를 통해 제어를 해야된다.
Guest OS는 원래 OS로부터 일부 수정된 것들이 사용된다.

cpu의 명령은 KVM을 사용하고, 나머지 하드웨어의 명령은 QEMU를 사용하는 방식으로 사용이 된다.
가상화를 관리해주는 라이브러리
Hypervisor에는 여러 종류가 있는데 이러한 환경을 통합적으로 관리하기 위해 만들어진 오픈소스 라이브러리이다.

OS를 가상화 하기 위해 사용되는 방법
VM
Host OS 위에서 Hypervisor를 통해 자원을 가상화 하여 VM 동작
Host OS 위에 Guest OS가 동작하는 구조이다.
Container
OS를 가상화한다.
Host OS에서 프로세스를 위한 공간을 별도 분리
기본적인 Binary, Library 만을 guest OS 대신 사용한다.
