KVM & OpenStack Jeremy Jeon
KVM & OpenStackJeremy Jeon
INDEX
• Hypervisor
• KVM
• QEMU
• Virtualization & Emulation
• libvirt
• How does Nova use KVM
• Next
Hypervisor
• 가상화의 핵심 소프트웨어• 한대의 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼• VMM(Virtual Machine Monitor) 라고도 부름
Hypervisor
Linux
H/W
Window
Host OS
H/W
Hypervisor
Linux Window
Host OS Process
Type 1 (Native or Bare metal)
• 하드웨어 바로 위에서 하이퍼바이저가 동작• 그 위로 다양한 게스트 OS 가 위치• Xen 이나 VMware 의 서버용 하이퍼 바이저 제품군
Type 2 (Hosted)
• 하드웨어 바로 위에 호스트 운영체제가 존재• 호스트 운영체제 위에 하이퍼바이저가 동작• 그 위로 다양한 게스트 OS 가 위치• KVM, VirtualBox, VMware 의 데스크톱 제품군
Hypervisor 위치에 따른 분류
Hypervisor
Unmodified OS
H/W with Virtualization Extension
Unmodified OS
H/W
Hypervisor
Modified OS
Modified OS
전가상화 (Full-Virtualization)
• 하드웨어에서 가상화를 지원해줘야 함 (vmx, svm)
• 하드웨어를 완전히 가상화하기 때문에 게스트 OS 를 수정할 필요가 없음
• 가상 머신 에뮬레이션 필요 (QEMU)
• 물리적인 가상화 기술을 이용 (Inter-VT, AMD-V)
반가상화 (Para-Virtualization)
• 하드웨어 가상화를 이용하지 않는 방식• 게스트 OS 는 하이퍼바이저를 통해서만 하드웨어를 제어 가능• 게스트 OS 의 커널을 일부 수정해서 게스트의 커널 함수를 호출하면
호스트의 컨널로 전달• 커널을 수정해야 하기 때문에 오픈소스 OS 에 한정
가상화 방식에 따른 Hypervisor 분류
KVM (Kernel based Virtual Machine)
• 전가상화를 지원하는 리눅스 커널 기반의 가상화 도구• Linux kernel 2.6.20 버전부터 Linux mainline 에 포함 (2007.02.05)
• 리눅스 자체를 호스트 OS 로 이용하고 하이퍼바이저를 서브 모듈로 취급• 리눅스를 하이퍼바이저로 쓸 수 있도록 만들어 줌
KVM (Continue)• KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU(Emulator) 를 사용• 가상머신 인스턴스가 실행되게 되면 이 가상머신은 일반적인 프로세스 처럼 동작• 따라서 kill, top, taskset 등과 같은 일반적인 리눅스 명령들을 사용할 수 있음
virsh 에서 확인한 인스턴스 목록
ps 명령으로 확인한 인스턴스 프로세스 목록
QEMU
• PC 환경을 위한 프로세스 에뮬레이터• 각종 디바이스 에뮬레이션• KVM 과 Xen 이 전가상화를 위해 QEMU 를 이용한 에뮬레이션을 구현
Emulation & Virtualization
• Emulation
특정 시스템에 의존적인 소프트웨어 또는 플랫폼을 실행시키기 위한 가상의 환경을 만들어 주는 것에뮬레이션할 디바이스 드라이버를 모두 S/W 적으로 구현해주어야 함ex) QEMU, Android Emulator, iOS Emulator …
• Virtualization
컴퓨팅 자원을 효율적으로 사용하기 위한게 목적컴퓨팅 자원을 풀로 사용하고 이를 바탕으로 여러개의 독립적인 가상머신을 만들어 사용ex) Hypervisor
참고 : https://powermore.dell.com/technology/emulation-virtualization-whats-difference/
Virtualization Extension (x86)
Host Linux KernelKVM
Host Userspace
QEMU
Linux
Applications
Virtual Machine
QEMU
Windows
Applications
Virtual Machine
Linux Applicatons
QEMU-KVM Architecture
수정되지 않은 OS
머신 에뮬레이팅QEMU 가 가상화된 CPU 와 메모리를사용할 수 있도록 인터페이스 제공
KVM 이 CPU 와 메모리를 가상화할 수있도록 허용
libvirt
• 가상화 플랫폼 ( 하이퍼바이저 ) 을 관리하는 오픈소스 라이브러리• 다양한 하이퍼바이저 환경을 통합적으로 관리하기 위해 탄생• KVM/QEMU, Xen, VMware, Hyper-V, VirtualBox 등 다양항 하이퍼바이저 지원
libvirt (Continue)
Node
Linux Host
Hypervisor Hypervisor
Guest OS Guest OS
libvirt
ManagementApplication
• libvirt 는 다양한 하이퍼바이저를 통합할 수 있는 API 를 제공
• 기본적으로 virsh 이라는 쉘 환경의 도구를 지원• libvirt API 를 이용한 oVirt, kimchi 등 다양한
GUI 기반의 툴들이 만들어 짐
libvirt (Continue)목록 ( 카테고리 ) 설명libvirt-domain-snapshot 도메인 ( 인스턴스 ) 의 스냅샷들을 관리하는 APIlibvirt-domain 도메인 ( 인스턴스 ) 들을 관리하는 APIlibvirt-event 도메인 ( 인스턴스 ) 의 이벤트들을 관리하는 API ( 모니터링 )libvirt-host 호스트 및 하이퍼바이저를 관리하는 APIlibvirt-interface 인터페이스들을 관리하는 APIlibvirt-network 네트워크를 관리하는 APIlibvirt-nodedev 노드들의 디바이스를 관리하는 APIlibvirt-nwfilter 네트워크 필터들을 관리하는 APIlibvirt-secret 보안과 관련된 관리를 하는 APIlibvirt-storage 스토리지와 관련된 관리를 하는 APIlibvirt-stream 스트림 ( 데이터 전송 ) 과 관련된 APIvirterror 에러 핸들링 인터페이스
How does Nova use KVMnova-api
nova-compute
libvirt + KVM
nova-scheduler
nova-conductor
DB
AMQP
REST API1
2
3
4
Next
• libvirt 를 통해 인스턴스에 대한 자원의 상세설정을 해줄 수 있을 것 같은데 ...
노드상의 자원들에 대한 Bandwidth 설정 등등…
감사합니다 .