一、KVM概述
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的梁平網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!1、KVM
Kernel-based Virtual Machine 基于內(nèi)核的虛擬機(jī)
以色列Qumranet公司研發(fā),是內(nèi)核的一個模塊
2006年研發(fā),2008被RedHat收購了
依賴于HVM技術(shù):Intel VT-X,AMD AMD-V
2、KVM模塊載入后的系統(tǒng)運(yùn)行模式
內(nèi)核模式:GuestOS執(zhí)行I/O類操作,或其它的特殊指令的操作
用戶模式:代表GuestOS代為請求I/O類操作,
來賓(guest)模式:GuestOS的非I/O類操作,事實(shí)上,它被稱作虛擬機(jī)的用戶模式
3、KVM的組件
兩類組件:
/dev/kvm:工作于hypervisor,在用戶空間可通過ioctl()系統(tǒng)調(diào)用來完成VM創(chuàng)建,啟動等管理功能,它是一個字符設(shè)備,
功能:創(chuàng)建VM,為VM分配內(nèi)存,讀寫VCPU的寄存器,向CPU注入中斷,運(yùn)行VCPU等
qemu進(jìn)程:工作于用戶空間,主要用于實(shí)現(xiàn)模擬PC機(jī)的I/O設(shè)備
4、KVM特性
1)內(nèi)存管理
將分配給VM的內(nèi)存交換至SWAP
支持使用Huge Page(大內(nèi)存頁);
支持使用Intel EPT或AMD RVI技術(shù)完成內(nèi)存地址映射:GVA-->GPA-->HPA簡化為GVA-->HPA
支持KSM (Kernel Same-page Merging)
這個內(nèi)核特性實(shí)現(xiàn)了內(nèi)存頁面共享。KSM通過掃描每個虛擬機(jī)的內(nèi)存查找各虛擬機(jī)間相同的內(nèi)存頁,并將這些內(nèi)存頁合并為一個被各相關(guān)虛擬機(jī)共享的單獨(dú)頁面。在某虛擬機(jī)試圖修改此頁面中的數(shù)據(jù)時,KSM會重新為其提供一個新的頁面副本。實(shí)踐中,運(yùn)行于同一臺物理主機(jī)上的具有相同GuestOS的虛擬機(jī)之間出現(xiàn)相同內(nèi)存頁面的概率是很的,比如共享庫、內(nèi)核或其它內(nèi)存對象等都有可能表現(xiàn)為相同的內(nèi)存頁,因此,KSM技術(shù)可以降低內(nèi)存占用進(jìn)而提高整體性能。
2)硬件支持
取決于Linux內(nèi)核;
3)存儲:
本地存儲:
網(wǎng)絡(luò)附加存儲:
存儲區(qū)域網(wǎng)絡(luò):
分布式存儲:例如GlustFS
4)實(shí)時遷移:
支持的GuestOS:
Linux, Windows, OpenBSD, FreeBSD, OpenSolaris;
5)設(shè)備驅(qū)動:
IO設(shè)備的完全虛擬化:模擬硬件
IO設(shè)備的半虛擬化:在GuestOS中安裝驅(qū)動;virtio
virtio-blk, virtio-net, virtio-pci, virtio-console, virtio-ballon
5、KVM局限性
一般局限性:
CPU overcommit
時間記錄難以精確,依賴于時間同步機(jī)制
MAC地址:
VM量特別大時,存在沖突的可能性;
實(shí)時遷移:
性能局限性:
6、KVM的工具棧介紹
分為2大類:
qemu:
qemu-kvm
qemu-img
libvirt
GUI: virt-manager, virt-viewer
CLI: virt-install, virsh
QEMU主要提供了以下幾個部分:
處理器模擬器
仿真IO設(shè)備
關(guān)聯(lián)模擬的設(shè)備至真實(shí)設(shè)備;
調(diào)試器
與模擬器交互的用戶接口
補(bǔ)充資料:
VMM:對IO的驅(qū)動有三種模式:
自主VMM:VMM自行提供驅(qū)動和控制臺;
混合VMM:借助于OS提供驅(qū)動;
依賴于外部OS實(shí)現(xiàn)特權(quán)域
自我提供特權(quán)域
寄宿式VMM:
二、KVM安裝
1、安裝kvm
1) 確保CPU支持HVM
# grep -E --color=auto "(vmx|svm)" /proc/cpuinfo
2) 裝載模塊
[root@BAIYU_180 ~]# lsmodModule Size Used by ppdev 8537 0 vmware_balloon 7199 0 parport_pc 22690 0 parport 36209 2 ppdev,parport_pc microcode 112685 0 snd_ens1371 21587 0 snd_rawmidi 23017 1 snd_ens1371