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 15 years ago
Last modified on Dec 21, 2009, 4:49:56 PM
Attachments (1)
- KVM_arch.png (52.1 KB) - added by rock 16 years ago.
Download all attachments as: .zip