1. 程式人生 > >紅帽企業版 6.0 KVM虛機實戰攻略

紅帽企業版 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。

使用virt-manager建立一個KVM虛擬機器
圖2 virt-manager介面介面

  virt-manager顯示兩種虛擬化方法:Qemu/KVM或者Xen,這裡並選擇Qemu/KVM作為hypervisor如圖3。

使用virt-manager建立一個KVM虛擬機器
圖3 選擇Qemu/KVM作為hypervisor

  紅帽企業版 6.0相比上個版本簡化了虛擬化配置步驟分成五步:

  1 選擇虛擬機器名稱和指定一種安裝方法:通過網路安裝伺服器 或者本地CD/DVD驅動包括本地ISO檔案(這種方法更簡單)。

  另外新版本還支援網路啟動和匯入之前建立的虛擬機器磁碟如圖4。

使用virt-manager建立一個KVM虛擬機器
圖4選擇虛擬機器名稱和指定一種安裝方法

  2 輸入本地ISO檔案路徑和檔名如圖5

使用virt-manager建立一個KVM虛擬機器
圖5 輸入本地ISO檔案路徑和檔名選擇本地ISO檔案

  3設定虛擬機器使用的記憶體 容量和處理器 數量如圖6。

使用virt-manager建立一個KVM虛擬機器
圖6 設定虛擬機器使用的記憶體 容量和處理器 數量

  4配置虛擬機器的儲存方法。對於儲存後端有兩種選擇:物理儲存裝置或者使用之前建立磁碟檔案。如果出於簡單測試,建立檔案作為儲存後端。當建立虛擬磁碟時,預設的10GB如圖7。

使用virt-manager建立一個KVM虛擬機器
圖7 對於簡易安裝,選擇一個檔案作為儲存備份後端

  5 網路配置,在這裡選擇NAT方式。下面最後可看到虛擬機器資訊的概況如圖8。

使用virt-manager建立一個KVM虛擬機器
圖8 虛擬機器資訊

  說明:"在安裝前自定義配置"選項提供一些高階自定義配置。在最後視窗點選完成按鈕後,安裝將自動開啟。過程跟平時安裝普通作業系統一樣,不再 贅述,不久之後,你的第一臺KVM虛擬機器的客戶機就啟動並運行了。說明這裡筆者在KVM 虛擬機器中執行的是一個linux 發行版本BackTrack。BackTrack是精簡版Linux系統以及破解軟體。可以利用其破解軟體 來搜尋和破解無線網路的密碼。執行介面如圖9。

使用virt-manager建立一個KVM虛擬機器
圖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。

使用virsh執行高階管理任務
圖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