from: http://www.searchvirtual.com.cn/showcontent_46584.htm
在2010年4月發佈的RHEL 6.0 Beta版中,去掉了Xen,這也許是第一個不包含Xen Hypervisor的知名Linux發行版。KVM 是指基於 Linux 內核的虛擬機(Kernel-based Virtual Machine)。增長KVM到Linux內核是Linux發展的一個重要里程碑,這也是第一個整合到 Linux 主線內核的虛擬化技術。在 KVM 模型中,每個虛擬機都是一個由Linux調度程序管理的標準進程,你能夠在用戶空間啓動客戶機操做系統。一個普通的Linux 進程有兩種運行模式:內核和用戶。KVM 增長了第三種模式:客戶模式。(客戶模式有本身的內核和用戶模式)
KVM 所使用的方法是經過簡單地加載內核模塊而將Linux內核轉換爲一個系統管理程序。這個內核模塊導出了一個名/dev/kvm 的設備,它能夠啓用內核的客戶模式(除了傳統的內核模式和用戶模式)。有了/dev/kvm 設備,VM 使本身的地址空間獨立於內核或運行着的任何其餘 VM 的地址空間。設備樹(/dev)中的設備對於全部用戶空間進程來講都是通用的。可是每一個打開 /dev/kvm 的進程看到的是不一樣的映射(爲了支持VM間的隔離)。KVM安裝KVM 以後,您能夠在用戶空間啓動客戶操做系統。每一個客戶操做系統都是主機操做系統(或系統管理程序)的一個單個進程。(kvm的vm共享/dev/kvm下的設備。kvm的vm對應host的一個進程,這個進程就是所謂用戶空間?)
1、KVM 虛擬機的管理工具
準確來講,KVM僅僅是Linux內核的一個模塊。管理和建立完整的KVM虛擬機,須要更多的輔助工具。(咱們常說kvm,它最初是linux內核的一個模塊;kvm加上外圍的一些輔助工具構成了kvm虛擬化系統。)python
QEMU-KVM:在Linux系統中,首先咱們能夠用modprobe 命令加載 KVM 模塊,若是用RPM安裝KVM軟件包,系統會在啓動時自動加載模塊。加載了模塊後,才能進一步經過其餘工具建立虛擬機。但僅有 KVM 模塊是遠遠不夠的,由於用戶沒法直接控制內核模塊去作事情,還必須有一個用戶空間的工具。關於用戶空間的工具,KVM 的開發者選擇了已經成型的開源虛擬化軟件 QEMU。QEMU 是一個強大的虛擬化軟件,它能夠虛擬不一樣的 CPU 構架。好比說在 x86 的 CPU 上虛擬一個 Power 的 CPU,並利用它編譯出可運行在 Power 上的程序。KVM 使用了 QEMU 的基於 x86 的部分,並稍加改造,造成可控制 KVM 內核模塊的用戶空間工具QEMU-KVM。因此 Linux 發行版中分爲 內核部分的 KVM 內核模塊和 QEMU-KVM 工具。這就是 KVM 和 QEMU 的關係。(quem-kvm是kvm內核模塊控制工具,是用戶空間的工具)linux
Libvirt、virsh、virt-manager:儘管 QEMU-KVM 工具能夠建立和管理 KVM 虛擬機,RedHat 爲 KVM 開發了更多的輔助工具,好比 libvirt、libguestfs 等。緣由是 QEMU 工具效率不高,不易於使用。Libvirt 是一套提供了多種語言接口的API,爲各類虛擬化工具提供一套方便、可靠的編程接口,不只支持 KVM,並且支持 Xen 等其餘虛擬機。使用 libvirt,你只須要經過libvirt 提供的函數鏈接到 KVM 或 Xen 宿主機,即可以用一樣的命令控制不一樣的虛擬機了。Libvirt 不只提供了API,還自帶一套基於文本的管理虛擬機的命令-- virsh,你能夠經過使用 virsh 命令來使用 libvirt 的所有功能。但最終用戶更渴望的是圖形用戶界面,這就是 virt-manager。他是一套用 python 編寫的虛擬機管理圖形界面,用戶能夠經過它直觀地操做不一樣的虛擬機。Virt-manager 就是利用 libvirt 的 API 實現的。(libvirt和quem-kvm的角色同樣?Libvirt不只提供了API,還提供了命令行工具virsh。)
2、 安裝配置KVM 相關軟件
1.系統要求:
處理器需求:須要一臺能夠運行最新linux內核的Intel處理器(含VT虛擬化技術)或AMD處理器(含SVM安全虛擬機技術的AMD處理器, 也叫AMD-V)。可使用以下命令檢查:
# egrep '(vmx|svm)' --color=always /proc/cpuinfo
若是輸出的結果包含 vmx,它是 Intel處理器虛擬機技術標誌;若是包含 svm,它是 AMD處理器虛擬機技術標誌;。若是你甚麼都得不到,那應你的系統並無支持虛擬化的處理 ,不能使用kvm。另外Linux 發行版本必須在64bit環境中才能使用KVM。
2.安裝軟件
安裝KVM模塊、管理工具和libvirt (一個建立虛擬機的工具),咱們使用命令行安裝:
#yum install kvm virt-manager libvirt
#/sbin/service libvirtd start
3.肯定正確加載kvm模塊
運行命令 lsmod | grep kvm 檢查 KVM 模塊是否成功安裝。若是結果相似於如下輸出,那麼 KVM 模塊已成功安裝:
# lsmod | grep kvm
4.檢查KVM是否成功安裝
virsh -c qemu:///system list
若是在這裏顯示的是一個錯誤的信息,說明有些東西出現了問題。
3、 使用virt-manager創建一個KVM虛擬機
virt-manager是基於libvirt的圖像化虛擬機管理軟件,請注意不一樣的發行版上 virt-manager 的版本可能不一樣,圖形界面和操做方法也可能不一樣。本文使用了紅帽6企業版的virt-manager-0.8.4-8。建立KVM虛擬機最簡單的方法是經過virt-manager接口。從控制檯窗口啓動這個工具,從root身份輸入virt-manager命令,點擊file菜單的"新建"選項virt-manager接口界面。
紅帽企業版 6.0相比上個版本簡化了虛擬化配置步驟分紅五步:
1.選擇虛擬機名稱和指定一種安裝方法:經過網絡安裝服務器或者本地CD/DVD驅動包括本地ISO文件(這種方法更簡單)。另外新版本還支持網絡啓動和導入以前創建的虛擬機磁盤。
2.輸入本地ISO文件路徑和文件名。編程
3.設置虛擬機使用的內存容量和處理器數量。
4.配置虛擬機的存儲方法。對於存儲後端有兩種選擇:物理存儲設備或者使用以前創建磁盤文件。若是出於簡單測試,建立文件做爲存儲後端。當建立虛擬磁盤時,默認的10GB。
5.網絡配置,在這裏選擇NAT方式。下面最後可看到虛擬機信息的概況。
說明:"在安裝前自定義配置"選項提供一些高級自定義配置。在最後窗口點擊完成按鈕後,安裝將自動開啓。過程跟平時安裝普通操做系統同樣,再也不贅述,不久以後,你的第一臺KVM虛擬機的客戶機就啓動並運行了。windows
4、使用virsh執行高級管理任務
virsh的學習曲線很是陡峭。可是另外一種可選方式virt-manager的缺陷還很明顯,virt-manager須要在系統內運行,這會浪費資源併爲別有目的的人提供額外的進攻點。virt-manager的另外一大缺點是須要經過圖形工做站運行遠程接入的方式,才能對服務器上的虛擬機進行管理。而virsh則能夠經過命令行執行各類各樣的管理任務。如先前所說virsh經過主命令和子命令管理每一個虛擬機功能。要學習virsh很困難,由於有許多命令。virsh經過主命令和子命令管理每一個虛擬機功能。要查看全部命令,輸入virsh help。你可能發現大量命令,不過每一個命令都有幫助指南,只須要輸入virsh help。例如使用virsh help uri,就能夠看到全部關於virsh uri命令的幫助。不過一旦你得到一個很強的命令功能,就能得到收益。下面是virsh命令實例:
1.建立一個名稱是myWin7的windows 7虛擬機
# yum install virt-viewer
virt-install --name myWin7 --hvm --ram 1024 --disk path=/tmp/win7.img,size=10 --network network:default --vnc --os-variant vista --cdrom /dev/hda
下面安裝將自動開啓。過程跟平時安裝普通操做系統同樣,再也不贅述。
2.查看虛擬機
# virsh -c qemu:///system list
3.關閉虛擬機
#virsh shutdown myWin7
4.完全摧毀一個虛擬機
#virsh destroy myWin7後端