《KVM虛擬化技術(shù)基礎(chǔ)與實踐》課件1第七章_第1頁
《KVM虛擬化技術(shù)基礎(chǔ)與實踐》課件1第七章_第2頁
《KVM虛擬化技術(shù)基礎(chǔ)與實踐》課件1第七章_第3頁
《KVM虛擬化技術(shù)基礎(chǔ)與實踐》課件1第七章_第4頁
《KVM虛擬化技術(shù)基礎(chǔ)與實踐》課件1第七章_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

KVM虛擬機管理應(yīng)用實踐7libvirt基于libvirt的配置與開發(fā)Virt-managerMarvelSky第7章KVM虛擬機管理應(yīng)用實踐7.1libvirt7.1.1libvirt簡介提到KVM的管理工具,就不得不介紹大名鼎鼎的libvirt。libvirt是為了更方便地管理平臺虛擬化技術(shù)而設(shè)計的開放源代碼的應(yīng)用程序接口。libvirt包含一個守護進程和一個管理工具,不僅能提供對虛擬化客戶機的管理,也提供了對虛擬化網(wǎng)絡(luò)和存儲的管理。可以說,libvirt是一個軟件集合,便于使用者管理虛擬機和使用其他虛擬化功能,比如存儲和網(wǎng)絡(luò)接口管理等等。libvirt可以支持多種不同的Hypervisor,針對不同的Hypervisor,libvirt提供了不同的驅(qū)動,有對Xen的驅(qū)動,有對QEMU的驅(qū)動,有對VMware的驅(qū)動。libvirt屏蔽了底層各種Hypervisor的細節(jié),對上層管理工具提供了一個統(tǒng)一的、穩(wěn)定的API。因此,通過libvirt這個中間適配層,用戶空間的管理工具可以管理多種不同的Hypervisor及其上運行的虛擬客戶機。第7章KVM虛擬機管理應(yīng)用實踐在libvirt中有幾個重要的概念,一個是節(jié)點,一個是Hypervisor,一個是域。各概念解釋如下:(1)節(jié)點(Node):通常指一個物理機器,在這個物理機器上通常運行著多個虛擬客戶機。Hypervisor和域都運行在節(jié)點之上。(2)Hypervisor:通常指VMM,例如KVM、Xen、VMware、Hyper-V等。Hypervisor可以控制一個節(jié)點,讓其能夠運行多個虛擬機。(3)域(Domain):指在Hypervisor上運行的一個虛擬機操作系統(tǒng)實例。域在不同的虛擬化技術(shù)中可能名字不同。第7章KVM虛擬機管理應(yīng)用實踐libvirt的主要功能如下:(1)虛擬機管理。包括對節(jié)點上的各虛擬機的生命周期的管理,比如啟動、停止、暫停、保存、恢復(fù)和遷移;也包括支持對多種設(shè)備類型的熱插拔操作,例如磁盤、網(wǎng)卡、內(nèi)存和CPU等。2)遠程節(jié)點的管理。只要物理節(jié)點上運行了libvirtdaemon,那么,遠程節(jié)點上的管理程序就可以連接到該節(jié)點,然后進行管理操作,所有的libvirt功能就都可以訪問和使用;libvirt支持多種網(wǎng)絡(luò)遠程傳輸,例如使用最簡單的SSH時不需要額外配置工作。若節(jié)點上運行了libvirt,而且允許SSH訪問。第7章KVM虛擬機管理應(yīng)用實踐(3)存儲管理:任何運行了libvirtdaemon的主機,都可以通過libvirt管理不同類型的存儲,包括創(chuàng)建不同格式的文件映像(qcow2、vmdk、raw等),掛接NFS共享,列出現(xiàn)有的LVM卷組,創(chuàng)建新的LVM卷組和邏輯卷,對未處理過的磁盤設(shè)備分區(qū),掛接iSCSI共享,等等。(4)網(wǎng)絡(luò)接口管理:任何運行了libvirtdaemon的主機,都可以通過libvirt管理物理和邏輯的網(wǎng)絡(luò)接口。(5)虛擬NAT和基于路由的網(wǎng)絡(luò):任何運行了libvirtdaemon的主機都可以通過libvirt管理和創(chuàng)建虛擬網(wǎng)絡(luò)。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐圖7-2libvirt架構(gòu)參照圖7-2給出通過virsh命令或接口創(chuàng)建虛擬機實例的執(zhí)行步驟如下:(1)在接口層,virsh命令或API接口創(chuàng)建虛擬機。(2)在抽象驅(qū)動層,調(diào)用libvirt提供的統(tǒng)一接口。(3)在具體驅(qū)動層,調(diào)用底層的相應(yīng)虛擬化技術(shù)的接口,如果driver=qemu,那么此處調(diào)用的qemu注冊到抽象驅(qū)動層上的函數(shù)為qemuDomainCreateXML()。(4)最后,拼裝shell命令并執(zhí)行。以QEMU為例,函數(shù)qemuDomainCreateXML()首先會拼裝一條創(chuàng)建虛擬機的命令,比如“qemu-hdadisk.img”,然后創(chuàng)建一個新的線程來執(zhí)行。第7章KVM虛擬機管理應(yīng)用實踐7.1.2libvirt的編譯和安裝可以通過多種方式安裝libvirt。普通用戶如果只是使用libvirt,可以直接通過apt-get安裝,以apt-get的方式安裝libvirt時,只需執(zhí)行“apt-getinstalllibvirt-dev”命令即可。如果作為開發(fā)者,想要對libvirt多一些深入的了解,可以從libvirt的源碼進行安裝。本書以源碼安裝方式為例,其他方式不再贅述。第7章KVM虛擬機管理應(yīng)用實踐圖7-3libvirt官網(wǎng)

第7章KVM虛擬機管理應(yīng)用實踐1、下載libvirt源代碼圖7-4libvirt下載頁面

第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐2、配置libvirt

配置libvirt時,需運行l(wèi)ibvirt安裝目錄下的configure腳本文件。在配置過程中,經(jīng)常會因為缺少編譯所需的包而導(dǎo)致配置失敗。在配置失敗時,按照錯誤提示安裝相應(yīng)的軟件包即可,在相應(yīng)的軟件包安裝完成后繼續(xù)執(zhí)行“./configure”命令進行配置,直到配置成功。有時,安裝相應(yīng)的軟件包時,又會因為缺少其他的包而引起錯誤,那么就需關(guān)聯(lián)尋找所需的包依次進行安裝。在默認情況下,libvirt會配置QEMU的驅(qū)動支持,也會配置libvirtd和virsh,還會配置libvirt對Python的綁定。配置完成后就可以進行l(wèi)ibvirt的編譯和安裝了。第7章KVM虛擬機管理應(yīng)用實踐3、編譯libvirt配置./configure成功后,在libvirt安裝目錄下執(zhí)行“make”命令編譯。命令操作如下:root@kvm-host:~/xjy/libvirt/libvirt-1.2.0#makemakeall-recursivemake[1]:Enteringdirectory`/root/xjy/libvirt/libvirt-1.2.0'Makingallin.make[2]:Enteringdirectory`/root/xjy/libvirt/libvirt-1.2.0'make[2]:Leavingdirectory`/root/xjy/libvirt/libvirt-1.2.0'Makingallingnulib/lib第7章KVM虛擬機管理應(yīng)用實踐4、安裝libvirt配置./configure成功后,在libvirt安裝目錄下執(zhí)行“make”命令編譯。命令操作如下:編譯成功后執(zhí)行“makeinstall”命令進行l(wèi)ibvirt的安裝。在配置和編譯libvirt時都不需要超級用戶(root)權(quán)限,但是在安裝時需要超級用戶(root)權(quán)限,如果不是root用戶登錄,需切換用戶或使用sudo命令。具體操作如課本所見。5、查看已經(jīng)安裝的libvirt7.1.3libvirtdlibvirtd是libvirt虛擬化管理工具的服務(wù)器端的守護程序。如果要讓某個節(jié)點能夠用libvirt進行管理(無論是本地還是遠程管理),都需要在這個節(jié)點上運行著libvirtd這個守護進程,以便讓其他上層管理工具可以連接到該節(jié)點,libvirtd負責執(zhí)行其他管理工具發(fā)送給它的虛擬化管理操作指令。而libvirt的客戶端工具(包括virsh、virt-manager等)可以連接到本地或遠程的libvirtd進程,以便管理節(jié)點上的客戶機(啟動、關(guān)閉、重啟、遷移等)、收集節(jié)點上的宿主機和客戶機的配置和資源使用狀態(tài)。第7章KVM虛擬機管理應(yīng)用實踐

libvirtd監(jiān)聽在一個本地的Unixdomainsocket上,而沒有監(jiān)聽基于網(wǎng)絡(luò)的TCP/IPsocket,需要使用“-l”或“-listen”的命令行參數(shù)來開啟對libvirtd.conf配置文件中對TCP/IPsocket的配置。另外,libvirtd守護進程的啟動或停止并不會直接影響到正在運行中的客戶機。libvirtd在啟動或重新啟動完成時,只要客戶機的XML配置文件是存在的,libvirtd就會自動加載這些客戶機的配置,以獲取它們的信息;當然,如果客戶機沒有基于libvirt格式的XML文件在運行,libvirtd則不能發(fā)現(xiàn)它。第7章KVM虛擬機管理應(yīng)用實踐7.1.4virshvirsh通過調(diào)用libvirtAPI來實現(xiàn)虛擬化的管理,是一個完全在命令行文本模式下運行的工具,系統(tǒng)管理員可以通過腳本程序方便地進行虛擬化的自動部署和管理。在使用時,直接執(zhí)行virsh程序即可獲得一個特殊的shell---virsh,在這個shell里面可以直接執(zhí)行virsh的常用命令實現(xiàn)與本地的libvirt交互,還可以通過connect命令連接遠程的libvirt與之交互。第7章KVM虛擬機管理應(yīng)用實踐virsh管理虛擬化操作時可以使用兩種工作模式:一種是交互模式,直接連接到相應(yīng)的Hypervisor上,在命令行輸入virsh命令執(zhí)行操作并查看返回結(jié)果,可以使用“quit”命令退出連接;另外一種是非交互模式,在終端輸入一個virsh命令,建立到指定的一個URI的連接,執(zhí)行完成后將結(jié)果返回到當前的終端并同時斷開連接。查看virsh工具的幫助信息,可以使用“virsh-help”命令,也可以使用“manvirsh”命令,表7-1給出了virsh的常用命令。第7章KVM虛擬機管理應(yīng)用實踐表7-1virsh常用命令表

第7章KVM虛擬機管理應(yīng)用實踐命令說明help顯示該命令的幫助quit結(jié)束virsh,回到shell終端connect連接到指定的虛擬機服務(wù)器create定義并啟動一個新的虛擬機destroy刪除一個虛擬機start開啟(已定義過的)的虛擬機(不是啟動)define從xml文件定義一個虛擬機undefine取消定義的虛擬機dumpxml轉(zhuǎn)儲虛擬機的設(shè)置值list列出虛擬機reboot重新啟動虛擬機save保存虛擬機的狀態(tài)restore恢復(fù)虛擬機的狀態(tài)suspend暫停虛擬機的執(zhí)行resume繼續(xù)執(zhí)行虛擬機dump將虛擬機的內(nèi)核轉(zhuǎn)儲到指定的文件,以便進行分析和排錯shutdown關(guān)閉虛擬機setmem修改內(nèi)存的大小setmaxmem設(shè)置內(nèi)存的最大值setvcpus修改虛擬處理器的個數(shù)7.1.5libvirtAPI第7章KVM虛擬機管理應(yīng)用實踐圖7-5libvirtAPI

以下是對常用的libvirtAPI的大致介紹:(1)?libvirt-domain:管理libvirt域的API,其中提供了一系列以virDomain開頭的函數(shù)。(2)?libvirt-event:管理事件的API,其中提供了一系列以virEvent開頭的函數(shù)。(3)?libvirt-host:管理宿主機的API。(4)?libvirt-network:管理網(wǎng)絡(luò)的API,其中提供了一系列以virConnect和virNetwork開頭的函數(shù)。第7章KVM虛擬機管理應(yīng)用實踐(5)?libvirt-nodedev:管理節(jié)點的API,其中提供了一系列以virNode開頭的函數(shù)。(6)?libvirt-storage:管理存儲池和卷的API,其中提供了一系列以virStorage開頭的函數(shù)。(7)?libvirt-stream:管理數(shù)據(jù)流的API,其中提供了一系列以virStream開頭的函數(shù)。(8)?virterror:處理libvirt庫的錯誤處理接口。libvirtAPI的具體使用方式在7.2節(jié)中會舉例說明。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐7.2基于libvirt的配置與開發(fā)7.2.1libvirt的配置文件1)libvirt.conf配置文件libvirt.conf配置文件用于配置常用libvirt遠程連接的別名。文件中以“#”號開頭的行為注釋內(nèi)容。2)libvirtd.conf配置文件libvirtd.conf配置文件是libvirtd守護進程的配置文件,該文件修改后libvirtd需要重新加載才能生效。同樣,文件中以“#”號開頭的行為注釋內(nèi)容。libvirtd.conf配置文件中配置了許多l(xiāng)ibvirtd的啟動設(shè)置,在每個配置參數(shù)上方都有該參數(shù)的注釋說明。3)qemu.conf配置文件qemu.conf是libvirt對QEMU驅(qū)動的配置文件,包括VNC、SPICE等和連接它們時采用的權(quán)限認證方式的配置,也包括內(nèi)存大頁、SELinux、Cgroups等相關(guān)配置。第7章KVM虛擬機管理應(yīng)用實踐4)qemu目錄libvirt使用xml文件對虛擬機進行配置,其中包括虛擬機名稱、分配內(nèi)存、vCPU等多種信息。?定義、創(chuàng)建虛擬機等操作都需要xml配置文件的參與。如果底層虛擬化使用QEMU,那么這個xml配置文件通常放置在libvirt特定的“qemu”目錄下。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐7.2.2libvirt中域的XML配置文件格式

運行虛擬機有多種方式,例如可以使用“qemu-system-x86”命令來運行虛擬機。另外,還可以使用libvirt的“virsh”命令從XML文件定義來運行虛擬機,可以將qemu-system-x86命令的參數(shù)使用XML直接定義出來,然后libvirt加載并解析該XML配置文件,產(chǎn)生相應(yīng)的QEMU命令,運行虛擬機。libvirt在對虛擬化操作進行管理時采用XML格式的配置文件,其中最主要的就是對虛擬機(即域)的配置管理。1、域的配置在該配置文件中,<!---->中間的內(nèi)容為注釋部分,最外層是<domain>標簽。所有其他的標簽都在<domain>和</domain>之間,表明該配置文件是一個域的配置文件。<domain>標簽有兩個屬性,一個是“type”屬性,一個是“id”屬性?!皌ype”屬性指定運行該虛擬機的Hypervisor,值是具體的驅(qū)動名稱,例如“xen”,“kvm”,“qemu”等。第二個屬性“id”是一個唯一標識虛擬機的唯一整數(shù)標識符,如果不設(shè)置該值,libvirt會按順序分配一個最小的可用id。第7章KVM虛擬機管理應(yīng)用實踐在<domain>標簽內(nèi),有一些通用的域的元數(shù)據(jù),表明當前的域的配置信息。<name></name>標簽內(nèi)為虛擬機的簡稱,只能由數(shù)字、字母組成,并且在一臺主機內(nèi)名稱要唯一。name屬性定義的虛擬機的名字在使用virsh進行管理時使用。<uuid></uuid>標簽內(nèi)為虛擬機的全局唯一標識符,在同一個宿主機上,各個客戶機的名稱和uuid都必須是唯一的。<name></name>標簽和<uuid></uuid>標簽都屬于<domain></domain>的元數(shù)據(jù)。除此之外,還有其他的元數(shù)據(jù)標簽,例如<title>、<description>和<metadata>等。第7章KVM虛擬機管理應(yīng)用實踐2、內(nèi)存,CPU,啟動順序等配置<memoryunit='KiB'></memory>標簽內(nèi)內(nèi)容表示客戶機最大可使用的內(nèi)容,“unit”屬性表示使用的單位是“KiB”,即KB,因此,內(nèi)存大小為1048576KB,即1GB。<currentMemory></currentMemory>標簽內(nèi)內(nèi)容表示啟動時分配給客戶機使用的內(nèi)存,這里,大小也是1GB。在使用QEMU時,一般將兩者設(shè)置為相同的值。<vcpu></vcpu>標簽內(nèi)表示客戶機中vCPU的個數(shù),這里為兩個。第7章KVM虛擬機管理應(yīng)用實踐<os></os>標簽內(nèi)定義客戶機系統(tǒng)類型及客戶機硬盤和光盤的啟動順序。其中<type>標簽的配置表示客戶機類型是“hvm”類型。<features></features>標簽內(nèi)定義Hypervisor對客戶機特定的CPU或者是其他硬件的特性的打開和關(guān)閉。這里打開了ACPI、APIC、PAE等特性。<clock></clock>標簽定義時鐘設(shè)置,客戶機的時鐘通常由宿主機的時鐘進行初始化。<on_poweroff>destroy</on_poweroff>,<on_reboot>restart</on_reboot>和<on_crash>destroy</on_crash>都是libvirt配置文件中對事件的配置。第7章KVM虛擬機管理應(yīng)用實踐3、設(shè)備配置<devices></device>標簽內(nèi)放置著客戶機所有的設(shè)備配置。最外層是<device>標簽,標簽內(nèi)放置該設(shè)備的具體信息。<name>標簽指明該設(shè)備的名字,由字母、數(shù)字和下劃線組成。<capability>標簽定義節(jié)點所具有的能力,它的“type”屬性指明設(shè)備類型,設(shè)備的類型決定了該標簽的子標簽。<emulator></emulator>標簽內(nèi)容放置使用的設(shè)備模型模擬器的絕對路徑。本例中的絕對路徑為“/usr/bin/kvm”。<disk>標簽表示對域的存儲配置,示例中是對客戶機的磁盤的配置。第7章KVM虛擬機管理應(yīng)用實踐4、其他配置<inputtype='tablet'bus='usb'/>表示提供tablet這種類型的設(shè)備,讓光標可以在客戶機獲取絕對的位置定位。<inputtype='mouse'bus='ps2'/>表示會讓QEMU模擬PS2接口的鼠標。<graphics></graphics>標簽內(nèi)放置連接到客戶機的圖形顯示方式的配置?!皌ype='vnc'”表示通過VNC的方式連接到客戶機,type類型的值可以是“sdl”、“vnc”、“rdp”或者是“desktop”。第7章KVM虛擬機管理應(yīng)用實踐<video></video>標簽內(nèi)放置的是顯卡配置,對于<modeltype='cirrus'vram='9216'heads='1'/>。<memballoonmodel='virtio'></memballoon>標簽放置內(nèi)存的ballooning相關(guān)的配置,即客戶機的內(nèi)存氣球設(shè)備?!癿odel='virtio'”屬性表示使用virtio-balloon驅(qū)動實現(xiàn)客戶機的ballooning調(diào)節(jié)。<addresstype='pci'domain='0x0000'bus='0x00'slot='0x04'function='0x0'/>表示該設(shè)備在客戶機中的PCI設(shè)備編號值。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐7.2.3libvirtAPI使用示例libvirtAPI本身用C語言實現(xiàn),提供了一套管理虛擬機的應(yīng)用程序接口。本書以C語言為例,給出libvirtAPI的使用示例。使用libvirtAPI進行虛擬化管理時,首先需要建立一個到虛擬機監(jiān)控器Hypervisor的連接,有了到Hypervisor的連接,才能管理節(jié)點、節(jié)點上的域等信息。

1、建立到Hypervisor的連接libvirt連接可以使用簡單的客戶端-服務(wù)器端的架構(gòu)模式。服務(wù)器端運行著Hypervisor,客戶端通過libvirt連接服務(wù)器端的Hypervisor來實現(xiàn)虛擬化的管理。以本書為例,在基于QEMU-KVM的虛擬化解決方案中,不管是基于libvirt的本地虛擬化的管理還是遠程虛擬化的管理,在服務(wù)器端,一方面需要運行Hypervisor,另一方面還需要運行l(wèi)ibvirtd這個守護進程。第7章KVM虛擬機管理應(yīng)用實踐(1)使用libvirt連接本地的Hypervisor時,URI的一般格式如下:driver[+transport]:///[path][?extral-param]連接QEMU有兩種方式,一種是系統(tǒng)范圍內(nèi)的特權(quán)驅(qū)動(“system”實例),一種是用戶相關(guān)的無特權(quán)驅(qū)動(“session”實例)。常用的本地連接QEMU的URI如下:qemu:///systemqemu:///session第7章KVM虛擬機管理應(yīng)用實踐(2)使用libvirt連接遠程的Hypervisor時,URI的一般格式如下:driver[+transport]:///[user@][host][:port]/[path][?extral-param]在進行遠程連接時,也有system和session兩種連接方式。例如“qemu+ssh://root@?/system”表示,通過ssh連接遠程節(jié)點的QEMU,以root用戶連接名為“”的主機,以“system”實例方式建立連接。第7章KVM虛擬機管理應(yīng)用實踐(3)使用URI建立連接:通過libvirt建立到Hypervisor的連接時需要使用URI。URI標識相對復(fù)雜些,當管理多個節(jié)點時,使用很多的URI連接不太容易記憶,可以在libvirt的配置文件libvirt.conf中,為URI指定別名。例如“hail=qemu+ssh://root@/system”中用“hail”這個別名即可。第7章KVM虛擬機管理應(yīng)用實踐2、使用libvirtAPI查詢某個域的信息對虛擬機進行管理操作,大部分的內(nèi)容是對各個節(jié)點上的域的管理。在libvirtAPI中有很多對域管理的函數(shù),要對域進行管理時,需要得到virDomainPtr這個類型的變量。在getInfo()函數(shù)中,首先定義一個virDomainPtr變量dom,然后使用getConn()函數(shù)得到一個virConnectPtr類型的到Hypervisor的連接conn,然后使用virDomainLookupByID()函數(shù)得到一個virDomainPtr的值賦給dom用于對域進行管理。第7章KVM虛擬機管理應(yīng)用實踐intvirDomainGetInfo(virDomainPtrdomain,virDomainInfoPtrinfo)函數(shù)會將virDomainPtr指定的域的信息放置在virDomainInfo中。virDomainInfo是一個結(jié)構(gòu)體,其中,state屬性表示域的運行狀態(tài),是virDomainState中的一個值。maxMem屬性表示分配的最大內(nèi)存,單位是KB。memory屬性表示該域使用的內(nèi)存,單位也是KB。nrVirtCpu屬性表示為該域分配的虛擬CPU個數(shù)。第7章KVM虛擬機管理應(yīng)用實踐3、編譯運行l(wèi)ibvirt-conn.c并使用virsh查看當前節(jié)點情況在使用virsh啟動demo.xml定義的虛擬機后,可以在libvirt-conn.c的代碼中查詢已經(jīng)啟動的域(即虛擬機)的信息。將libvirt-conn.c文件使用gcc編譯為可執(zhí)行文件libvirt-conn,然后執(zhí)行該文件即可看到demo.xml文件定義的虛擬機的信息。使用virsh查看虛擬機的相關(guān)信息,“domiddemo”命令表示通過虛擬機的name屬性查看虛擬機的id編號?!癲omname2”命令表示通過虛擬機的id編號查看其name屬性。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐圖7-6demo虛擬機的界面第7章KVM虛擬機管理應(yīng)用實踐7.3virt-managervirt-manager是一個由紅帽公司發(fā)起,全名為VirtualMachineManager的開源虛擬機管理程序。virt-manager是用Python編寫的GUI程序,底層使用了libvirt對各類Hypervisor進行管理。virt-manager雖是一個基于libvirt的虛擬機管理應(yīng)用程序,主要用于管理KVM虛擬機,但是也能管理Xen等其他Hypervisor。virt-manager提供了圖形化界面來管理KVM虛擬機,可以管理多個宿主機上的虛擬機,但是宿主機上必須安裝libvirt。virt-manager通過豐富直觀的界面給用戶提供了方便易用的虛擬化管理功能,包括:(1)創(chuàng)建、編輯、啟動或停止虛擬機。(2)查看并控制每個虛擬機的控制臺。(3)查看每部虛擬機的性能以及使用率。(4)查看每部正在運行中的虛擬機以及主控端的實時性能及使用率信息。第7章KVM虛擬機管理應(yīng)用實踐第7章KVM虛擬機管理應(yīng)用實踐7.3.1virt-manager的編譯和安裝源代碼下載后,首先解壓縮,然后進入到解壓縮目錄,執(zhí)行命令“./configure”,“make”,“makeinstall”進行配置、編譯和安裝。virt-manager的源代碼使用了版本管理工具git進行管理,在git的代碼倉庫中也可以下載virt-manager的源代碼,然后進行安裝。使用git工具下載virt-manager的源碼時的地址為:git:///virt-manager.git。第7章KVM虛擬機管理應(yīng)用實踐7.3.2virt-manager的使用1、在ubuntu中打開virt-manager在Ubuntu14.04中使用virt-manager非常方便,可以在Ubuntu的圖形界面中打開,在桌面左上角“searchyourcomputerandonlinesources”,點開后,在搜索框中輸入“virt”即可在下方看到“VirtualMachineManager”即virt-manager的圖標,鼠標點擊即可,如圖7-7和7-8所示。第7章KVM虛擬機管理應(yīng)用實踐圖7-7在Ubuntu圖形界面中打開virt-manager(步驟一)第7章KVM虛擬機管理應(yīng)用實踐圖7-8在Ubuntu圖形界面中打開virt-manager(步驟二)第7章KVM虛擬機管理應(yīng)用實踐2、在virt-manager中創(chuàng)建客戶機在圖7-9中的virt-manager管理界面中,創(chuàng)建一個客戶機,可以點擊左上角的電腦小圖標,也可以將鼠標放置在“l(fā)ocalhost(QEMU)”上右鍵,點擊里面的“New”選項創(chuàng)建客戶機。將鼠標放置在“l(fā)ocalhost(QEMU)”上右鍵,會出現(xiàn)一個提示“qemu:///system”,這就是默認的本地連接QEMU的URI。第7章KVM虛擬機管理應(yīng)用實踐圖7-9virt-manager的管理界面第7章KVM虛擬機管理應(yīng)用實踐圖7-10virt-manager中創(chuàng)建虛擬機(步驟一)第7章KVM虛擬機管理應(yīng)用實踐圖7-11virt-manager中創(chuàng)建虛擬機(步驟二)第7章KVM虛擬機管理應(yīng)用實踐圖7-12virt-manager中創(chuàng)建虛擬機(步驟三)第7章KVM虛擬機管理應(yīng)用實踐圖7-13virt-manager中創(chuàng)建虛擬機(步驟四)第7章KVM虛擬機管理應(yīng)用實踐圖7-14virt-manager中創(chuàng)建虛擬機ubuntu第7章KVM虛擬機管理應(yīng)用實踐在圖7-14的界面左上角,將鼠標放置在“”圖標上,提示信息為“Showvirtualhardwaredetails”,點擊該圖標,可以看到如圖7-15所示的創(chuàng)建的Ubuntu虛擬機的詳細配置信息。在該配置信息中,包括對客戶機的名稱、描述信息、處理器、內(nèi)存、磁盤、網(wǎng)卡、鼠標、聲卡、顯卡等許多信息的配置,這些詳細的配置信息都寫在/etc/libvirt/qemu/demo-v.xml配置文件中。如果對運行中的客戶機進行配置信息的修改,配置并不能立即生效,只有重啟虛擬機后才能生效。第7章KVM虛擬機管理應(yīng)用實踐圖7-15虛擬機ubuntu的詳細配置信息第7章KVM虛擬機管理應(yīng)用實踐3、在virt-manager中管理客戶機在圖7-16中,處于運行狀態(tài)的虛擬機的顯示為“Running”,點擊“Open”圖標打開虛擬機窗口界面,點擊圖標啟動虛擬機?!啊眻D標后有幾個選項,包括“Reboot”“ShutDown”“ForceReset”“ForceOff”和“Save”。點擊“ShutDown”進行虛擬機的正常關(guān)閉,使用“ForceOff”進行虛擬機的強制關(guān)機,一般盡量避免使用“ForceOff”來強制關(guān)機。點擊“Save”保存當前客戶機的運行狀態(tài)。第7章KVM虛擬機管理應(yīng)用實踐4、建立一個新的連接在默認情況下,啟動virt-manager時會自動連接本地的Hypervisor。由于virt-manager是基于libvirt的,因此在啟動virt-manager時,如果libvirt的守護進程沒有啟動,會有連接錯誤的提示。第7章KVM虛擬機管理應(yīng)用實踐圖7-17virt-manager連接錯誤第7章KVM虛擬機管理應(yīng)用實踐通過virt-manager的菜單“File”→“AddConnection”可以在virt-manager中建立一個本地或者遠程Hypervisor的連接。在圖7-18中,選擇Hypervisor的類型,類型包括Xen、QEMU/KVM和LXC(LinuxContainers),如果要連接遠程主機,勾選“Connecttoremotehost”選項框,選擇使用的遠程連接方式,遠程連接方式包括SSH、TCP和TLS,填上連接遠程主機時使用的用戶名,指定遠程主機的主機名或IP地址,然后點擊“Connect”按鈕即可。第7章KVM虛擬機管理應(yīng)用實踐圖7-18增加一個連接第7章KVM虛擬機管理應(yīng)用實踐圖7-19virt-manager管理本地和遠程主機的虛擬機第7章KVM虛擬機管理應(yīng)用實踐7.4MarvelSkyMarvelSky是北京奇觀科技有限責任公司的一個商業(yè)產(chǎn)品,作為一個虛擬化管理平臺,MarvelSky主要用于管理客戶機、模板、用戶等操作。MarvelSky的前身是TinyCloud,MarvelSky作為TinyCloud的一個成熟版本,進行了商業(yè)化運作。MarvelSky包括其前身TinyCloud,是由北京奇觀科技有限責任公司研發(fā)的,該公司的研發(fā)團隊由南陽理工學院軟件學院的王耀寬老師及部分師生組成。第7章KVM虛擬機管理應(yīng)用實踐它主要包括以下功能:(1)虛擬機管理:虛擬機快速創(chuàng)建、刪除、啟動、關(guān)閉等功能;虛擬機資源信息的實時動態(tài)顯示、查看;靈活地增加、刪除系統(tǒng)附屬磁盤。(2)模板管理:鏡像模板的上傳、刪除。(3)用戶管理:用戶的創(chuàng)建、綁定虛擬機、權(quán)限管控;管理員一鍵設(shè)置選定用戶USB權(quán)限,系統(tǒng)恢復(fù);(4)管理控制:可定義和配置動態(tài)集群和應(yīng)用路由控制節(jié)點的各種相關(guān)參數(shù),包括運行時的動態(tài)集群需要遵循的各種策略,并可監(jiān)控該環(huán)境的運行狀態(tài)。第7章KVM虛擬機管理應(yīng)用實踐7.4.1MarvelSky后臺程序的配置和安裝MarvelSky分為后臺程序和管理平臺兩部分,后臺程序在服務(wù)器上運行,管理平臺在PC機上運行。由于管理平臺在普通PC機上可直接運行,因此,本小節(jié)介紹的是MarvelSky后臺程序的安裝。安裝MarvelSky大致分為五步,分別是QEMU的安裝、libvirt的安裝、libevent的安裝、MySQL的安裝配置和MarvelSky云平臺軟件的安裝。第7章KVM虛擬機管理應(yīng)用實踐1、編譯安裝QEMU由于MarvelSky需要QEMU的支持,因此首先需要編譯安裝QEMU。而官方QEMU的版本由于MarvelSky的研發(fā)團隊對QEMU進行的二次開發(fā),并不可直接使用,需要安裝特定版本的QEMU,本小節(jié)所指的QEMU,如無特別說明,均指二次開發(fā)后的特定版本的QEMU,非官方QEMU版本。由于該版本的QEMU涉及北京奇觀科技有限責任公司的商業(yè)機密,故在此只提供演示,并不提供該版本QEMU的源碼下載。第7章KVM虛擬機管理應(yīng)用實踐安裝QEMU和普通的Linux軟件安裝類似,大致分為如下四步:(1)把QEMU源碼包qemu-2.2.0-1212.tar.gz拷貝到服務(wù)器中,本書的示例中把QEMU放置在“/root/xjy/qemu”目錄下;(2)使用命令“tarzxvfqemu-2.2.0-1212.tar.gz”解壓源碼包。解壓完成后在當前目錄中出現(xiàn)名為“qemu-2.2.0-1212”的目錄;(3)在安裝QEMU之前需要先安裝其依賴的軟件包;(4)配置編譯安裝QEMU。第7章KVM虛擬機管理應(yīng)用實踐2、libvirt的編譯安裝(1)將libvirt源碼包拷貝到服務(wù)器(宿主機)上合適的目錄中。(2)解壓源碼包。(3)安裝依賴的軟件包,軟件包名稱如下:apt-getinstalllibyajl-devapt-getinstalllibxml2-devlibdevmapper-devapt-getinstalllibpciaccess-devlibnl-devuuid-dev(4)利用“./configure”“make”“makeinstall”命令進行配置、編譯、安裝。第7章

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論