KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)_第1頁
KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)_第2頁
KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)_第3頁
KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)_第4頁
KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)(初稿)*公司2014年1月20日KVM虛擬機(jī)創(chuàng)建、管理及遷移技術(shù)1 虛擬化技術(shù) 虛擬化(Virtualization)技術(shù)最早出現(xiàn)在 20 世紀(jì) 60 年代的 IBM 大型機(jī)系統(tǒng),在70年代的 System 370 系列中逐漸流行起來,這些機(jī)器通過一種叫虛擬機(jī)監(jiān)控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成許多可以運(yùn)行獨(dú)立操作系統(tǒng)軟件的虛擬機(jī)(Virtual Machine)實(shí)例。隨著近年來多核系統(tǒng)、集群、網(wǎng)格以及云計(jì)算的廣泛部署,虛擬化技術(shù)在商業(yè)應(yīng)用上的優(yōu)勢日益體現(xiàn),它不僅降低了 IT 成本,而且還增強(qiáng)了系統(tǒng)安全性和可

2、靠性。虛擬化是一個廣義的術(shù)語,對于不同的人來說可能意味著不同的東西,這要取決他們所處的環(huán)境。在計(jì)算機(jī)科學(xué)領(lǐng)域中,虛擬化通常是指計(jì)算元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行,代表著對計(jì)算資源的抽象,是一個為了簡化管理、優(yōu)化資源的解決方案。虛擬化技術(shù)可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程,可以把有限的固定的資源根據(jù)用戶的不同需求進(jìn)行重新規(guī)劃以達(dá)到資源的最大利用率。CPU的虛擬化技術(shù)可以單CPU模擬多CPU并行,允許一個平臺同時運(yùn)行多個操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。1.1 服務(wù)器虛擬化服務(wù)器虛擬化就是將服務(wù)器物理資源抽象成邏輯資源,讓

3、一臺服務(wù)器變成幾臺甚至上百臺相互隔離的虛擬服務(wù)器,我們不再受限于物理上的界限,而是讓CPU、內(nèi)存、磁盤、I/O等硬件變成可以動態(tài)管理的“資源池”,從而提高資源的利用率,簡化系統(tǒng)管理,實(shí)現(xiàn)服務(wù)器整合,讓IT對業(yè)務(wù)的變化更具適應(yīng)力。圖1中所示為服務(wù)器虛擬化及遷移示意圖。圖 1 服務(wù)器虛擬化及遷移示意圖1.2 虛擬化的分類虛擬化技術(shù)主要分為以下幾個大類:a) 平臺虛擬化(Platform Virtualization):針對計(jì)算機(jī)和操作系統(tǒng)的虛擬化;b) 資源虛擬化(Resource Virtualization):針對特定的系統(tǒng)資源的虛擬化,比如CPU、內(nèi)存、存儲、網(wǎng)絡(luò)資源等;c) 應(yīng)用程序虛擬化

4、(Application Virtualization),包括仿真、模擬、解釋技術(shù)等。我們通常所說的虛擬化主要是指平臺虛擬化技術(shù),通過使用控制程序(Control Program,也被稱為 Virtual Machine Monitor或Hypervisor)隱藏特定計(jì)算平臺的實(shí)際物理特性,為用戶提供抽象的、統(tǒng)一的、模擬的計(jì)算環(huán)境(稱為虛擬機(jī))。 虛擬機(jī)中運(yùn)行的操作系統(tǒng)被稱為客戶機(jī)操作系統(tǒng)(Guest OS),運(yùn)行虛擬機(jī)監(jiān)控器的操作系統(tǒng)被稱為主機(jī)操作系統(tǒng)(Host OS),當(dāng)然某些虛擬機(jī)監(jiān)控器可以脫離操作系統(tǒng)直接運(yùn)行在硬件之上(如 VMWARE 的 ESX 產(chǎn)品),運(yùn)行虛擬機(jī)的真實(shí)系統(tǒng)我們稱之

5、為主機(jī)系統(tǒng)。1.3 虛擬機(jī)遷移 虛擬機(jī)遷移技術(shù)為服務(wù)器虛擬化提供了便捷的方法。目前流行的虛擬化工具如 VMware,Xen,HyperV,KVM 都提供了各自的遷移組件。遷移服務(wù)器可以為用戶節(jié)省管理資金、維護(hù)費(fèi)用和升級費(fèi)用。以前的 x86 服務(wù)器,體積比較“龐大”;而現(xiàn)在的服務(wù)器,體積已經(jīng)比以前小了許多,遷移技術(shù)使得用戶可以用一臺服務(wù)器來同時替代以前的許多臺服務(wù)器,這樣就節(jié)省了用戶大量的機(jī)房空間。另外,虛擬機(jī)中的服務(wù)器有著統(tǒng)一的“虛擬硬件資源”,不像以前的服務(wù)器有著許多不同的硬件資源(如主板芯片組不同,網(wǎng)卡不同,硬盤,RAID 卡,顯卡不同)。遷移后的服務(wù)器,不僅可以在一個統(tǒng)一的界面中進(jìn)行管理

6、,而且通過某些虛擬機(jī)軟件,如 VMware 提供的高可用性工具,在這些服務(wù)器因?yàn)楦鞣N故障停機(jī)時,可以自動切換到網(wǎng)絡(luò)中另外相同的虛擬服務(wù)器中,從而達(dá)到不中斷業(yè)務(wù)的目的??傊?,虛擬機(jī)遷移的優(yōu)勢在于簡化系統(tǒng)維護(hù)管理、 提高系統(tǒng)負(fù)載均衡、優(yōu)化系統(tǒng)電源管理、增強(qiáng)系統(tǒng)錯誤容忍度以及增強(qiáng)系統(tǒng)抗毀傷能力。1.3.1 虛擬機(jī)遷移性能指標(biāo) 一個優(yōu)秀的遷移工具,目標(biāo)是最小化整體遷移的時間和停機(jī)時間,并且將遷移對于被遷移主機(jī)上運(yùn)行服務(wù)的性能造成的影響降至最低。當(dāng)然,這幾個因素互相影響,實(shí)施者需要根據(jù)遷移針對的應(yīng)用的需求在其中進(jìn)行衡量,選用合適的遷移工具。虛擬機(jī)遷移的性能指標(biāo)包括以下三個方面:a) 對應(yīng)用程序的性能影響

7、:遷移對于被遷移主機(jī)上運(yùn)行服務(wù)性能的的影響程度;b) 停機(jī)時間:遷移過程中,源主機(jī)、目的主機(jī)同時不可用的時間;c) 整體遷移時間:從源主機(jī)開始遷移到遷移結(jié)束的時間。1.3.2 虛擬機(jī)遷移方式 虛擬機(jī)遷移有三種方式:P2V(物理機(jī)到虛擬機(jī)的遷移Physical-to-Virtual),V2V(虛擬機(jī)到虛擬機(jī)的遷移Virtual-to-Virtual),V2P(虛擬機(jī)到物理機(jī)的遷移Virtual-to-Physical)。1.3.2.1 P2V遷移 P2V 指遷移物理服務(wù)器上的操作系統(tǒng)及其上的應(yīng)用軟件和數(shù)據(jù)到 VMM(Virtual Machine Monitor)管理的虛擬服務(wù)器中。這種遷移方式

8、,主要是使用各種工具軟件,把物理服務(wù)器上的系統(tǒng)狀態(tài)和數(shù)據(jù)“鏡像”到 VMM 提供的虛擬機(jī)中,并且在虛擬機(jī)中“替換”物理服務(wù)器的存儲硬件與網(wǎng)卡驅(qū)動程序。只要在虛擬服務(wù)器中安裝好相應(yīng)的驅(qū)動程序并且設(shè)置與原來服務(wù)器相同的地址 (如 TCP/IP 地址等),在重啟虛擬機(jī)服務(wù)器后,虛擬服務(wù)器即可以替代物理服務(wù)器進(jìn)行工作。P2V遷移方式分為熱遷移、半自動遷移和手動遷移三種。 隨著 P2V 技術(shù)的發(fā)展,VMware vCenter Converter 和 Microsoft Hyper-V 已經(jīng)能夠提供熱遷移功能,避免宕機(jī)。目前,P2V 熱遷移僅在 Windows 物理服務(wù)器可用,未來將添加對 Linux

9、的支持。 半自動遷移是指利用專業(yè)工具輔助 P2V 的遷移,把某些手動環(huán)節(jié)進(jìn)行自動化。如利用RedHat 的開源工具 virt-p2v,Microsoft Virtual Server Migration Toolkit 等工具將物理機(jī)的磁盤數(shù)據(jù)轉(zhuǎn)換成虛擬機(jī)格式。 手動遷移是指用戶手動完成所有遷移操作,需要用戶對物理機(jī)系統(tǒng)和虛擬機(jī)環(huán)境非常了解。首先,關(guān)閉原有的物理機(jī)上的服務(wù)和操作系統(tǒng),并且從其他媒質(zhì)上啟動一個新的系統(tǒng);再把物理機(jī)系統(tǒng)的磁盤做成虛擬機(jī)鏡像文件,如有多個磁盤則需要做多個鏡像,并且拷貝鏡像到虛擬主機(jī)上;最后,為虛擬機(jī)創(chuàng)建虛擬設(shè)備,加載鏡像文件啟動虛擬機(jī),調(diào)整系統(tǒng)設(shè)置,并開啟服務(wù)。1.3

10、.2.2 V2V遷移 V2V 遷移是在虛擬機(jī)之間移動操作系統(tǒng)和數(shù)據(jù),照顧主機(jī)級別的差異和處理不同的虛擬硬件。虛擬機(jī)從一個物理機(jī)上的 VMM 遷移到另一個物理機(jī)的 VMM,這兩個 VMM 的類型可以相同,也可以不同,如 VMware 遷移到 KVM, KVM 遷移到 KVM??梢酝ㄟ^多種方式將虛擬機(jī)從一個 VM Host 系統(tǒng)移動到另一個 VM Host 系統(tǒng)。V2V遷移方式分為離線遷移、在線遷移兩種。 離線遷移(offline migration)也叫做常規(guī)遷移、靜態(tài)遷移。在遷移之前需要將虛擬機(jī)暫停,如果使用共享存儲,則只拷貝系統(tǒng)狀態(tài)至目的主機(jī),最后在目的主機(jī)重建虛擬機(jī)狀態(tài), 恢復(fù)執(zhí)行;如果使

11、用本地存儲,則需要同時拷貝虛擬機(jī)鏡像和狀態(tài)到目的主機(jī)。采用這種方式的遷移需要顯示地停止虛擬機(jī)的運(yùn)行,從用戶角度看,有明確的一段服務(wù)不可用的時間,這種遷移方式簡單易行,適用于對服務(wù)可用性要求不嚴(yán)格的場合。 在線遷移(online migration)也稱為實(shí)時遷移(live migration),它是指在保證虛擬機(jī)上服務(wù)正常運(yùn)行的同時,虛擬機(jī)在不同的物理主機(jī)之間進(jìn)行遷移,其邏輯步驟與離線遷移幾乎完全一致。不同的是,為了保證遷移過程中虛擬機(jī)服務(wù)的可用,遷移過程僅有非常短暫的停機(jī)時間。遷移的前面階段,服務(wù)在源主機(jī)運(yùn)行,當(dāng)遷移進(jìn)行到一定階段,目的主機(jī)已經(jīng)具備了運(yùn)行系統(tǒng)的必須資源,經(jīng)過一個非常短暫的切換

12、,源主機(jī)將控制權(quán)轉(zhuǎn)移到目的主機(jī),服務(wù)在目的主機(jī)上繼續(xù)運(yùn)行。對于服務(wù)本身而言,由于切換的時間非常短暫,用戶感覺不到服務(wù)的中斷,因而遷移過程對用戶是透明的,在線遷移適用于對服務(wù)可用性要求很高的場景。目前主流的在線遷移工具,如 VMware 的 VMotion、XEN 的 xenMotion、libvirt/virt-manager 圖形化工具,都要求物理機(jī)之間采用 SAN(storage area network), NAS(network-attached storage)之類的集中式共享外存設(shè)備,因而在遷移時只需要考慮操作系統(tǒng)內(nèi)存執(zhí)行狀態(tài)的遷移,從而獲得較好的遷移性能。1.3.2.3 V2P遷

13、移V2P 指把一個操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù)從一個虛擬機(jī)中遷移到物理機(jī)的主硬盤上,是 P2V 的逆操作,它可以同時遷移虛擬機(jī)系統(tǒng)到一臺或多臺物理機(jī)上。盡管虛擬化的基本需求是整合物理機(jī)到虛擬機(jī)中,但這并不是虛擬化的唯一的應(yīng)用,比如有時虛擬機(jī)上的應(yīng)用程序的問題需要在物理機(jī)上驗(yàn)證,以排除虛擬環(huán)境帶來的影響。先配置好虛擬機(jī),然后運(yùn)用硬盤克隆工具如賽門鐵克的 Save & Restore (Ghost)復(fù)制數(shù)據(jù)至工作站硬件,最后在物理機(jī)上運(yùn)行。1.4 KVM虛擬機(jī)遷移工具 虛擬機(jī)的遷移技術(shù)為服務(wù)器的虛擬化提供簡便的方法,目前流行的虛擬化產(chǎn)品 VMware,Xen,Hyper-V,KVM 都提供各自

14、的遷移工具。其中 Linux 平臺上開源的虛擬化工具 KVM 發(fā)展迅速,基于 KVM 的虛擬機(jī)遷移特性也日趨完善。本文全面介紹如何在Ubuntu 12.04 LTS 系統(tǒng)上安裝KVM 虛擬機(jī)和所需的開源軟件,以及虛擬機(jī)靜態(tài)遷移和動態(tài)遷移的特性,最后給出了應(yīng)用 libvirt/virt-manager 圖形化管理工具進(jìn)行動態(tài)遷移的演示結(jié)果。1.4.1 KVM虛擬機(jī)管理工具 KVM(Kernel-based Virtual Machine)是一個開源的系統(tǒng)虛擬化模塊,自Linux 2.6.20之后集成在Linux的各個主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,所以相對于Xen,其核心源

15、碼很少。準(zhǔn)確來說,KVM 僅僅是 Linux 內(nèi)核的一個模塊,因此,創(chuàng)建和管理完整的 KVM 虛擬機(jī),需要更多的輔助工具來支撐。1.4.1.1 QEMU-KVM工具 在Linux系統(tǒng)中,首先我們可以用modprobe系統(tǒng)工具去加載KVM模塊,如果用RPM安裝KVM軟件包,系統(tǒng)會在啟動時自動加載模塊。只有加載了該模塊后,才能進(jìn)一步通過其他工具創(chuàng)建虛擬機(jī),但僅有KVM 模塊是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橛脩魺o法直接控制內(nèi)核模塊去做事情,還必須有一個用戶空間的工具。對于KVM的開發(fā)者來說,可以選擇已經(jīng)成型的開源虛擬化軟件QEMU作為用戶空間的工具。QEMU是一個強(qiáng)大的虛擬化軟件,它可以虛擬不同的CPU構(gòu)架,比如

16、說在x86的CPU上虛擬一個Power的CPU,并利用它編譯出可運(yùn)行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 內(nèi)核模塊的用戶空間工具 QEMU-KVM。因此,Linux發(fā)行版中分為kernel部分的KVM內(nèi)核模塊和QEMU-KVM工具,這就是 KVM 和 QEMU 的關(guān)系。1.4.1.2 Libvirt工具 盡管 QEMU-KVM 工具可以創(chuàng)建和管理 KVM 虛擬機(jī),但由于QEMU 工具效率不高且不易于使用,RedHat公司 為 KVM 開發(fā)了更多的輔助工具,比如 libvirt、libguestfs 等。libvirt 是一套

17、提供了多種語言接口的 API,為各種虛擬化工具提供一套方便、可靠的編程接口,不僅支持 KVM,而且支持 Xen 等其他虛擬機(jī)。使用 libvirt,我們只需要通過 libvirt 提供的函數(shù)連接到 KVM 或 Xen 宿主機(jī),便可以用同樣的命令來控制不同的虛擬機(jī)。libvirt 不僅提供了 API,還自帶一套基于文本的管理虛擬機(jī)的命令 virsh(虛擬化的交互式終端),我們可以通過使用 virsh 命令來使用 libvirt 的全部功能。1.4.1.3 Virt-manager工具隨著虛擬化的引入,物理主機(jī)得以擺脫單一實(shí)例操作系統(tǒng)的禁錮,用戶可以通過多個操作系統(tǒng)用作虛擬機(jī)來有效地復(fù)用我們的主機(jī)

18、。但是,一個主機(jī)上的操作系統(tǒng)越密集,就越會增加管理需求。這種管理問題的一個解決方案是 Virtual Machine Manager,或稱為 virt-manager。virt-manager由 Red Hat 公司使用 Python 語言開發(fā)的虛擬機(jī)管理圖形界面,用于控制虛擬機(jī)的生命周期,包括虛擬機(jī)資源配給、網(wǎng)絡(luò)管理,統(tǒng)計(jì)數(shù)據(jù)收集和報告,以及提供對虛擬機(jī)本身的簡單圖形訪問。vvirt-manager 就是利用 libvirt 的 API 實(shí)現(xiàn)的,它除了提供對虛擬機(jī)的管理功能之外,virt-manager 還通過一個嵌入式虛擬網(wǎng)絡(luò)計(jì)算 (VNC) 客戶端查看器為 Guest 虛擬機(jī)提供一個完整

19、圖形控制臺。virt-manager作為一個應(yīng)用程序套件,它包括了一組常見的虛擬化管理工具。這些工具在表1中列出,包括虛擬機(jī)構(gòu)造、克隆、映像制作和查看等功能。表 1 虛擬化管理應(yīng)用程序應(yīng)用程序描述virt-manager虛擬機(jī)桌面管理工具virt-install虛擬機(jī)配給工具virt-clone虛擬機(jī)映像克隆工具virt-image從一個XML描述符構(gòu)造虛擬機(jī)virt-viewer虛擬機(jī)圖形控制臺virshVirsh Guest域的交互式終端virt-manager使用libvirt虛擬化庫來管理可用的虛擬機(jī)管理程序,libvirt公開了一個應(yīng)用程序編程接口 (API),該接口與大量開源虛擬機(jī)

20、管理程序相集成,以實(shí)現(xiàn)控制和監(jiān)視。libvirt 提供了一個名為 libvirtd 的守護(hù)程序,以幫助實(shí)施控制和監(jiān)視,下圖2為包含 QEMU 的 virt-manager 堆棧的簡單示意圖。圖 2 包含 QEMU 的 virt-manager 堆棧的簡單示意圖1.4.1.4 NFS工具 NFS(Network File System)即網(wǎng)絡(luò)文件系統(tǒng),是FreeBSD支持的文件系統(tǒng)中的一種,它允許一個系統(tǒng)在網(wǎng)絡(luò)上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系統(tǒng)上的文件。應(yīng)用NFS至少有以下兩個主要部分:一臺服務(wù)器和一臺(或者更多)客戶機(jī),客戶機(jī)遠(yuǎn)程訪問存放在服務(wù)

21、器上的數(shù)據(jù)。1. 5 KVM虛擬機(jī)軟件安裝安裝KVM虛擬機(jī)所需軟件如下:SSH、NFS、Qemu、libvirt、virt-manager。首先,在實(shí)驗(yàn)室子網(wǎng)的各臺linux計(jì)算機(jī)的/etc/hosts文件里添加機(jī)器名和相應(yīng)的IP地址,如圖3中所示:圖 3 hosts主機(jī)列表 可以用# hostname 機(jī)器名 命令來修改機(jī)器名。1.5.1 安裝SSHSSH為 Secure Shell的縮寫,是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,它是目前較可靠,專為遠(yuǎn)程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。在Ubuntu 12.04中安裝SSH的命令

22、如下:# sudo apt-get install ssh輸入以下命令關(guān)閉防火墻:# sudo ufw disabled1.5.2 安裝NFSNFS的原理是通過網(wǎng)絡(luò)將遠(yuǎn)程主機(jī)共享的文件系統(tǒng)掛載到本機(jī),Ubuntu 12.04上默認(rèn)是沒有安裝NFS服務(wù)器的,首先需要安裝NFS服務(wù)程序:在Ubuntu 12.04中安裝NFS的命令如下:# sudo apt-get install nfs-kernel-server安裝nfs-kernel-server時,apt會自動安裝nfs-common和portmap,這樣,宿主機(jī)就相當(dāng)于NFS Server。打開/etc/exports文件,在末尾加入:/

23、home/kevin *(rw,sync,no_root_squash)注:nfs允許掛載的目錄及權(quán)限在文件/etc/exports中進(jìn)行定義,各字段含義如下:/home/kevin:要共享的目錄* :允許所有的網(wǎng)段訪問rw :讀寫權(quán)限sync:資料同步寫入內(nèi)在和硬盤no_root_squash:nfs客戶端共享目錄使用者權(quán)限保存,退出。修改完成之后輸入:# exportfs rv 來使配置文件生效。重啟服務(wù):#sudo /etc/init.d/portmap restart <-重啟portmap圖 4 重新啟動portmap服務(wù)#sudo /etc/init.d/nfs-kernel

24、-server restart <-重啟nfs服務(wù)圖 5 重新啟動NFS服務(wù)#showmount -e <-顯示本機(jī)共享目錄圖 6 顯示本機(jī)共享目錄可以在本機(jī)上進(jìn)行掛載測試:#sudo mount -t nfs localhost:/var/lib/libvirt/images/nfs_share /nfstest91注:localhost為本機(jī)linux的IP地址這樣就把共享目錄掛載到了/nfstest91目錄,取消掛載命令為:#sudo umount /nfstest911.5.3 安裝qemu首先,下載開源虛擬化軟件qemu的安裝包(qemu-1.7.0.tar.bz2),切

25、換到root管理員權(quán)限(#sudo -s):輸入命令:#tar -jxvf qemu-1.7.0.tar.bz2 /home/mnclab,將安裝文件解壓縮到當(dāng)前目錄。輸入命令:#mv qemu-1.7.0 /usr/local/qemu,將解壓縮包移動到文件夾目錄/usr/local/qemu下。安裝以下依賴軟件,其中uml-utilities、bridge-utils用于給kvm搭建網(wǎng)橋。#sudo apt-get install libzip-dev libsdl1.2-dev uml-utilities dh-autoreconf bridge-utils cd 進(jìn)入/usr/loca

26、l/qemu/qemu-1.7.0目錄,輸入以下命令完成軟件配置:#./configure -prefix=/usr -localstatedir=/var sysconfdir=/etc輸入#make 命令完成軟件編譯,輸入#make install 命令完成軟件安裝。注意:如果在#configure時提示缺少LIBVIRT_PRIVATE 0.9.8文件,此時需要安裝以下軟件包:#sudo apt-get install libyajl-dev,此時繼續(xù)#configure,則可執(zhí)行成功。如果在#make編譯時提示在/usr/bin目錄下缺少aclocal-1.13、automake-1.

27、13、automake、automake-1.9文件,此時需要安裝以下軟件包:automake-1.13.3-1.1ubuntu2-all.deb,雙擊該軟件包,系統(tǒng)會自動安裝,此時繼續(xù)#make,則可執(zhí)行成功。1.5.4 安裝libvirt首先,下載開源虛擬化軟件libvirt的安裝包(libvirt-1.1.4.tar.gz),切換到root管理員權(quán)限(#sudo -s):輸入命令:#tar -zxvf libvirt-1.1.4.tar.gz /home/mnclab,將安裝文件解壓縮到當(dāng)前目錄。輸入命令:#mv libvirt-1.1.4 /usr/local/qemu,將解壓縮包移動

28、到文件夾目錄/usr/local/libvirt下。安裝以下依賴軟件:#sudo apt-get install libxml2-dev libgnutls-dev libdevmapper-dev python-dev libnl-dev libpciaccess-dev build-essentialcd 進(jìn)入/usr/local/libvirt/libvirt-1.1.4目錄,輸入以下命令完成軟件配置:#./configure -prefix=/usr -localstatedir=/var sysconfdir=/etc輸入#make 命令完成軟件編譯,輸入#make install

29、命令完成軟件安裝。注意:如果在#configure時提示缺少LIBVIRT_PRIVATE 0.9.8文件,此時需要安裝以下軟件包:#sudo apt-get install libyajl-dev,此時繼續(xù)#configure,則可執(zhí)行成功。如果在#make編譯時提示在/usr/bin目錄下缺少aclocal-1.13、automake-1.13、automake、automake-1.9文件,此時需要安裝以下軟件包:automake-1.13.3-1.1ubuntu2-all.deb,雙擊該軟件包,系統(tǒng)會自動安裝,此時繼續(xù)#make,則可執(zhí)行成功。輸入#virsh version命令查看軟

30、件是否安裝成功,安裝成功會顯示以下版本:圖 7 軟件安裝成功版本號1.5.4.1 配置libvirtlibvirt安裝成功后,要想啟用libvirt來管理本地和遠(yuǎn)程計(jì)算機(jī),還需要修改一些配置文件。cd進(jìn)入/etc/libvirt目錄,打開qemu.conf文件修改默認(rèn)的用戶名和組名,(qemu.conf文件默認(rèn)的用戶名和組名是nobody),修改用戶名:usrer=mnclab,組名:group=libvirt。輸入以下命令新建libvirt用戶組:#groupadd libvirt輸入以下命令將某一用戶加入libvirt用戶組:#gpasswd a usre libvirt對于通過#gpas

31、swd a usre libvirt命令加入到libvirt組的任何用戶,必須通過以下命令更新用戶組,:#newgrp libvirtcd進(jìn)入/etc/libvirt目錄,打開libvirtd.conf文件修改默認(rèn)的組名、端口號及讀寫權(quán)限配置等,如下所示:l mdsn_adv=0l unix_sock_group = "libvirt"l unix_sock_ro_perms = "0777"l unix_sock_rw_perms = "0770"l auth_unix_ro = "none"l auth_uni

32、x_rw = "none配置完成后,輸入以下命令重啟libvirt-bin服務(wù):#sudo service libvirt-bin restart1.5.4.2 配置polkitpolkit工具包是一個應(yīng)用程序級定義和處理策略,它是一個集中決策過程對無特權(quán)的應(yīng)用程序授予訪問特權(quán)操作的框架。cd進(jìn)入/var/lib/polkit-1/localauthority/10-vendor.d目錄,打開org.libvirt.unix.manage.pkla文件,將其中的內(nèi)容刪除,保留空文件。cd進(jìn)入/etc/polkit-1/localauthority/50-local.d目錄,輸入以下命

33、令新建文件:#sudo touch 50-org.ubuntu-libvirt-remote.access.pkla,該文件名稱可以任意確定,但必須以一個2位數(shù)字開頭,以.pkla后綴結(jié)尾。打開文件并輸入以下內(nèi)容:l libvirt Management Accessl Identity=unix-group:libvirtl Action=org.libvirt.unix.managel ResultAny=yesl ResultInactive=yesl ResultActive=yes如果存在多個組,則輸入以下內(nèi)容:l libvirt Management Accessl Identit

34、y=unix-group:group_name1;unix-group:group_name2;unix-group:group_name3l Action=org.libvirt.unix.managel ResultAny=yesl ResultInactive=yesl ResultActive=yescd進(jìn)入/etc/polkit-1目錄,輸入以下命令新建文件夾:#sudo mkdir rules.d如果允許一個非root用戶在libvirt組中來管理虛擬機(jī),需要創(chuàng)建以下文件。cd進(jìn)入/etc/polkit-1/rules.d目錄,輸入以下命令在rules.d文件夾中新建文件:#sud

35、o touch 50-org.libvirt.unix.manage.rules打開文件并輸入以下內(nèi)容:polkit.addRule(function(action, subject) if (action.id = "org.libvirt.unix.manage" && subject.isInGroup("libvirt") return polkit.Result.YES; );以上代碼表示:如果某個本地或者遠(yuǎn)程請求的ID為org.libvirt.unix.manage,并且所在的組為libvirt,則賦予polkit權(quán)限。1.5

36、.4.3 配置bridge橋接網(wǎng)絡(luò)虛擬機(jī)安裝完成后,需要為其設(shè)置網(wǎng)絡(luò)接口,以便虛擬機(jī)和主機(jī)網(wǎng)絡(luò)、虛擬機(jī)之間的網(wǎng)絡(luò)通信。事實(shí)上,如果要在安裝虛擬機(jī)時使用網(wǎng)絡(luò)通信,需要提前設(shè)置虛擬機(jī)的網(wǎng)絡(luò)連接方式。KVM 虛擬機(jī)網(wǎng)絡(luò)連接有以下兩種方式:Ø 用戶網(wǎng)絡(luò)(User Networking):讓虛擬機(jī)訪問主機(jī)、互聯(lián)網(wǎng)或本地網(wǎng)絡(luò)上的資源的簡單方法,但是不能從網(wǎng)絡(luò)或其他的虛擬機(jī)訪問該虛擬機(jī)。這種網(wǎng)絡(luò)連接方式稱為NAT方式,適用于桌面主機(jī)的虛擬化。通過NAT網(wǎng)絡(luò)連接方式,不能實(shí)現(xiàn)虛擬機(jī)和子網(wǎng)中的任何機(jī)器能夠互相通信,虛擬機(jī)IP與主機(jī)IP不在同一子網(wǎng)絡(luò)中。Ø 虛擬網(wǎng)橋(Virtual Bridg

37、e):這種方式要比用戶網(wǎng)絡(luò)復(fù)雜,但通過成功設(shè)置虛擬網(wǎng)橋,可以讓虛擬機(jī)與互聯(lián)網(wǎng)、虛擬機(jī)與主機(jī)以及虛擬機(jī)之間的通信變得很容易。這種網(wǎng)絡(luò)連接方式稱為Bridge方式,適用于服務(wù)器主機(jī)虛擬化。通過Bridge虛擬網(wǎng)橋的網(wǎng)絡(luò)連接方式,可以實(shí)現(xiàn)虛擬機(jī)和子網(wǎng)中的任何機(jī)器能夠互相通信,使虛擬機(jī)成為子網(wǎng)中具有獨(dú)立IP地址的主機(jī)。橋接網(wǎng)絡(luò)(也叫物理設(shè)備共享)被用作把一個物理設(shè)備復(fù)制到一臺虛擬機(jī),網(wǎng)橋多用作高級設(shè)置,特別是主機(jī)多個網(wǎng)絡(luò)接口的情況。如圖8中所示,網(wǎng)橋的基本原理就是在主機(jī)網(wǎng)卡上創(chuàng)建一個橋接接口br0,以實(shí)現(xiàn)主機(jī)物理網(wǎng)卡與虛擬網(wǎng)絡(luò)接口之間的數(shù)據(jù)傳輸。圖 8 在主機(jī)中搭建bridge橋接網(wǎng)絡(luò)示意圖Bridg

38、e方式適用于服務(wù)器主機(jī)虛擬化,其配置方式如下:Ø 編輯修改網(wǎng)絡(luò)設(shè)備腳本文件,增加網(wǎng)橋設(shè)備br0圖 9 增加網(wǎng)橋設(shè)備端口br0上述配置新增加了網(wǎng)絡(luò)設(shè)備br0,并將虛擬網(wǎng)卡配置在“192.168.4.*”網(wǎng)段,子網(wǎng)掩碼為:255.255.255.0,網(wǎng)關(guān)為:192.168.4.253。Ø 編輯修改網(wǎng)絡(luò)設(shè)備腳本文件,修改網(wǎng)卡設(shè)備eth0圖 10 修改網(wǎng)卡設(shè)備端口eth0上述配置修改了網(wǎng)卡設(shè)備eth0,并指定橋接接口為“br0”,主機(jī)網(wǎng)卡硬件地址(MAC地址)為:a4:1f:72:8a:86:fa。Ø 搭建橋接網(wǎng)絡(luò)成功后重啟網(wǎng)絡(luò)服務(wù)圖 11 重啟網(wǎng)絡(luò)服務(wù)Ø 重啟

39、網(wǎng)絡(luò)服務(wù)后驗(yàn)證橋接接口是否創(chuàng)建成功圖 12 驗(yàn)證橋接接口從圖12中可以看到橋接接口br0已經(jīng)處于運(yùn)行狀態(tài),橋接的網(wǎng)卡為eth0,虛擬機(jī)橋接網(wǎng)絡(luò)搭建成功。1.5.5 安裝virt-manager對于 ubuntu,要安裝 virt-manager 包可使用以下命令:#sudo apt-get install virt-managerapt 命令安裝的 virt-manager 應(yīng)用程序套件使用大約 22MB 的磁盤空間。作為安裝的一部分,libvirt 守護(hù)程序應(yīng)在運(yùn)行。啟動libvirt守護(hù)進(jìn)程的命令如下:#sudo libvirtd -d要進(jìn)行驗(yàn)證,可使用以下命令:#ps aux | gre

40、p libvirtd該命令應(yīng)顯示 libvirtd 進(jìn)程正在運(yùn)行,結(jié)果如下所示:圖 13 查詢libvirtd 守護(hù)進(jìn)程注:命令#sudo libvirtd -d使用 -d 選項(xiàng)是讓 libvirtd 以守護(hù)程序的形式運(yùn)行。libvirtd 作為守護(hù)程序,它允許從 virt-manager 應(yīng)用程序連接到虛擬機(jī)管理程序并通過它們連接到它們托管的虛擬機(jī)。要確認(rèn) virt-manager 包是否已經(jīng)安裝,以及了解 virt-manager 文件的位置,可使用 which 命令:#which virt-managervirt-manager 的位置也是套件中其他應(yīng)用程序 (virt-install,

41、 virt-image等)的主目錄,安裝成功后,就可以使用 virt-manager 創(chuàng)建虛擬機(jī)并進(jìn)行監(jiān)視。1.6 KVM虛擬機(jī)遷移實(shí)驗(yàn)1.6.1 實(shí)驗(yàn)環(huán)境介紹 本次實(shí)驗(yàn)共由四臺計(jì)算機(jī)組成,主機(jī)操作系統(tǒng)均是ubuntu 12.04,本實(shí)驗(yàn)中的物理服務(wù)器和外部共享存儲硬件配置如下表:表2 硬件配置物理主機(jī)硬件配置主機(jī)操作系統(tǒng)主機(jī)名稱IP地址源主機(jī)CPU 4核內(nèi)存2GBLinux ubuntu 12.04 LTSmnclab-liusipei192.168.4.91目的主機(jī)CPU 4核內(nèi)存2GBLinux ubuntu 12.04 LTSmnclab-lilin192.168.4.97目的主機(jī)CP

42、U 4核內(nèi)存2GBLinux ubuntu 12.04 LTSmnclab-lenovo3192.168.4.117NFS ServerCPU 4核內(nèi)存2GBLinux ubuntu 12.04 LTSmnclab-shiyulong192.168.4.831.6.2 KVM虛擬機(jī)靜態(tài)遷移靜態(tài)遷移由于允許中斷虛擬機(jī)的運(yùn)行,所以相對簡單。首先在源主機(jī)上關(guān)閉虛擬機(jī),然后移動虛擬機(jī)的存儲鏡像和配置文件到目的主機(jī),最后在目的主機(jī)上啟動虛擬機(jī),恢復(fù)服務(wù)。如果源主機(jī)和目的主機(jī)都能夠訪問虛擬機(jī)的鏡像,則只需要遷移虛擬機(jī)配置文件。對于ubuntu12.04系統(tǒng),virt-manager 管理的虛擬機(jī)配置文件保

43、存在 /etc/libvirt/qemu/”your vm name.xml”中??截?XML 配置文件到目的主機(jī)的相同目錄后,進(jìn)行適當(dāng)?shù)男薷?,比如:與源主機(jī)相關(guān)的文件或路徑等。無論你何時在 /etc/libvirt/qemu/ 中修改了虛擬機(jī)的 XML 文件,必須重新運(yùn)行 define 命令,以激活新的虛擬機(jī)配置文件。#virsh define /etc/libvirt/qemu/”your vm name.xml”1.6.3 KVM虛擬機(jī)動態(tài)遷移動態(tài)遷移實(shí)際上是把虛擬機(jī)的配置封裝在一個文件中,然后通過高速網(wǎng)絡(luò),把虛擬機(jī)配置和內(nèi)存運(yùn)行狀態(tài)從一臺物理機(jī)迅速傳送到另外一臺物理機(jī)上, 而在這期間虛

44、擬機(jī)一直保持運(yùn)行狀態(tài)。在現(xiàn)有技術(shù)條件下,大多虛擬機(jī)軟件如 VMware、Hyper-V、Xen 進(jìn)行動態(tài)遷移都需要共享存儲的支持。典型的共享存儲包括 NFS 和 SMB/CIFS 協(xié)議的網(wǎng)絡(luò)文件系統(tǒng),或者通過 iSCSI 連接到 SAN 。SAN(Storage Area Network,存儲區(qū)域網(wǎng)絡(luò))是一種高速網(wǎng)絡(luò)或子網(wǎng)絡(luò),提供在計(jì)算機(jī)與存儲系統(tǒng)之間的數(shù)據(jù)傳輸。選用哪一種網(wǎng)絡(luò)文件系統(tǒng),需要根據(jù)具體情況而定,本實(shí)驗(yàn)采用了 NFS網(wǎng)絡(luò)文件系統(tǒng)作為源主機(jī)和目的主機(jī)之間的共享存儲。圖8中所示為基于共享存儲的動態(tài)遷移實(shí)驗(yàn)網(wǎng)絡(luò)配置圖。圖 14 基于共享存儲的動態(tài)遷移實(shí)驗(yàn)網(wǎng)絡(luò)配置圖在配置共享存儲網(wǎng)絡(luò)的過程

45、中需要注意以下情況:a) 確保網(wǎng)絡(luò)連接正確,源主機(jī)、目的主機(jī)和 NFS 服務(wù)器之間可以互相訪問;b) 確保源主機(jī)和目的主機(jī)上的 VMM 運(yùn)行正常;c) 設(shè)置 NFS 服務(wù)器的共享目錄,在/etc/exports文件中進(jìn)行配置,參照1.5.2節(jié)。1.6.3.1 創(chuàng)建共享存儲池和存儲卷 首先在源主機(jī)和目的主機(jī)上添加共享存儲,這里以源主機(jī)為例,目的主機(jī)做相同的配置。Ø 添加 NFS 存儲池到源主機(jī)和目的主機(jī)的 vit-manager 中。點(diǎn)擊 Edit menu->Host Details->Storage tab。 圖 15 服務(wù)器端NFS存儲目錄Ø 添加一個新的存

46、儲池。點(diǎn)擊左下角的“+”號,彈出一個新的窗口。輸入以下參數(shù):l Name:存儲池的名字;l type:選擇 netfs:Network Exported Directory。因?yàn)楸緦?shí)驗(yàn)使用了 NFS 作為共享存儲協(xié)議。圖 16 在源主機(jī)上添加共享存儲池第一步Ø 點(diǎn)擊“Forward”后,輸入以下參數(shù):l Target Path:共享存儲在本地的映射目錄。本文中這個目錄在源主機(jī)和目的主機(jī)上必須一致;l Format:選擇存儲類型。這里必須選擇 nfs;l Host Name:輸入共享存儲服務(wù)器,也就是 NFS 服務(wù)器的 IP 地址或 hostname;l Source Path:NFS

47、 服務(wù)器上輸出的共享目錄。 圖 17 在源主機(jī)上添加共享存儲池第二步Ø 點(diǎn)擊“Finish”后,共享存儲添加成功。圖 18 創(chuàng)建存儲池過程此時在物理機(jī)上查看 Linux 系統(tǒng)的文件系統(tǒng)列表,可以看到共享存儲映射的目錄nfs_share,如圖15中所示。Ø 點(diǎn)擊新建卷按鈕,即可以在新創(chuàng)建的共享存儲池中創(chuàng)建KVM虛擬機(jī)存儲卷,下圖中所示為虛擬機(jī)創(chuàng)建了名稱為mnclab91,大小為 15G,格式為 raw的虛擬機(jī)鏡像存儲卷。圖 19 新建虛擬機(jī)鏡像存儲卷接下來在新創(chuàng)建的虛擬機(jī)鏡像存儲卷中創(chuàng)建KVM虛擬機(jī)。1.6.3.2 創(chuàng)建KVM虛擬機(jī)首先,在創(chuàng)建虛擬機(jī)之前,輸入以下命令查看主機(jī)

48、CPU是否支持虛擬化:#egrep '(vmx|svm)' -color=always /proc/cpuinfo輸出下圖中所示結(jié)果則表示主機(jī)CPU支持虛擬化。圖 20 查看CPU是否支持虛擬化要開始虛擬機(jī)創(chuàng)建過程,使用 sudo 以 root 用戶權(quán)限啟動 virt-manager:#sudo virt-manager1) 打開 virt-manager 窗口,可通過該窗口連接到本地 QEMU 虛擬機(jī)管理程序(通過右鍵單擊 localhost (QEMU),然后單擊 Connect 來完成)。如果有更多虛擬機(jī)管理程序可用,可以通過 libvirt API 程序來連接。其登陸界

49、面如下所示:圖 21 虛擬機(jī)管理器登陸界面2) 當(dāng)連接到本地 QEMU 虛擬機(jī)管理程序時,單擊 Create Virtual Machine 圖標(biāo),這將啟動 VM Construction Wizard。3) 將此虛擬機(jī)命名為 ubuntu-kvm91,并從本地 ISO鏡像來安裝虛擬機(jī)操作系統(tǒng)。圖 22 新建虛擬機(jī)第一步4) 單擊 Forward 后,定義虛擬機(jī)的安裝文件并為操作系統(tǒng)選擇一個類型。在本實(shí)驗(yàn)中,指定的 ISO 文件是:ubuntu-12.04LTS-amd64.iso,從操作系統(tǒng)類型列表中選擇 Linux,然后從版本列表中選擇 Ubuntu 12.04 LTS (Preclse

50、Pangolin)。 圖23 新建虛擬機(jī)第二步5) 定義虛擬機(jī)的執(zhí)行環(huán)境。為此虛擬機(jī)分配 1GB 內(nèi)存和2個 CPU內(nèi)核。這些選擇需要根據(jù)主機(jī)的硬件配置來定,內(nèi)存大小和CPU應(yīng)適合虛擬機(jī)同時也必須滿足主機(jī)需求。圖 24 新建虛擬機(jī)第三步6) 定義虛擬機(jī)的存儲環(huán)境。在本實(shí)驗(yàn)中,請求 virt-manager 創(chuàng)建虛擬磁盤,并動態(tài)調(diào)整它的大?。ㄗ罡?15 GB)。管理的或者其他現(xiàn)有存儲這一選項(xiàng)的含義是:將在現(xiàn)有存儲池的存儲卷中安裝虛擬機(jī),QEMU會給虛擬機(jī)分配存儲空間。圖 25 新建虛擬機(jī)第四步7) 作為最后一步,virt-manager 提供了該虛擬機(jī)目前為止的摘要信息,包括:操作系統(tǒng)類型及安裝方式、可用CPU內(nèi)核數(shù)目、虛擬機(jī)存儲空間及位置、虛擬機(jī)網(wǎng)絡(luò)配置(可以選擇默認(rèn)值NAT方式或者橋接bridge方式)、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論