紅帽企業版 6.0 KVM虛機實戰攻略
在2010年4月釋出的RHEL 6.0 Beta版中 ,去掉了Xen,這也許是第一個不包含Xen Hypervisor的知名Linux發行版,之前有報道過Red Hat有可能會在RHEL 6.0中用KVM完全代替Xen,現在看來以前的訊息一點不假。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 之後,您可以在使用者空間啟動客戶作業系統。每個客戶作業系統都是主機作業系統(或系統管理程式)的一個單個程序。 圖 1 提供了一個使用 KVM 進行虛擬化的檢視。
圖 1 KVM 原理圖
一、KVM 虛擬機器的管理工具
準確來說,KVM 僅僅是 Linux 核心的一個模組。管理和建立完整的 KVM 虛擬機器,需要更多的輔助工具。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 的關係。 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 實現的。
二、 安裝配置KVM 相關軟體
1 系統要求:
處理器 需求:需要一臺可以執行最新linux核心的Intel處理器 (含VT虛擬化技術)或AMD處理器 (含SVM安全虛擬機器技術的AMD處理器 , 也叫AMD-V)。可以使用如下命令檢查:
# egrep (vmx|svm) --color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
如果輸出的結果包含 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
kvm_amd 69416 1
kvm 226208 2 ksm,kvm_amd
4 檢查KVM是否成功安裝
virsh -c qemu:///system list
將會顯示如下結果:
# virsh -c qemu:///system list
Id Name State
----------------------------------
如果在這裡顯示的是一個錯誤的資訊,說明有些東西出現了問題。
三、 使用virt-manager建立一個KVM虛擬機器
virt-manager 是基於 libvirt 的影象化虛擬機器管理軟體,請注意不同的發行版上 virt-manager 的版本可能不同,圖形介面和操作方法也可能不同。本文使用了紅帽6企業版的 virt-manager-0.8.4-8。建立KVM虛擬機器最簡單的方法是通過virt-manager介面。從控制檯視窗啟動這個工具,從root身 份輸入virt-manager命令,點選file選單的"新建"選項virt-manager介面介面如圖2。
圖2 virt-manager介面介面
virt-manager顯示兩種虛擬化方法:Qemu/KVM或者Xen,這裡並選擇Qemu/KVM作為hypervisor如圖3。
圖3 選擇Qemu/KVM作為hypervisor
紅帽企業版 6.0相比上個版本簡化了虛擬化配置步驟分成五步:
1 選擇虛擬機器名稱和指定一種安裝方法:通過網路安裝伺服器 或者本地CD/DVD驅動包括本地ISO檔案(這種方法更簡單)。
另外新版本還支援網路啟動和匯入之前建立的虛擬機器磁碟如圖4。
圖4選擇虛擬機器名稱和指定一種安裝方法
2 輸入本地ISO檔案路徑和檔名如圖5
圖5 輸入本地ISO檔案路徑和檔名選擇本地ISO檔案
4配置虛擬機器的儲存方法。對於儲存後端有兩種選擇:物理儲存裝置或者使用之前建立磁碟檔案。如果出於簡單測試,建立檔案作為儲存後端。當建立虛擬磁碟時,預設的10GB如圖7。
圖7 對於簡易安裝,選擇一個檔案作為儲存備份後端
5 網路配置,在這裡選擇NAT方式。下面最後可看到虛擬機器資訊的概況如圖8。
圖8 虛擬機器資訊
說明:"在安裝前自定義配置"選項提供一些高階自定義配置。在最後視窗點選完成按鈕後,安裝將自動開啟。過程跟平時安裝普通作業系統一樣,不再 贅述,不久之後,你的第一臺KVM虛擬機器的客戶機就啟動並運行了。說明這裡筆者在KVM 虛擬機器中執行的是一個linux 發行版本BackTrack。BackTrack是精簡版Linux系統以及破解軟體。可以利用其破解軟體 來搜尋和破解無線網路的密碼。執行介面如圖9。
圖9 KVM虛擬機器的客戶機
四、 使用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
Starting install...
Creating storage file... | 10.0 GB 00:00
Creating domain... | 0 B 00:00
Domain installation still in progress. Waiting for installation to complete.
下面安裝將自動開啟。過程跟平時安裝普通作業系統一樣,不再贅述。執行介面如圖10。
圖10 安裝windows 7
(2)檢視虛擬機器
# virsh -c qemu:///system list
Id 名稱 狀態
----------------------------------
1 myWin7 running
(3)關閉虛擬機器
#virsh shutdown myWin7
(4)徹底摧毀一個虛擬機器
#virsh destroy myWin7
http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=start