User Tools

Site Tools


Sidebar

kvm:qemu-kvm

KVM(Kernel-based Virtual Machine)

  1. allows a user space program access to the hardware
  2. virtualization features of Intel and AMD processors
  3. VMs run as ordinary user-space processes
  4. uses QEMU for I/O hardware emulation
  5. QEMU is a user-space emulator that can emulate a variety of guest processors on host processors with decent performance
  6. allows it to approach native speeds
  7. is managed via the libvirt API and tools

KVM 구성

  1. Domain: 실행중인 가상 컴퓨터의 컨테이너,VM 자체
  2. Physical Driver: 하드웨어와 직접 통신하는 장치 드라이버 􏰀 Virtual Driver: 가상 호스트의 장치 드라이버
  3. Host - The hypervisor or physical server where all VMs are installed
  4. VMs (Virtual Machines) - Virtual servers refer to virtual machines as ―domains‟ or ―guests‟
  5. VM(또는Guest) : 가상머신(Virtual Machine)
  6. Host : 가상머신 이구동되는 실제 물리장비(Physical Machine) 􏰀 VDI : 가상머신에 할당된 HDD 이미지(Virtual Disk Image)

KVM 동작

CPU Virtualization

􏰁 - 전통적인 하이퍼바이저 􏰁 - OS 커널과 하이퍼바이저는 Ring0 에서 동작 􏰁 - VM 의 Ring 0 와 1 은 Ring 0 에서 에뮬레이트

VT vs Non-VT

Pseudo Privileged Ring - 전전가상화 OS 􏰁VT CPU 는 KVM 이 생성한 가상머신으로 가짜 프리 빌리지 링을 생성

Full-virtual Machine Boot Process

VM Boot Process - Step 1

􏰁 - libvirt 가 가상머신의 구성파일을 읽는다 􏰁 - libvirt 는 “가상머신 생성” 프로􏰅스 를 시작하기위한 qemu-kvm 명령을 만들어 낸다

VM Boot Process - Step 2

  1. 하이퍼바이저는 먼저 VT 가 활성화된 CPU 로 부터 가짜 Ring 􏰅세트를요청한다

VM Boot Process - Step 3

  1. 가상머신이 새로운 “가짜 링 􏰅세트” 에 생성된다

􏰁 - VM 은 일단 “일시정지” 상태

VM Boot Process - Step 4

  1. 􏰁qemu-dm 과 virtio 가상화된 하드웨어 계층을 설치한다
  2. 􏰁qemu-kvm 은 “real” 모드로 일시정지상태를 해제한다
  3. 􏰁가상 BIOS 는 qemu-dm 에 의해 VM 으로 로드되고, 동작한다. 􏰁
  4. 모든 가상/물리 하드웨어를 발견

VM Boot Process - Step 5

  1. 가상 BIOS 는 디스크의 MBR/부트􏰆터로부터 부트로더를 가상머신의 메모리로 로드한다

VM Boot Process - Step 6

  1. 􏰁부트로더는 가상머신의 메모리로 OS 의 커널을 로드하고, 커널은 보호모드로 가상/물리 하드웨어와 스위치를 동작시킨다
  2. OS 는 VM 에서 일반부팅을 진행한다

KVM Hardware Virtualization

각 스탭별 사진

QEMU

  1. 􏰁QEMU는 거의 완벽에가까운 OpenSource 에뮬레이터로서 가장 큰 특징은 Guest CPU를 Host CPU용 명령으로 실행중에 바꿔주는 동적 변환기능이다. 즉, 매우 높은 이식성을 바탕으로 대부분의 H/W플랫폼 (x86,PowerPC, PowerMac, ARM, SPARC 등등)을 지원한다.
  2. 􏰁에뮬레이터 대상으로는 CPU, CD-ROM/DVE, FDD, HDD, Video, NIC, Sound, PCI, ISA, PS/2, Parallel-Port, Serial-Interface, USB 등 거의 모든 H/W를 에뮬레이팅을 한다.
  3. 􏰁이런 장점으로 인해, KVM 뿐 만아니라, Xen(HVM), VirtualBox 등도 각자에 맞게 수정된 QEMU를 사용한다.
  4. 􏰁 qemu-img: VM에 사용될 가상의 하드디스크 이미지(이하VDI)를 생 성/삭제/스냅샷/변환
  5. 􏰁Qemu-kvm

Qemu-img command

Virt-io

  1. Para-Virtualized Drivers로서, 완전가상화의 성능향상을 목적으로 Disk와 Network I/O에 대해서 Para의 장점을 도입
  2. Para-Virtualization 기능이므로, Guest OS(VM)에서 Virtio를 인식할 수 있는 OS여야 한다. Linux 최신 배포본들은 기본적으로 지원하며, Windows계열은 별도의 HDD Driver 형태로 지원이 된다.

DISK DRIVE : Non-Virtio vs Virto

  • Non-Virtio일때 <code>qemu-kvm -daemonize -smp 1 -m 1024 -hda test1.img</code> /dev/sda로서 IDE타입으로 dd명령을 통해 500MB짜리 파일 생성 테스트를 해보니 5.7MB/s
  • Virtio일때 <code>qemu-kvm -daemonize -smp 1 -m 1024 -drive file=/mnt/volume/images/test1.img,if=virtio</code> VDI인식 장치명이 /dev/vda 70.5MB/s #dd if=/dev/zero of=/lab/test.img bs=1M count=500 (test 명령)

KVM설치

kvm/qemu-kvm.txt · Last modified: 2019/02/25 14:59 (external edit)