| 1 | [[PageOutline]] |
| 2 | = KVM 中文介紹 = |
| 3 | == 1.簡介 == |
| 4 | Kernel-based Virtual Machine (KVM) 是一個full virtualization的解決方案適用於Linux在x86的硬體上. 它包含了可載入的Kenrel module(kvm.ko)和user-space component,兩者都是開放原始碼。KVM的kernel component最早被納入在主流的Linux 2.6.20版本。 |
| 5 | |
| 6 | KVM 允許VM使用不需修改的linux和windows disk image即可模擬機器。每一台虛擬機器有自己的虛擬硬體(網卡,硬碟,顯卡......),在KVM Model下,每個VM都為一個可被Linux排程的Process。KVM包含了兩個components(1)可管理VM硬體的設備驅動程式(2)模擬PC硬體的user-space component,它是一個輕量化修改的QEMU process。 |
| 7 | |
| 8 | [[BR]] |
| 9 | == 2.相關術語 == |
| 10 | * Intel Virtualization Technology |
| 11 | * Intel 的 Virtualization Technology 可以讓處理器支援多個 OS(1 physical server v.s. multiple OS),不過這其實是基於我們所熟悉的虛擬機器軟體(例如:VMware、QEMU、Xen等)才能達到的,所以這是一個由「processor + chipsets + BIOS + 虛擬機器軟體」互相運作所實現的技術。 |
| 12 | * QEMU |
| 13 | * QEMU is a well known processor emulator written by French computer wizard Fabrice Ballard. |
| 14 | |
| 15 | [[BR]] |
| 16 | == 3.特色 == |
| 17 | * KVM 驅動程式目前支援 i386 與 x86_64 "host",且「All combinations are allowed except x86_64 guest on i386 host.」。 |
| 18 | * KVM在kernel和user mode之外,又新增了一個guest mode(guest mode有自己的kenrel和user mode)。 |
| 19 | * KVM 驅動程式的 user-space 介面是 '/dev/kvm',因此 process 可以執行自己的 virtual machine,在一台電腦上也能執行多個 virtual machine。 |
| 20 | |
| 21 | [[BR]] |
| 22 | == 4.理論架構 == |
| 23 | [[Image(KVM_arch.png)]] |
| 24 | * Linux as a hypervisor |
| 25 | * 增加虛擬化的能力到標準的Linux Kernel,許多功能可透過Linux同步release來得到(最新的硬體和擴充性等) |
| 26 | * 在KVM Model下,每個VM都為一個可被Linux Scheduler 排程的Process。它的記憶體是透過Linux Memory allocator來分配,概念有點相向於NUMA |
| 27 | *圖可以看到不同的Model |
| 28 | * Guest Model:執行非I/O的guest code |
| 29 | * Kernel Model:負責Guest Model的轉換,管理從Guest Model產生的I/O和特殊指令 |
| 30 | * User Model:perform I/O on behalf of the guest |
| 31 | * KVM Components |
| 32 | * KVM 主要有兩個Component |
| 33 | * (1)可管理VM硬體的設備驅動程式 |
| 34 | |
| 35 | * (2)模擬PC硬體的user-space component,它是一個輕量化修改的QEMU process。 |
| 36 | * 修改的QEMU process 負責Guest Model的 map 到實體記憶體和呼叫Kernel Model驅動程式來執行動作 |
| 37 | * I/O model直接採用QEMU的特色,並支援copy-on-write disk images |
| 38 | * I/O效能 |
| 39 | |
| 40 | |
| 41 | |
| 42 | |
| 43 | |