




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
云計(jì)算虛擬化技術(shù)基礎(chǔ)與實(shí)踐
KVM及QEMU虛擬化應(yīng)用實(shí)踐目錄CONTENT01.Libvirt02.Virt-Manager03.基于Libvirt的配置與開(kāi)發(fā)04.KVM及QEMU虛擬化應(yīng)用案例本章重點(diǎn)掌握Libvirt的安裝和使用。掌握Virsh中的常用命令。掌握Virt-Manager的安裝和使用。理解Libvirt域的XML配置文件。熟悉常用的Libvirt的API。掌握使用LibvirtAPI進(jìn)行虛擬化管理的基本操作。掌握輕量級(jí)虛擬機(jī)管理系統(tǒng)的應(yīng)用開(kāi)發(fā)。LibvirtLibvirt簡(jiǎn)介L(zhǎng)ibvirt的yum安裝libvirtd進(jìn)程Virsh的常用命令011.Libvirt簡(jiǎn)介L(zhǎng)ibvirt包含一個(gè)守護(hù)進(jìn)程和一個(gè)管理工具,不僅能提供對(duì)虛擬機(jī)的管理,也提供了對(duì)虛擬化網(wǎng)絡(luò)和存儲(chǔ)的管理??梢哉f(shuō),Libvirt是一個(gè)軟件集合,便于使用者管理虛擬機(jī)和使用其他虛擬化功能,比如存儲(chǔ)和網(wǎng)絡(luò)虛擬化管理等等。Libvirt的主要目標(biāo)是提供一種統(tǒng)一的方式,管理多種不同的虛擬化提供方式和Hypervisor。當(dāng)前主流Linux平臺(tái)上常用的虛擬化管理工具Virt-Manager,Virsh,Virt-Install等都是基于Libvirt開(kāi)發(fā)而成。Libvirt支持多種不同的Hypervisor,針對(duì)不同的Hypervisor,Libvirt提供了不同的驅(qū)動(dòng),有對(duì)Xen的驅(qū)動(dòng),有對(duì)QEMU的驅(qū)動(dòng),有對(duì)VMware的驅(qū)動(dòng)。Libvirt屏蔽了底層各種Hypervisor的細(xì)節(jié),對(duì)上層管理工具提供了一個(gè)統(tǒng)一的、穩(wěn)定的API。因此,通過(guò)Libvirt這個(gè)中間適配層,用戶空間的管理工具可以管理多種不同的Hypervisor及其上運(yùn)行的虛擬客戶機(jī)。1.Libvirt簡(jiǎn)介節(jié)點(diǎn)、Hypervisor和域之間的關(guān)系Libvirt中有幾個(gè)重要的概念,一個(gè)是節(jié)點(diǎn),一個(gè)是Hypervisor,一個(gè)是域。1.節(jié)點(diǎn)(Node)通常指一個(gè)物理機(jī)器,在這個(gè)物理機(jī)上通常運(yùn)行著多個(gè)虛擬客戶機(jī)。2.Hypervisor通常指VMM(VirtualMachineManager),例如KVM,Xen,VMware,Hyper-V等。3. 域(Domain),指的是在Hypervisor上運(yùn)行的一個(gè)虛擬機(jī)操作系統(tǒng)實(shí)例。1.Libvirt簡(jiǎn)介L(zhǎng)ibvirt的主要功能包括:1.虛擬機(jī)管理:對(duì)節(jié)點(diǎn)上的各虛擬機(jī)生命周期的管理,比如啟動(dòng)、停止、暫停、保存、恢復(fù)和遷移;也支持對(duì)多種設(shè)備類型的熱插拔操作,包括:磁盤、網(wǎng)卡、內(nèi)存和CPU等。2.遠(yuǎn)程節(jié)點(diǎn)的管理:只要物理節(jié)點(diǎn)上運(yùn)行了Libvirtdaemon(Libvirt守護(hù)進(jìn)程),那么,遠(yuǎn)程節(jié)點(diǎn)上的管理程序就可以連接到該節(jié)點(diǎn),然后進(jìn)行管理操作,所有的Libvirt功能就都可以訪問(wèn)和使用。3.存儲(chǔ)管理:創(chuàng)建不同格式的文件映像(qcow2、vmdk、raw等)、掛接NFS共享、列出現(xiàn)有的LVM卷組、創(chuàng)建新的LVM卷組和邏輯卷、對(duì)未處理過(guò)的磁盤設(shè)備分區(qū)、掛接iSCSI共享等等。1.Libvirt簡(jiǎn)介L(zhǎng)ibvirt的主要功能包括:4.網(wǎng)絡(luò)接口管理:任何運(yùn)行了Libvirtdaemon的主機(jī),都可以通過(guò)Libvirt管理物理和邏輯的網(wǎng)絡(luò)接口??梢粤谐霈F(xiàn)有的網(wǎng)絡(luò)接口卡,配置網(wǎng)絡(luò)接口、創(chuàng)建虛擬網(wǎng)絡(luò)接口,以及創(chuàng)建網(wǎng)絡(luò)橋接,進(jìn)行VLAN管理等。5.虛擬NAT和基于路由的網(wǎng)絡(luò):任何運(yùn)行了Libvirtdaemon的主機(jī),都可以通過(guò)Libvirt管理和創(chuàng)建虛擬網(wǎng)絡(luò)。Libvirt虛擬網(wǎng)絡(luò)使用防火墻規(guī)則作為路由器,讓虛擬機(jī)可以透明訪問(wèn)主機(jī)的網(wǎng)絡(luò)。1.Libvirt簡(jiǎn)介L(zhǎng)ibvirt架構(gòu)Libvirt概括起來(lái)包括一個(gè)應(yīng)用程序編程接口庫(kù)(API庫(kù))、一個(gè)daemon(libvirtd守護(hù)進(jìn)程)和一個(gè)命令行工具(Virsh)。API庫(kù)為其他的虛擬機(jī)管理工具提供編程的程序接口庫(kù)。libvirtd負(fù)責(zé)對(duì)節(jié)點(diǎn)上的域進(jìn)行監(jiān)管,在使用其他工具管理節(jié)點(diǎn)上的域時(shí),libvirtd需要一直在運(yùn)行狀態(tài)。Virsh是Libvirt默認(rèn)給定的一個(gè)對(duì)虛擬機(jī)進(jìn)行管理的命令行工具。2.Libvirt的yum安裝在CentOS中可以使用yum命令安裝Libvirt。Libvirt的官方網(wǎng)站是/。2.Libvirt的yum安裝注意事項(xiàng):在使用Libvirt前需要確保機(jī)器已開(kāi)啟硬件虛擬化,KVM內(nèi)核模塊已加載,QEMU已安裝。[root@localhost~]#yuminstallLibvirt[root@localhost~]#whichlibvirtd/usr/sbin/libvirtd[root@localhost~]#libvirtd--versionlibvirtd(libvirt)4.5.0[root@localhost~]#whichvirsh/usr/bin/virsh[root@localhost~]#virsh--version4.5.0[root@localhost~]#servicelibvirtdstatus3.libvirtd進(jìn)程01020304Libvirt的客戶端工具(包括virsh、virt-manager等)可以連接到本地或遠(yuǎn)程的libvirtd進(jìn)程,用于管理節(jié)點(diǎn)上的客戶機(jī)狀態(tài),包括啟動(dòng)、關(guān)閉、重啟、遷移等,收集節(jié)點(diǎn)上的宿主機(jī)和客戶機(jī)的配置和資源使用狀態(tài)。libvirtd是Libvirt虛擬化管理工具的服務(wù)器端的守護(hù)程序。libvirtd負(fù)責(zé)執(zhí)行其他管理工具發(fā)送給它的虛擬化管理操作指令。對(duì)libvirtd常用的操作方式有“{start|stop|restart|try-restart|reload|force-reload|status}”在CentOS7中l(wèi)ibvirtd作為一個(gè)服務(wù)(service)配置在系統(tǒng)中的,可以通過(guò)service命令來(lái)對(duì)其進(jìn)行操作。4.Virsh的常用命令Virsh通過(guò)調(diào)用LibvirtAPI來(lái)實(shí)現(xiàn)虛擬化的管理,是一個(gè)完全在命令行文本模式下運(yùn)行的工具,系統(tǒng)管理員可以通過(guò)腳本程序方便的進(jìn)行虛擬化的自動(dòng)部署和管理。Libvirt在安裝時(shí)會(huì)自動(dòng)安裝一個(gè)SHELL工具Virsh。Virsh是一個(gè)虛擬化管理工具,是一個(gè)用于管理虛擬化環(huán)境中客戶機(jī)和Hypervisor的命令行工具。4.Virsh的常用命令Virsh命令行工具非常強(qiáng)大,功能非常豐富,它可以全生命周期的管理KVM虛擬化,比如創(chuàng)建虛擬機(jī),查看虛擬機(jī),動(dòng)態(tài)熱插拔硬盤,給虛擬機(jī)做快照,遷移、啟動(dòng)、停止、掛起、暫停、刪除虛擬機(jī)等操作。Virsh管理虛擬化操作時(shí),可以使用兩種工作模式,一種是交互模式,直接連接到相應(yīng)的Hypervisor上,在命令行輸入virsh命令執(zhí)行操作并查看返回結(jié)果,使用“quit”命令退出連接;另外一種是非交互模式,在終端輸入一個(gè)virsh命令,建立到指定URI的一個(gè)連接,執(zhí)行完成后將結(jié)果返回到當(dāng)前的終端并同時(shí)斷開(kāi)連接。4.Virsh的常用命令1.基本命令virshlist#獲取當(dāng)前節(jié)點(diǎn)上所有域的列表virshconsole<ID>#連接到一個(gè)域上。virshdomid<Name|UUID>#根據(jù)名稱或UUID返回域的ID值virshdomname<ID|UUID>#根據(jù)ID或UUID返回域的名稱virshdomstat<[ID|Name|UUID]>#獲取一個(gè)域的運(yùn)行狀態(tài)virshdominfo<ID>#獲取一個(gè)域的基本信息pwd#打印當(dāng)前位置cd<NewDir>#進(jìn)入到某一個(gè)目錄下quit|exit#退出4.Virsh的常用命令2.定義和創(chuàng)建、關(guān)閉、暫停域virshdefine<VM.xml>#定義一個(gè)VM域,使其永久有效,并可使用start來(lái)啟動(dòng)VM。VM.xml會(huì)被復(fù)制一份到/etc/libvirt/qemu/下。virshcreate<VM.xml>#它可通過(guò)VM.xml來(lái)啟動(dòng)臨時(shí)VMvirshsuspend<ID>#在內(nèi)存掛起一臺(tái)VMvirshresume<ID>#喚醒一臺(tái)VMvirshsave<ID><file.img>#類似于VMware上的暫停,并保存內(nèi)存數(shù)據(jù)到image文件。virshrestore<file.img>#重新載入暫停的VMvirshstart<VMName>#重新啟動(dòng)managedsave保存的VMvirshshutdown<ID>#關(guān)閉虛擬機(jī)virshreboot<ID>#重新啟動(dòng)虛擬機(jī)virshreset<ID>#強(qiáng)制重啟虛擬機(jī)virshdestroy<ID>#刪除一個(gè)虛擬機(jī)virshundefine<VM.xml>#取消定義的虛擬機(jī)4.Virsh的常用命令3.快照管理virshsnapshot-create<VMName|xxx.xml>#創(chuàng)建一個(gè)VM快照virshsnapshot-list<VMName>#顯示當(dāng)前VM的所有快照virshsnapshot-edit<VMName><SnapName>#編輯指定的快照virshsnapshot-delete<VMName><SnapName>#刪除指定的快照virshsnapshot-info<VMName><SnapName>#顯示快照的詳情4.Virsh的常用命令5.VM磁盤管理virshdomblklist<VMName>#顯示VM當(dāng)前連接的塊設(shè)備virshdomblkinfo<VMName></path/to/img.img>#顯示img.img的容量信息。virshdomblkstat<VMName>[--human]</path/to/img.img>#顯示img.img的讀寫(xiě)等信息的統(tǒng)計(jì)結(jié)果4.網(wǎng)絡(luò)及接口管理virshdomiflist<VMName>#顯示VM的接口信息virshiface-list#顯示物理主機(jī)的網(wǎng)絡(luò)接口列表virshnet-dumpxml<NetName|UUID>#導(dǎo)出一份xml格式的虛擬網(wǎng)絡(luò)配置信息virshnet-create<net.xml>#根據(jù)網(wǎng)絡(luò)xml配置信息文件創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò)4.Virsh的常用命令7.內(nèi)存相關(guān)virshdommemstat<ID>#獲取一個(gè)VM內(nèi)存使用情況統(tǒng)計(jì)信息。virshsetmem<ID><MemSize>#設(shè)置一個(gè)VM的內(nèi)存大小(默認(rèn)單位:KB)virshfreecell#顯示當(dāng)前MUMA單元的可用空閑內(nèi)存virshnodememstats<cell>#顯示VM的(某個(gè))內(nèi)存單元使用情況的統(tǒng)計(jì)6.vCPU相關(guān)virshvcpinfo<ID>#查看指定ID的域的vCPU信息virshvcppin<ID><vCPU><pCPU>#將一個(gè)VM的vCPU綁定到指定的物理核心上virshsetvcpus<ID><vCPU-Num>#設(shè)置一個(gè)VM的最多vCPU個(gè)數(shù)virshnodecpustats<CPU-Num>#顯示VM(某個(gè))CPU使用情況的統(tǒng)計(jì)4.Virsh的常用命令8.其它virshdumpxml<ID>#顯示一個(gè)運(yùn)行中的VM的xml格式的配置信息.virshversion#顯示libvirt和Hypervisor的版本信息virshsysinfo#以xml格式打印宿主機(jī)的系統(tǒng)信息virshnodeinfo#顯示當(dāng)前連接節(jié)點(diǎn)的基本信息virshuri#顯示當(dāng)前連接節(jié)點(diǎn)的URIvirshhostname#顯示當(dāng)前主機(jī)名virshconnect<URI>#連接到URI指定的Hypervisorvirshqemu-monitor-commanddomain[--hmp]CMD#直接向Qemumonitor中發(fā)送命令。Virt-ManagerVirt-Manager的yum安裝Virt-Manager的使用02Virt-ManagerVirt-Manager是一個(gè)由紅帽公司發(fā)起,全名為VirtualMachineManager的開(kāi)源虛擬機(jī)管理程序。Virt-Manager是用Python編寫(xiě)的GUI程序,底層使用了Libvirt對(duì)各類Hypervisor進(jìn)行管理。Virt-Manager主要用于管理基于KVM的虛擬機(jī),但是也能管理基于Xen等其他Hypervisor的虛擬機(jī)。Virt-Manager提供了圖形化界面來(lái)管理KVM的虛擬機(jī),可以同時(shí)管理多個(gè)宿主機(jī)上的虛擬機(jī),前提是宿主機(jī)上必須安裝Libvirt。Virt-ManagerVirt-Manager通過(guò)豐富直觀的界面給用戶提供了方便易用的虛擬化管理功能,包括:創(chuàng)建、編輯、啟動(dòng)或停止虛擬機(jī);查看并控制每個(gè)虛擬機(jī)的控制臺(tái);查看每部虛擬機(jī)的性能以及使用率;查看每部正在運(yùn)行中的虛擬機(jī)以及主控端的實(shí)時(shí)性能及使用率信息;不論是在本機(jī)或遠(yuǎn)程,皆可使用KVM、Xen、QEMU。Virt-Manager支持絕大部分Hypervisor,并且可以連接本地和網(wǎng)絡(luò)上的Hypervisor。用戶在Virt-Managerr中使用圖形界面做的配置會(huì)被轉(zhuǎn)為L(zhǎng)ibvirt中的XML格式的配置文件,保存在Libvirt相關(guān)目錄下。使用Virt-Manager生成Libvirt中虛擬機(jī)的配置文件是一個(gè)不錯(cuò)的選擇。1.Virt-Manager的yum安裝Virt-Manager的官方網(wǎng)站是/,在CentOS中使用“yuminstallvirt-manager”安裝即可。2.Virt-Manager的使用在CentOS中打開(kāi)Virt-Manager在CentOS中使用Virt-Manager非常方便,安裝Virt-Manager后,在“Applications”的“SystemTools”中可以看到“VirtualMachineManager”的圖標(biāo),鼠標(biāo)點(diǎn)擊即可。Virt-Manager應(yīng)用2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)在Virt-Manager管理界面中,將鼠標(biāo)放置在“QEMU/KVM”上雙擊,會(huì)打開(kāi)界面“QEMU/KVMConnectionDetails”界面。點(diǎn)擊左上角的電腦小圖標(biāo),也可以將鼠標(biāo)放置在“QEMU/KVM”上右鍵,點(diǎn)擊里面的“New”選項(xiàng)創(chuàng)建虛擬機(jī)。2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)在客戶機(jī)創(chuàng)建成功后,Virt-Manager會(huì)在/etc/libvirt/qemu路徑下生成一個(gè)名稱為“ubuntu16.04.xml”的XML配置文件,文件名即為創(chuàng)建的虛擬機(jī)名稱ubuntu16.04,該配置文件配置了虛擬機(jī)的所有配置信息2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)虛擬機(jī)啟動(dòng)后界面如下所示。使用“cirros”用戶名,“cubswin:)”密碼登錄后,可以正常使用該系統(tǒng)。2.Virt-Manager的使用2.在Virt-Manager中創(chuàng)建虛擬機(jī)虛擬機(jī)ubuntu16.04的詳細(xì)配置信息2.Virt-Manager的使用3.在Virt-Manager中管理虛擬機(jī)處于運(yùn)行狀態(tài)的虛擬機(jī)的狀態(tài)為“Running”,點(diǎn)擊“Open”圖標(biāo)打開(kāi)虛擬機(jī)窗口界面,點(diǎn)擊圖標(biāo)啟動(dòng)虛擬機(jī)。圖標(biāo)“”后有幾個(gè)選項(xiàng),包括“Reboot”、“ShutDown”、“ForceReset”、“ForceOff”和“Save”。點(diǎn)擊“ShutDown”進(jìn)行虛擬機(jī)的正常關(guān)閉,使用“ForceOff”進(jìn)行虛擬機(jī)的強(qiáng)制關(guān)機(jī),一般盡量避免使用“ForceOff”來(lái)強(qiáng)制關(guān)機(jī)。點(diǎn)擊“Reboot”進(jìn)行虛擬機(jī)的正常重啟,點(diǎn)擊“ForceReset”強(qiáng)制重啟,點(diǎn)擊“Save”會(huì)保存當(dāng)前客戶機(jī)的運(yùn)行狀態(tài)。2.Virt-Manager的使用4.建立一個(gè)新的連接通過(guò)Virt-Manager的菜單“File”中的“AddConnection”,可以在Virt-Manager中建立一個(gè)本地或者遠(yuǎn)程Hypervisor的連接。Virt-Manager管理本地和遠(yuǎn)程主機(jī)的虛擬機(jī)基于Libvirt的配置與開(kāi)發(fā)Libvirt的配置文件Libvirt中域的XML配置文件含義LibvirtAPI簡(jiǎn)介L(zhǎng)ibvirt建立到Hypervisor的連接LibvirtAPI的C語(yǔ)言使用示例LibvirtAPI的Python語(yǔ)言使用示例031.Libvirt的配置文件Libvirt的配置文件默認(rèn)放置在/etc/libvirt目錄下:libvirt.conf配置文件:用于配置常用Libvirt遠(yuǎn)程連接的別名。文件中以“#”號(hào)開(kāi)頭的行為注釋內(nèi)容。libvirtd.conf配置文件是libvirtd守護(hù)進(jìn)程的配置文件,配置了許多l(xiāng)ibvirtd的啟動(dòng)設(shè)置。qemu.conf是Libvirt對(duì)QEMU的配置文件,包括VNC、SPICE的設(shè)置,以及連接它們的權(quán)限認(rèn)證方式的配置,也包括內(nèi)存大頁(yè)、SELinux、Cgroups等相關(guān)配置。qemu目錄:Libvirt使用XML文件對(duì)虛擬機(jī)進(jìn)行配置,其中包括虛擬機(jī)名稱、分配內(nèi)存、vCPU等多種信息,定義、創(chuàng)建虛擬機(jī)等操作都需要XML配置文件的參與。如果底層虛擬化使用QEMU,那么這個(gè)XML配置文件通常放置在Libvirt特定的“qemu”目錄下。2.Libvirt中域的XML配置文件含義1.域的配置最外層是<domain>標(biāo)簽<!---->中間的內(nèi)容為注釋部分。<domain>標(biāo)簽有兩個(gè)屬性,“type”屬性指定運(yùn)行該虛擬機(jī)的Hypervisor,“id”屬性是一個(gè)唯一標(biāo)識(shí)虛擬機(jī)的唯一整數(shù)標(biāo)識(shí)符。<name></name>標(biāo)簽內(nèi)為虛擬機(jī)的簡(jiǎn)稱。<uuid></uuid>標(biāo)簽內(nèi)為虛擬機(jī)的全局唯一標(biāo)識(shí)符。其他的元數(shù)據(jù)標(biāo)簽,例如<title>、<description>和<metadata>等。以8.2.2小節(jié)中的/etc/libvirt/qemu路徑下的ubuntu16.04..xml配置文件為例,介紹該配置文件的含義。2.Libvirt中域的XML配置文件含義2.內(nèi)存,CPU,啟動(dòng)順序等配置<memoryunit=‘KiB’></memory>標(biāo)簽內(nèi)容表示客戶機(jī)最大可使用的內(nèi)存。<currentMemory></currentMemory>標(biāo)簽內(nèi)容表示啟動(dòng)時(shí)分配給客戶機(jī)使用的內(nèi)存。<vcpu></vcpu>標(biāo)簽內(nèi)表示客戶機(jī)中vCPU的個(gè)數(shù)。<os></os>標(biāo)簽內(nèi)定義客戶機(jī)系統(tǒng)類型及客戶機(jī)硬盤和光盤的啟動(dòng)順序。<clock></clock>標(biāo)簽定義時(shí)鐘設(shè)置。<on_poweroff>destroy</on_poweroff>,<on_reboot>restart</on_reboot>和<on_crash>destroy</on_crash>都是libvirt配置文件中對(duì)事件的配置。2.Libvirt中域的XML配置文件含義3.設(shè)備配置<devices></devices>標(biāo)簽內(nèi)放置著客戶機(jī)所有的設(shè)備配置。<emulator></emulator>標(biāo)簽內(nèi)容放置使用的設(shè)備模型模擬器的絕對(duì)路徑。<disk>標(biāo)簽表示對(duì)域的存儲(chǔ)配置。2.Libvirt中域的XML配置文件含義4.網(wǎng)絡(luò)配置<interfacetype=‘network’></interface>標(biāo)簽內(nèi)是對(duì)域的網(wǎng)絡(luò)接口配置。<macaddress='52:54:00:e4:5f:ad'/>用來(lái)配置客戶機(jī)中網(wǎng)卡的MAC地址。<sourcenetwork='default'/>表示網(wǎng)絡(luò)配置方式使用默認(rèn)方式。<modeltype='virtio'/>表示客戶機(jī)中使用的網(wǎng)絡(luò)設(shè)備類型。<addresstype='pci'domain='0x0000'bus='0x00'slot='0x03'function='0x0'/>表示該網(wǎng)卡在客戶機(jī)中的PCI設(shè)備編號(hào)值。2.Libvirt中域的XML配置文件含義5.其他配置<inputtype=‘tablet’bus=‘usb’/>表示提供tablet這種類型的設(shè)備。<inputtype='mouse'bus='ps2'/>表示會(huì)讓QEMU模擬PS2接口的鼠標(biāo)。<inputtype='keyboard'bus='ps2'/>表示會(huì)讓QEMU模擬PS2接口的鍵盤。<graphics></graphics>標(biāo)簽內(nèi)放置連接到客戶機(jī)的圖形顯示方式的配置。<video></video>標(biāo)簽內(nèi)放置的是顯卡配置。<memballoonmodel=‘virtio’></memballoon>標(biāo)簽放置內(nèi)存的ballooning相關(guān)的配置。3.LibvirtAPI簡(jiǎn)介L(zhǎng)ibvirtAPI提供了一系列管理虛擬機(jī)的應(yīng)用程序接口,支持多種語(yǔ)言,最基本最主要的是C語(yǔ)言。LibvirtAPI的官網(wǎng)是/docs.html。在官網(wǎng)中,應(yīng)用開(kāi)發(fā)的API中“APIreference”是C語(yǔ)言的API?!癓anguagebindingandAPImodules”是Libvirt支持的其他語(yǔ)言的API。3.LibvirtAPI簡(jiǎn)介3.LibvirtAPI簡(jiǎn)介1.libvirt-domain:管理Libvirt域的API,提供了一系列以virDomain開(kāi)頭的函數(shù)。2.libvirt-event:管理事件的API,提供了一系列以virEvent開(kāi)頭的函數(shù)。3.libvirt-host:管理宿主機(jī)的API。4.libvirt-network:管理網(wǎng)絡(luò)的API,提供了一系列以virConnect和virNetwork開(kāi)頭的函數(shù)。5.libvirt-nodedev:管理節(jié)點(diǎn)的API,提供了一系列以virNode開(kāi)頭的函數(shù)。6.libvirt-storage:管理存儲(chǔ)池和卷的API,提供了一系列以virStorage開(kāi)頭的函數(shù)。7.libvirt-stream:管理數(shù)據(jù)流的API,提供了一系列以virStream開(kāi)頭的函數(shù)。8.virterror:處理libvirt庫(kù)的錯(cuò)誤處理接口。4.Libvirt建立到Hypervisor的連接1.連接本地Hypervisor使用Libvirt連接本地的Hypervisor時(shí),URI的一般格式如下:driver[+transport]:///[path][?extral-param]其中,“driver”是連接Hypervisor的驅(qū)動(dòng)名稱(如qemu,xen等),本書(shū)中以QEMU為例,因此為qemu?!皌ransport”是連接所使用的傳輸方式(可以為空,也可以為“unix”這樣的值)?!皃ath”是連接到Hypervisor的路徑?!?extral-param”表示額外需添加的參數(shù)。連接QEMU有兩種方式,一種是系統(tǒng)范圍內(nèi)的特權(quán)驅(qū)動(dòng)(“system”實(shí)例),一種是用戶相關(guān)的無(wú)特權(quán)驅(qū)動(dòng)(“session”實(shí)例)。常用的本地連接QEMU的URI如下:qemu:///systemqemu:///session4.Libvirt建立到Hypervisor的連接2.連接遠(yuǎn)程Hypervisor使用Libvirt連接遠(yuǎn)程的Hypervisor時(shí),URI的一般格式如下:driver[+transport]:///[user@][host][:port]/[path][?extral-param]其中,driver和本地連接時(shí)含義一樣。transport表示傳輸方式,取值通常是ssh,tcp等。user表示連接遠(yuǎn)程主機(jī)時(shí)使用的用戶名。host表示遠(yuǎn)程主機(jī)的主機(jī)名或者是IP地址。port表示遠(yuǎn)程主機(jī)的端口號(hào)。path和extral-param和本地連接時(shí)含義一樣。在進(jìn)行遠(yuǎn)程連接時(shí),也有system和session兩種連接方式。4.Libvirt建立到Hypervisor的連接3.使用URI建立連接使用virsh命令的create參數(shù)由demo.xml配置文件創(chuàng)建并啟動(dòng)一個(gè)虛擬機(jī),虛擬機(jī)名稱為demo。使用“virsh-cqemu:///session”來(lái)建立到本地的連接,查看本地運(yùn)行的虛擬機(jī)??梢允褂谩發(fā)ist”命令查看虛擬機(jī),“shutdown虛擬機(jī)名”關(guān)閉虛擬機(jī),“quit”命令退出virsh。5.LibvirtAPI的C語(yǔ)言使用示例編譯運(yùn)行l(wèi)ibvirt-conn.c并使用virsh查看當(dāng)前節(jié)點(diǎn)情況在使用virsh啟動(dòng)demo.xml定義的虛擬機(jī)后,將libvirt-conn.c文件使用gcc編譯為可執(zhí)行文件libvirt-conn,編譯時(shí)需要連接virt庫(kù),然后執(zhí)行該文件即可看到虛擬機(jī)的信息。使用LibvirtAPI查詢某個(gè)域的信息源碼文件名為libvirt-conn.c,在該例子中使用LibvirtAPI查詢某個(gè)域的信息。在該代碼中包含兩個(gè)自定義函數(shù),一個(gè)是virConnectPtrgetConn(),一個(gè)是intgetInfo(intid)。getConn()函數(shù)建立一個(gè)到Hypervisor的連接。getInfo(intid)函數(shù)獲取id為1的客戶機(jī)的信息。5.LibvirtAPI的C語(yǔ)言使用示例使用virsh查看虛擬機(jī)的相關(guān)信息,“domiddemo”命令表示通過(guò)虛擬機(jī)的name屬性查看虛擬機(jī)的ID編號(hào)。“domname1”命令表示通過(guò)虛擬機(jī)的ID編號(hào)查看其name屬性?!癲ominfo1”表示通過(guò)虛擬機(jī)的ID編號(hào)值查看虛擬機(jī)信息。libvirt-conn.c代碼的執(zhí)行結(jié)果和virsh命令下顯示的ID號(hào),運(yùn)行狀態(tài),CPU個(gè)數(shù),最大內(nèi)存,已用內(nèi)存都保持一致。5.LibvirtAPI的C語(yǔ)言使用示例virsh#domiddemo1virsh#domname1demovirsh#dominfo1……[內(nèi)容省略]virsh#shutdowndemoDomaindemoisbeingshutdown注意事項(xiàng):本例是通過(guò)使用LibvirtAPI的C語(yǔ)言程序?qū)VM虛擬機(jī)進(jìn)行查看,虛擬機(jī)通過(guò)Libvirt中的Virsh命令行工具進(jìn)行定義并啟動(dòng)。C語(yǔ)言代碼和Libvirt建立連接,查詢?cè)撨B接中的虛擬機(jī)狀態(tài)信息并打印。demo虛擬機(jī)是由Libvirt生成并管理,因此虛擬機(jī)狀態(tài)信息也可以在Virsh的命令行中進(jìn)行查看。6.LibvirtAPI的Python語(yǔ)言使用示例1.使用LibvirtAPI查詢某個(gè)域的信息自定義函數(shù)createConnection()用來(lái)創(chuàng)建并打開(kāi)到本地的Libvirt連接,連接失敗打印“FailedtoopenconnectiontoQEMU/KVM”,連接成功打印“-----Connectioniscreatedsuccessfully-----”。自定義函數(shù)closeConnection(conn)用來(lái)關(guān)閉連接conn。關(guān)閉成功后打印“Connectionisclosed”。自定義函數(shù)getDomInfoByName(conn,name)用于在連接conn中查詢并打印名稱為name的域信息,包括域的ID號(hào),名稱,運(yùn)行狀態(tài)值,基本信息,最大內(nèi)存值,vCPU的個(gè)數(shù)等。自定義函數(shù)getDomInfoByID(conn,id)用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圍魏救趙教學(xué)教學(xué)課件
- 學(xué)構(gòu)圖課件教學(xué)
- ppp教學(xué)模式課件
- 日語(yǔ)試講教學(xué)課件模板
- 攀枝花市應(yīng)急信息化建設(shè)趨勢(shì)及行業(yè)投資可行性研究報(bào)告
- 古代羅馬教學(xué)課件
- 音標(biāo)教學(xué)課件小學(xué)四年級(jí)
- 教師教學(xué)課件比賽
- 教育懲戒主題班會(huì)課件
- 弈秋 教學(xué)課件
- 除臭系統(tǒng)操作培訓(xùn)
- 2025年南外小升初測(cè)試題及答案
- 幼兒園一日活動(dòng)保教細(xì)則培訓(xùn)
- GB/T 45236-2025化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)規(guī)范
- 瓦楞紙板銷售培訓(xùn)課件
- DBJ04T 432-2022 建設(shè)工程全過(guò)程造價(jià)咨詢標(biāo)準(zhǔn)
- FANUC機(jī)器人ARC Mate 120iD和M-20iD機(jī)械結(jié)構(gòu)手冊(cè)
- 慢病管理中心工作匯報(bào)
- 居間協(xié)議書(shū)居間協(xié)議書(shū)
- 成都鐵路局招聘2025屆高校畢業(yè)生663人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 廣西博物館2025事業(yè)單位招聘通過(guò)歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論