KVM虛擬化特性及安裝
Type-I:
hypervisor --> vm
Type-II:
host --> vmm --> vms
實際上,這和當前主流的兩大虛擬化技術也正好匹配,他們就是Xen和KVM,
Xen:
hypervisor, Dom0
KVM:
Kernel-based Virtual Machine
本篇將從KVM開始,記錄KVM的組件、特性以及實現方式。
KVM特性:
內存管理:
將分配給vm的內存交換至swap
支持使用Huge Page
支持使用Intel EPT或AMD RVI技術完成內存地址映射:GVA-->GPA-->HPA
支持KSM(Kernel Same-page Merging)
硬件支持:
取決於Linux內核
存儲:
本地存儲
網絡附加存儲
存儲區域網絡
分布式存儲,例如GlusterFS
實時遷移:
支持的GuestOS:
Linux,Windows,OpenBSD,FreeBSD,OpenSolaris
設備驅動:
IO設備的完全虛擬化:模擬硬件
IO設備的半虛擬化:在GuestOS中安裝驅動:virtio
virtio-blk, virtio-net, virtio-pci, virtio-console, virtio-ballon
KVM局限性:
一般局限性:
CPU overcommit:
時間記錄難以精確,依賴於時間同步機制
MAC地址:
VM量特別大時,存在沖突的可能性
實時遷移
性能局限性
KVM模塊載入後的系統的運行模式:
內核模式:GuestOS執行I/O類操作,或其他的特殊指令操作都有內核來操作。稱作“來賓-內核”模式。
用戶模式:代表GuestOS請求I/O類操作。
來賓模式:GuestOS的非I/O類操作,事實上,它被稱作虛擬機的用戶模式更貼切。稱作“來賓-用戶”模式。
KVM的組件:
兩類組件:
/dev/kvm:工作於hypervisor,在用戶空間可通過ioctl()系統調用來完成VM創建、啟動等管理功能:它是一個字符設備。
功能:可以創建vm、為VM分配內存、讀寫vcpu的寄存器、向vcpu註入中斷、運行vcpu等等。
qemu進程:工作於用戶空間,主要用於實現模擬PC機的IO設備。
KVM的工具棧:
qemu:
qemu-kvm
qemu-img
libvirt:
GUI: virt-manager, virt-viewer
CLI: virt-install, vrish
QEMU主要用到以下幾個部分:
處理器模擬器
仿真IO設備
關聯模擬的設備至真實設備
調試器
與模擬器交互的用戶接口
KVM在CentOS 6.5上的安裝:
1、首先確認CPU是否支持HVM
grep -E --color=auto "(vmx|svm)" /proc/cpuinfo
2、裝載模塊
modprobe kvm
modprobe kvm-intel
3、驗證
ll /dev/kvm
因為從2.6.20版本開始,KVM已經被收入Linux內核,所以安裝KVM顯得很簡單,但是要使用KVM進行虛擬機的管理還需要安裝KVM的管理工具。
KVM虛擬化特性及安裝