官术网_书友最值得收藏!

2.3 Libvirt技術(shù)介紹

Libvirt是一個(gè)函數(shù)庫(kù),包含實(shí)現(xiàn)Linux虛擬化功能的Linux API,提供了管理虛擬機(jī)的通用的、穩(wěn)定的、統(tǒng)一的接口。其主要包括Libvirt API、Libvirtd進(jìn)程和virsh工具集三部分。

為了便于理解,我們將Libvirt分為三層,從三個(gè)層級(jí)進(jìn)行介紹,具體如下圖所示。

其中,接口層的virsh工具集和Libvirt API負(fù)責(zé)接收程序和用戶的指令;在抽象驅(qū)動(dòng)層,接收上層發(fā)出的指令調(diào)用Libvirt庫(kù)或控制Libvirtd進(jìn)程提供統(tǒng)一的接口;在具體驅(qū)動(dòng)層,調(diào)用底層相應(yīng)的虛擬化技術(shù)接口執(zhí)行操作。

Libvirt可以提供關(guān)于虛擬機(jī)管理的所有API,包括創(chuàng)建、修改、監(jiān)控、控制、遷移和停止虛擬機(jī)。當(dāng)然,并不是所有的虛擬化技術(shù)都支持Libvirt提供這些關(guān)于虛擬機(jī)的操作,但是Libvirt可以提供關(guān)于這些操作的API。任何一個(gè)對(duì)虛擬機(jī)有價(jià)值的操作,Libvirt都會(huì)提供。利用Libvirt可以同時(shí)訪問(wèn)多個(gè)物理主機(jī),但是對(duì)單主機(jī)節(jié)點(diǎn)的操作是有限制的。Libvirt API提供了管理虛擬機(jī)所需的物理主機(jī)節(jié)點(diǎn)層面的所有操作,如防火墻規(guī)則、存儲(chǔ)管理和一般配置API等。同時(shí),它也提供了實(shí)施管理策略所需的狀態(tài)監(jiān)控API,對(duì)虛擬機(jī)的狀態(tài)監(jiān)控也從某種角度反映出物理主機(jī)的資源消耗情況,這對(duì)掌握生產(chǎn)環(huán)境中硬件資源的使用率極其重要。

綜上所述,Libvirt實(shí)現(xiàn)了以下功能:

● 所有API通過(guò)安全協(xié)議都可以遠(yuǎn)端執(zhí)行操作。

● 大部分API對(duì)虛擬化和物理主機(jī)操作系統(tǒng)的管理都是通用的,但是一些API只能應(yīng)用于虛擬化管理。

● Libvirt API可以完成虛擬機(jī)需要的所有操作。

● Libvirt API不提供高級(jí)別虛擬化策略或多節(jié)點(diǎn)管理功能,如負(fù)載均衡功能。但是Libvirt不拒絕在其外部通過(guò)技術(shù)實(shí)現(xiàn)這些高級(jí)功能。

● 目前Libvirt的穩(wěn)定性存在一些問(wèn)題,建議將經(jīng)常需要變化的、穩(wěn)定性低的應(yīng)用與穩(wěn)定性要求高的應(yīng)用進(jìn)行分離。

● 被管理的物理主機(jī)節(jié)點(diǎn)可以來(lái)自不同的廠商,但是Libvirt對(duì)其進(jìn)行遠(yuǎn)程管理必須使用安全協(xié)議。

● Libvirt API可以監(jiān)控和使用被管理物理主機(jī)節(jié)點(diǎn)的資源,包括CPU、內(nèi)存、存儲(chǔ)和網(wǎng)絡(luò)等。

由此可以總結(jié)出:Libvirt的目標(biāo)是建立一套集中在虛擬化層面、面向應(yīng)用的高級(jí)管理工具。

2.3.1 Libvirt API介紹

如前所述,Libvirt API的功能是使用有效的硬件資源服務(wù)當(dāng)前的虛擬機(jī)操作系統(tǒng)。下面從Libvirt驅(qū)動(dòng)和Libvirtd進(jìn)程兩方面展開(kāi)介紹。

1.Libvirt驅(qū)動(dòng)

Libvirt驅(qū)動(dòng)是實(shí)現(xiàn)Libvirt功能的基本模塊,保證了Libvirt程序可以處理和調(diào)用指定的虛擬化程序。Libvirt驅(qū)動(dòng)在連接處理過(guò)程中被發(fā)現(xiàn)和注冊(cè),每個(gè)驅(qū)動(dòng)都有一個(gè)注冊(cè)API,其負(fù)責(zé)加載指定的驅(qū)動(dòng)。下圖是關(guān)于虛擬化程序驅(qū)動(dòng)的簡(jiǎn)單視圖。

Libvirt目前支持的虛擬化技術(shù)如下表所示。

2.Libvirtd進(jìn)程

Libvirtd進(jìn)程通過(guò)remote驅(qū)動(dòng)可以遠(yuǎn)程處理對(duì)Libvirt驅(qū)動(dòng)的訪問(wèn)請(qǐng)求。一些虛擬化技術(shù)支持來(lái)自客戶端的連接和反饋,如Test、OpenVZ、VMware、PowerVM、VirtualBox、ESX、Hyper-V和Xen等。Libvirtd進(jìn)程隨操作系統(tǒng)啟動(dòng)而啟動(dòng)運(yùn)行,與普通進(jìn)程一樣,具有足夠權(quán)限的用戶可以重啟和停止它。確定需要使用的驅(qū)動(dòng)后,Libvirtd進(jìn)程可以將請(qǐng)求路由到正確的驅(qū)動(dòng)上,建立連接并檢索所請(qǐng)求的信息,返回狀態(tài)信息或數(shù)據(jù)給應(yīng)用。應(yīng)用可以根據(jù)需求確定利用這些數(shù)據(jù)執(zhí)行哪些操作,如展示、打印日志等。下圖是Libvirtd進(jìn)程的簡(jiǎn)單視圖。

2.3.2 Libvirt網(wǎng)絡(luò)架構(gòu)

下面從網(wǎng)絡(luò)邏輯架構(gòu)和物理架構(gòu)兩方面來(lái)闡述Libvirt的網(wǎng)絡(luò)設(shè)計(jì)。

● vlan1:該虛擬網(wǎng)絡(luò)的流量連接到物理網(wǎng)絡(luò)2上。

● vlan2:該虛擬網(wǎng)絡(luò)與物理網(wǎng)絡(luò)完全隔離。

● 虛擬機(jī)A:網(wǎng)絡(luò)端口eth0橋接到物理網(wǎng)絡(luò)1上,網(wǎng)絡(luò)端口eth1連接到vlan1上。

● 虛擬機(jī)B:網(wǎng)絡(luò)端口eth0連接到vlan1上,網(wǎng)絡(luò)端口eth1連接到vlan2上。該虛擬主機(jī)扮演路由的角色,在兩個(gè)vlan之間可以轉(zhuǎn)發(fā)網(wǎng)絡(luò)包,使虛擬機(jī)C連接到物理網(wǎng)絡(luò)2上。

● 虛擬機(jī)C:僅有的網(wǎng)絡(luò)端口eth0連接到vlan2上,沒(méi)有直接連接物理網(wǎng)絡(luò),依靠虛擬機(jī)B的路由轉(zhuǎn)發(fā)流量實(shí)現(xiàn)網(wǎng)絡(luò)互通。

其邏輯架構(gòu)如下圖所示。

其物理架構(gòu)如下圖所示。

2.3.3 Libvirt存儲(chǔ)架構(gòu)

Libvirt的存儲(chǔ)設(shè)計(jì)包括兩個(gè)核心部分。

● 存儲(chǔ)卷:一個(gè)存儲(chǔ)卷可以分配給虛擬機(jī)使用,或創(chuàng)建成存儲(chǔ)池以供使用。一個(gè)存儲(chǔ)卷可以是一個(gè)塊設(shè)備、一個(gè).raw文件或其他格式的文件。

● 存儲(chǔ)池:存儲(chǔ)池可以理解成將存儲(chǔ)資源池化,分割成存儲(chǔ)卷分配給虛擬機(jī)使用。存儲(chǔ)池用來(lái)管理物理磁盤、NFS服務(wù)器或一個(gè)LVM組。

主站蜘蛛池模板: 绥中县| 随州市| 都匀市| 平塘县| 邯郸市| 北宁市| 五莲县| 景洪市| 高碑店市| 社旗县| 定日县| 托里县| 玉环县| 清徐县| 景宁| 镶黄旗| 云浮市| 防城港市| 三穗县| 尼玛县| 东乌| 满城县| 托克逊县| 北海市| 东明县| 天等县| 永嘉县| 茌平县| 安福县| 鹰潭市| 炉霍县| 泗洪县| 中卫市| 融水| 会宁县| 西藏| 万山特区| 思南县| 叶城县| 客服| 舟山市|