wiki:KVM/intr

KVM 中文介紹

1.簡介

Kernel-based Virtual Machine (KVM) 是一個full virtualization的解決方案適用於Linux在x86的硬體上. 它包含了可載入的Kenrel module(kvm.ko)和user-space component,兩者都是開放原始碼。KVM的kernel component最早被納入在主流的Linux 2.6.20版本。

KVM 允許VM使用不需修改的linux和windows disk image即可模擬機器。每一台虛擬機器有自己的虛擬硬體(網卡,硬碟,顯卡......),在KVM Model下,每個VM都為一個可被Linux排程的Process。KVM包含了兩個components(1)可管理VM硬體的設備驅動程式(2)模擬PC硬體的user-space component,它是一個輕量化修改的QEMU process。


2.相關術語

  • Intel Virtualization Technology
    • Intel 的 Virtualization Technology 可以讓處理器支援多個 OS(1 physical server v.s. multiple OS),不過這其實是基於我們所熟悉的虛擬機器軟體(例如:VMware、QEMU、Xen等)才能達到的,所以這是一個由「processor + chipsets + BIOS + 虛擬機器軟體」互相運作所實現的技術。
  • QEMU
    • QEMU is a well known processor emulator written by French computer wizard Fabrice Ballard.


3.特色

  • KVM 驅動程式目前支援 i386 與 x86_64 "host",且「All combinations are allowed except x86_64 guest on i386 host.」。
  • KVM在kernel和user mode之外,又新增了一個guest mode(guest mode有自己的kenrel和user mode)。
  • KVM 驅動程式的 user-space 介面是 '/dev/kvm',因此 process 可以執行自己的 virtual machine,在一台電腦上也能執行多個 virtual machine。


4.理論架構

  • KVM 主要有兩個Component
    • (1)可管理VM硬體的device driver,使用 char device /dev/kvm 為管理的 interface
    • (2)模擬PC硬體的user-space component,它是一個輕量化修改的QEMU process。
  • 修改的QEMU process 負責Guest Model的 map 到實體記憶體和呼叫Kernel Model驅動程式來執行動作
  • I/O model直接採用QEMU的特色,並支援copy-on-write disk images\
  • Linux as a hypervisor
    • 增加虛擬化的能力到標準的Linux Kernel,許多功能可透過Linux同步release來得到(最新的硬體和擴充性等)
    • 在KVM Model下,每個VM都為一個可被Linux Scheduler 排程的Process。它的記憶體是透過Linux Memory allocator來分配,概念有點相向於NUMA
    • 上圖可以看到三個不同的Model
      • Guest Model:執行非I/O的guest code
      • Kernel Model:負責Guest Model的轉換,管理從Guest Model產生的I/O和特殊指令
      • User Model:perform I/O on behalf of the guest
Last modified 14 years ago Last modified on Dec 21, 2009, 4:49:56 PM

Attachments (1)

Download all attachments as: .zip