16
KVM & OpenStack Jeremy Jeon

KVM & OpenStack

Embed Size (px)

Citation preview

Page 1: KVM & OpenStack

KVM & OpenStackJeremy Jeon

Page 2: KVM & OpenStack

INDEX

• Hypervisor

• KVM

• QEMU

• Virtualization & Emulation

• libvirt

• How does Nova use KVM

• Next

Page 3: KVM & OpenStack

Hypervisor

• 가상화의 핵심 소프트웨어• 한대의 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼• VMM(Virtual Machine Monitor) 라고도 부름

Page 4: KVM & OpenStack

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 위치에 따른 분류

Page 5: KVM & OpenStack

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 분류

Page 6: KVM & OpenStack

KVM (Kernel based Virtual Machine)

• 전가상화를 지원하는 리눅스 커널 기반의 가상화 도구• Linux kernel 2.6.20 버전부터 Linux mainline 에 포함 (2007.02.05)

• 리눅스 자체를 호스트 OS 로 이용하고 하이퍼바이저를 서브 모듈로 취급• 리눅스를 하이퍼바이저로 쓸 수 있도록 만들어 줌

Page 7: KVM & OpenStack

KVM (Continue)• KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU(Emulator) 를 사용• 가상머신 인스턴스가 실행되게 되면 이 가상머신은 일반적인 프로세스 처럼 동작• 따라서 kill, top, taskset 등과 같은 일반적인 리눅스 명령들을 사용할 수 있음

virsh 에서 확인한 인스턴스 목록

ps 명령으로 확인한 인스턴스 프로세스 목록

Page 8: KVM & OpenStack

QEMU

• PC 환경을 위한 프로세스 에뮬레이터• 각종 디바이스 에뮬레이션• KVM 과 Xen 이 전가상화를 위해 QEMU 를 이용한 에뮬레이션을 구현

Page 9: KVM & OpenStack

Emulation & Virtualization

• Emulation

특정 시스템에 의존적인 소프트웨어 또는 플랫폼을 실행시키기 위한 가상의 환경을 만들어 주는 것에뮬레이션할 디바이스 드라이버를 모두 S/W 적으로 구현해주어야 함ex) QEMU, Android Emulator, iOS Emulator …

• Virtualization

컴퓨팅 자원을 효율적으로 사용하기 위한게 목적컴퓨팅 자원을 풀로 사용하고 이를 바탕으로 여러개의 독립적인 가상머신을 만들어 사용ex) Hypervisor

참고 : https://powermore.dell.com/technology/emulation-virtualization-whats-difference/

Page 10: KVM & OpenStack

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 와 메모리를 가상화할 수있도록 허용

Page 11: KVM & OpenStack

libvirt

• 가상화 플랫폼 ( 하이퍼바이저 ) 을 관리하는 오픈소스 라이브러리• 다양한 하이퍼바이저 환경을 통합적으로 관리하기 위해 탄생• KVM/QEMU, Xen, VMware, Hyper-V, VirtualBox 등 다양항 하이퍼바이저 지원

Page 12: KVM & OpenStack

libvirt (Continue)

Node

Linux Host

Hypervisor Hypervisor

Guest OS Guest OS

libvirt

ManagementApplication

• libvirt 는 다양한 하이퍼바이저를 통합할 수 있는 API 를 제공

• 기본적으로 virsh 이라는 쉘 환경의 도구를 지원• libvirt API 를 이용한 oVirt, kimchi 등 다양한

GUI 기반의 툴들이 만들어 짐

Page 13: KVM & OpenStack

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 에러 핸들링 인터페이스

Page 14: KVM & OpenStack

How does Nova use KVMnova-api

nova-compute

libvirt + KVM

nova-scheduler

nova-conductor

DB

AMQP

REST API1

2

3

4

Page 15: KVM & OpenStack

Next

• libvirt 를 통해 인스턴스에 대한 자원의 상세설정을 해줄 수 있을 것 같은데 ...

노드상의 자원들에 대한 Bandwidth 설정 등등…

Page 16: KVM & OpenStack

감사합니다 .