Virtualization ( 가상화 )
KVM, QEMU, Libvirt 는 클라우드 관련 오픈소스로 어떤 역할을 하는지 알아보자.
Virtualization
컴퓨터에서 물리적인 리소스를 추상화 한다.
-> 물리적인 리소스를 논리적인 리소스처럼 보이게 하는 기술
- para Virtualization(반 가상화)
- 하드웨어를 완전히 가상화 하지 않는다. - Guest OS에서 직접 하드웨어 제어가 안되고 hypervisor를 사용하여 제어한다.
- Guest OS에서는 원래 OS로부터 일부 수정된 것들이 사용된다.
- QEMU, KVM을 운영할 수 있다.
- Binary Patching : full Virtualization 한 것이 아니기 때문에 OS를 바로 돌릴 수 없기 때문에 가짜로 맞춘 환경에 적응을 시켜야 한다.
- Full Virtualization(전 가상화)
- 하드웨어 전체를 완전히 가상화한다. - Guest OS를 원 OS의 변경없이 사용 가능하다.
Hypervisor
하드웨어 자원을 여러개의 논리적인 자원으로 가상화해주는 소프트웨어
QEMU
KVM만으로는 I/O 부분의 가상화 작업이 힘들기 때문에 QEMU를 사용하여 I/O 부분의 가상화를 도와준다.
KVM
host os 위 hypervisor가 여러개의 논리적인 하드웨어 자원으로 가상화 하여 동작한다.
물리적 Linux 시스템에 설치하여 가상 머신을 생성할 수 있는 소프트웨어 기능입니다.
KVM은 Linux에서 virtual machine 에 대한 native resource를 제공하는 Linux 운영 체제 구성 요소입니다.
Guest User들의 명령들이 Kernel로 간다. Kernel은 리눅스 os 속에서 돌아가는 일들을 의미한다.
CPU명령어를 쓰는 명령어들은 KVM을 사용하여 빠르게 넘겨준다.
i/o hw, 메모리, 여러 장치를 이용한 것은 QEMU가 진짜 있는 것처럼 각각의 Guest한테 알려준 다음 실제 하드웨어에 연결해준다.
Libvirt
virtualization platforms을 관리하기 위한 도구로, RedHat에서 만든 open source 프로젝트다.
Qemu-KVM, VMware 등 다양한 hypervisor들 동작시키기 위한 통합 API라고 생각하면 된다.
이 API 하나만으로도 여러 hypervisors 및 생성된 virtual machine 들을 조작할 수 있다.