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