libvirt零知识学习1 —— libvirt简介
本文內(nèi)容部分取自《KVM實(shí)戰(zhàn) —— 原理、進(jìn)階與性能調(diào)優(yōu)》的“4.1.1 libvirt簡(jiǎn)介”。這本書(shū)是非常好的一本書(shū)。
1. 概述
提到KVM的管理工具,首先必須要介紹的無(wú)疑是大名鼎鼎的libvirt。libvirt是目前使用最為廣泛的對(duì)KVM虛擬機(jī)進(jìn)行管理的工具和應(yīng)用程序接口。并且,一些常用的虛擬機(jī)管理工具(如virsh、virt-install、virt-manager、virt-viewer等)和云計(jì)算框架平臺(tái)(如OpenStack、ZStack、OpenNebula、Eucayptus等)都在底層使用libvirt的應(yīng)用程序接口。
libvirt是為了更方便地管理平臺(tái)虛擬化技術(shù)而設(shè)計(jì)的開(kāi)放源代碼(開(kāi)源)的應(yīng)用程序接口、守護(hù)進(jìn)程和管理工具。它不僅提供了對(duì)虛擬化客戶機(jī)的管理,也提供了對(duì)虛擬化網(wǎng)絡(luò)和存儲(chǔ)的管理。libvirt支持多種虛擬化方案,既支持包括KVM、QEMU、Xen、VMWare、VirtualBox、Hyper-V等在內(nèi)的平臺(tái)虛擬化方案,也支持OpenVZ、LXC等Linyx容器虛擬化系統(tǒng),還支持用戶態(tài)Linux(UML)的虛擬化。libvirt是一個(gè)免費(fèi)的開(kāi)源的軟件,使用的許可證是LGPL(GNU寬松的通用公共許可證),這表明使用libvirt庫(kù)進(jìn)行鏈接的軟件不一定要選擇開(kāi)源和遵守GPL許可證。
和KVM、Xen等開(kāi)源項(xiàng)目類(lèi)似,libvirt也有自己的開(kāi)發(fā)者社區(qū),而且隨著虛擬化、云計(jì)算等成為近年來(lái)的技術(shù)熱點(diǎn),libvirt項(xiàng)目的社區(qū)也比較活躍。目前,libvirt的開(kāi)發(fā)主要由Redhat公司作為強(qiáng)大的支持。由于紅帽公司在虛擬化方面逐漸偏向于支持KVM(而不是Xen),故libvirt對(duì)QEMU/KVM的支持是非常成熟和穩(wěn)定的。當(dāng)然,IBM、Novell等公司以及眾多的個(gè)人開(kāi)發(fā)者對(duì)libvirt項(xiàng)目的代碼貢獻(xiàn)量也是非常大的。
libvirt本身提供了一套較為穩(wěn)定的C語(yǔ)言應(yīng)用程序接口。目前,在其它一些流行的編程語(yǔ)言中也提供了對(duì)libvirt的綁定,在Python、Perl、Java、Ruby、PHP、OCaml等高級(jí)編程語(yǔ)言中已經(jīng)有l(wèi)ibvirt的程序庫(kù)可以直接使用。libvirt還提供了為基于AMQP(高級(jí)消息隊(duì)列協(xié)議)的消息系統(tǒng)(如Apache Qpid)提供QMF代理,這可以讓云計(jì)算管理系統(tǒng)中宿主機(jī)與客戶機(jī)、客戶機(jī)與客戶機(jī)之間的消息通信變得更易于實(shí)現(xiàn)。libvirt還為安全地遠(yuǎn)程管理虛擬客戶機(jī)提供了加密和認(rèn)證等安全措施。正是由于 libvirt擁有這些強(qiáng)大的功能和較為穩(wěn)定的應(yīng)用程序接口,而且其許可證(License)也比較寬松,所以libvirt的應(yīng)用程序接口已被廣泛地用在基于虛擬化和云計(jì)算的解決方案中,主要作為連接底層Hypervisor和上層應(yīng)用程序的一個(gè)中間適配層。
libvirt對(duì)多種不同的Hypervisor的支持是通過(guò)一種基于驅(qū)動(dòng)程序的架構(gòu)來(lái)實(shí)現(xiàn)的。libvirt對(duì)不同的Hypervisor提供了不同的驅(qū)動(dòng):對(duì)Xen有Xen的驅(qū)動(dòng)、對(duì)QEMU/KVM有QEMU驅(qū)動(dòng)、對(duì)VMware有VMware驅(qū)動(dòng)。在libvirt源代碼中,可以很容易找到qemu_driver.c、xen_driver.c、xenapi_driver.c、VMware_driver.c、vbox_driver.c這樣的驅(qū)動(dòng)程序源代碼文件。
libvirt作為中間適配層,可以讓底層Hypervisor對(duì)上層用戶空間的管理工具是完全透明的,因?yàn)閘ibvirt屏蔽了底層各種Hypervisor的細(xì)節(jié),為上層管理工具提供了一個(gè)統(tǒng)一的、較穩(wěn)定的接口(API)。通過(guò)libvirt,一些用戶空間管理工具可以管理各種不同的Hypervisor和其上運(yùn)行的客戶機(jī)。
用戶空間管理工具、libvirt、各種Hypervisor之間的基本交互框架如下圖所示:
2. 重要概念
libvirt中涉及以下幾個(gè)重要的概念,解釋如下:
- 結(jié)點(diǎn)(Node)
一個(gè)物理機(jī)器,上面可能運(yùn)行著多個(gè)虛擬客戶機(jī)。Hypervisor和Domain都運(yùn)行在結(jié)點(diǎn)上。
- 虛擬機(jī)監(jiān)控器(Hypervisor)
Hypervisor也稱(chēng)虛擬機(jī)監(jiān)控器(VMM),如KVM、Xen、VMware、Hyper-V等,是虛擬化中的一個(gè)底層軟件層,它可以虛擬化一個(gè)結(jié)點(diǎn),讓其運(yùn)行多個(gè)虛擬客戶機(jī)(不同客戶機(jī)可以有不同的配置和操作系統(tǒng))。
- 域(Domain)
在Hypervisor上運(yùn)行的一個(gè)客戶機(jī)操作系統(tǒng)實(shí)例。域也被稱(chēng)為實(shí)例(instance)、客戶機(jī)操作系統(tǒng)(guest OS)、虛擬機(jī)(virtual machine),它們都是指同一個(gè)概念。
Node、Hypervisor和Domain的關(guān)系簡(jiǎn)圖如下所示:
3. 組成部分
libvirt主要由3部分組成,分別是:應(yīng)用程序編程接口庫(kù)、一個(gè)守護(hù)進(jìn)程(libvirtd)和一個(gè)默認(rèn)命令行管理工具(virsh)。
- 應(yīng)用程序接口
為其它虛擬機(jī)管理工具(如virsh、virt-manager等)提供虛擬機(jī)管理的程序庫(kù)支持。
- libvirtd守護(hù)進(jìn)程
負(fù)責(zé)執(zhí)行對(duì)結(jié)點(diǎn)上的域的管理工作。在用各種工具對(duì)虛擬機(jī)進(jìn)行管理時(shí),這個(gè)守護(hù)進(jìn)程一定要處于運(yùn)行狀態(tài)中。守護(hù)進(jìn)程可以分為兩種:一種是root權(quán)限的libvirtd,其權(quán)限較大,可以完成所有支持的管理工作;另一種是普通用戶權(quán)限的libvirtd,只能完成比較受限的管理工作。
- virsh
virsh是libvirt項(xiàng)目中默認(rèn)的對(duì)虛擬機(jī)進(jìn)行管理的一個(gè)命令行工具。
4. 目標(biāo)和管理功能
libvirt的目標(biāo)用一句話概括,那就是:為了安全高效地管理(既包括本地的管理也包括遠(yuǎn)程的 管理)結(jié)點(diǎn)上的各個(gè)域而提供一個(gè)公共穩(wěn)定的軟件層。
具體來(lái)講,libvirt的管理功能主要包含以下5個(gè)部分:
- 域管理
- 遠(yuǎn)程結(jié)點(diǎn)管理
- 存儲(chǔ)管理
- 網(wǎng)絡(luò)管理
- 提供一個(gè)穩(wěn)定、可靠、高效的應(yīng)用程序接口,以便可以完成前面的4個(gè)管理功能
總結(jié)
以上是生活随笔為你收集整理的libvirt零知识学习1 —— libvirt简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【OfferX】常见题目
- 下一篇: 安全驾驶检测