libvirt调用c语言程序,libvirt库简介
一、什么是libvirt?
答: libvirt是一套免費、開源的支持Linux 下主流虛擬化工具的C函數庫,libvirt本身 不是一種工具, 它是一種可以建立工具來管理來賓操作系統的 API,官方描述為:
libvirt is:
* A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes).(提供給最新linux(其他操作系???? 統)的虛擬化功能的工具包)
* Free software available under the GNU Lesser General Public License. (遵循GUN公共許可的免費軟件)
* A long term stable C API (一個長期穩定的C語言API)
* A set of bindings for common languages (一組通用語言的綁定)
* A CIM provider for the DMTF virtualization schema(CIM提供 的 虛擬化 架構 的DMTF( 分布式管理工作組))
二、libvirt的主要目標時什么?
答:為包括Xen 在內的各種虛擬化工具提供一套方便、可靠的編程接口,用一種單一的方式管理多種不同的虛擬化提供方式和hypervisor(管理工具),避免學習、使用不同hypervisor的特定工具。
三、libvirt的架構及工作方式怎樣的?
答:沒有使用libvirt的虛擬機管理方式如下圖左 圖:
libvirt的控制方式有兩種:
1)管理應用程序和域位于同一節點上。管理應用程序通過 libvirt 工作,以控制本地域。(如上圖右圖)
2)管理應用程序和域位于不同節點上。該模式使用一種運行于遠程節點上、名為 libvirtd 的特殊守護進程。當在新節點上安裝 libvirt 時該程序會自動啟動,且可自動確定本地虛擬機監控程序并為其安裝驅動程序。該管理應用程序通過一種通用協議從本地 libvirt 連接到遠程 libvirtd。(如下圖)
libvirt的基本架構是: libvirt 實施一種基于驅動程序的架構,該架構允許一種通用的 API 以通用方式為大量潛在的虛擬機監控程序提供服務。(如下圖所示)
四、libvirt現在支持哪些虛擬機?
答:支持以下虛擬機 Xen 面向 IA-32,IA-64 和 PowerPC 970 架構的虛擬機監控程序
QEMU 面向各種架構的平臺仿真器
Kernel-based Virtual Machine (KVM) Linux 平臺仿真器
Linux Containers(LXC) 用于操作系統虛擬化的 Linux(輕量級)容器
OpenVZ 基于 Linux 內核的操作系統級虛擬化
VirtualBox x86 虛擬化虛擬機監控程序
User Mode Linux 面向各種架構的 Linux 平臺仿真器
Test 面向偽虛擬機監控程序的測試驅動器
Storage 存儲池驅動器(本地磁盤,網絡磁盤,iSCSI 卷)
五、libvirt的主要功能有哪些?
答: 虛擬機管理:包括不同的領域生命周期操作,比如:啟動、停止、暫停、保存、恢復和遷移。支持多種設備類型的熱插拔操作,包括:磁盤、網卡、內存和CPU。
遠程機器支持:只要機器上運行了libvirt daemon,包括遠程機器,所有的libvirt功能就都可以訪問和使用。支持多種網絡遠程傳輸,使用最簡單的SSH,不需要額外配置工作。比 如:example.com運行了libvirt,而且允許SSH訪問,下面的命令行就可以在遠程的主機上使用virsh命令行。 (可參考 http://libvirt.org/remote.html )
virsh --connect qemu+ssh://root@example.com/system 存儲管理:任何運行了libvirt daemon的主機都可以用來管理不同類型的存儲:創建不同格式的文件映像(qcow2、vmdk、raw等)、掛接NFS共享、列出現有的LVM卷組、 創建新的LVM卷組和邏輯卷、對未處理過的磁盤設備分區、掛接iSCSI共享,等等等等。因為libvirt可以遠程工作,所有這些都可以通過遠程主機使 用。(可參考http://libvirt.org/storage.html )
網絡接口管理:任何運行了libvirt daemon的主機都可以用來管理物理和邏輯的網絡接口。可以列出現有的接口卡,配置、創建接口,以及橋接、vlan和關聯設備等,通過netcf都可以支持。
虛擬NAT和基于路由的網絡:任何運行了libvirt daemon的主機都可以用來管理和創建虛擬網絡。Libvirt虛擬網絡使用防火墻規則作為路由器,讓虛擬機可以透明訪問主機的網絡。
六、libvirt可以和和哪些語言綁定?
答:?????? libvirt 庫用 C (支持 C++ )實現,且包含對 Python 的直接支持。不過它還支持大量語言綁定。目前已經對 Ruby、Java? 語言,Perl 和 OCaml 實施了綁定。在從 C# 調用 libvirt 方面我們已做了大量工作。
七、基于libvirt有哪些應用程序?
答: virsh???????????????????? 它是一種虛擬 shell。
virt-install????????????? 應用程序,它可用于從多個操作系統發行版供應新域。
virt-clone?????????????? 可用于從另一個 VM 復制 VM(既包括操作系統復制也包括磁盤復制)。
virt-manager???????? 一些高級應用程序包括多用途桌面管理工具
virt-viewer???????????? 安全連接到 VM 圖形控制臺的輕量級工具 。
八、怎樣安裝libvirt?
1、在linux上安裝:
1)編譯源碼包: 下載源碼包,地址:
解壓源碼包:
$ gunzip -c libvirt-x.x.x.tar.gz | tar xvf -
$ cd libvirt-x.x.x
$ ./configure
編譯安裝:
$ ./configure [possible options] $ make
$ sudo make install
2)git安裝
$ git clone git://libvirt.org/libvirt.git
$ ./autogen.sh --prefix=$HOME/usr --enable-compile-warnings=error
$ make
$ sudo make install
2、在windows上安裝:直接下載安裝可執行程序,地址
http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe
九、libvirt API簡介:
答:高級 libvirt API 可劃分為 5 個 API 部分:虛擬機監控程序連接 API、域 API、網絡 API、存儲卷 API 以及存儲池 API。
為給定虛擬機監控程序創建連接后會產生所有 libvirt 通信。該連接為所有其他要使用的 API 提供路徑。在 C API 中,該行為通過 virConnectOpen 調用(以及其他進行認證的調用)提供。這些函數的返回值是一個 virConnectPtr 對象,它代表到虛擬機監控程序的一個連接。該對象作為所有其他管理功能的基礎,是對給定虛擬機監控程序進行并發 API 調用所必需的語句。重要的并發調用是 virConnectGetCapabilities 和 virNodeGetInfo ,前者返回虛擬機監控程序和驅動程序的功能,后者獲取有關節點的信息。該信息以 XML 文檔的形式返回,這樣通過解析便可了解可能發生的行為。
進入虛擬機監控程序后,便可以使用一組 API 調用函數重復使用該虛擬機監控程序上的各種資源。virConnectListDomains API 調用函數返回一列域標識符,它們代表該虛擬機監控程序上的活動域。
API 實現大量針對域的函數。要探究或管理域,首先需要一個 virDomainPtr 對象。您可通過多種方式獲得該句柄(使用 ID、UUID 或域名)。繼續來看重復域的例子,您可以使用該函數返回的索引表并調用 virDomainLookupByID 來獲取域句柄。有了該域句柄,就可以執行很多操作,從探究域(virDomainGetUUID 、virDomainGetInfo 、virDomainGetXMLDesc 、virDomainMemoryPeek )到控制域(virDomainCreate 、virDomainSuspend 、virDomainResume 、virDomainDestroy 和 virDomainMigrate )。
您還可使用 API 管理并檢查虛擬網絡和存儲資源。建立了 API 模型之后,需要一個virNetworkPtr 對象來管理并檢查虛擬網絡,且需要一個 virStoragePoolPtr (存儲池)或 virStorageVolPtr (卷)對象來管理這些資源。
API 還支持一種事件機制,您可使用該機制注冊為在特定事件(比如域的啟動、中止、恢復或停止)發生時獲得通知。
參考資源:
http://www.ibm.com/developerworks/cn/linux/l-libvirt/
http://libvirt.org/
http://baike.baidu.com/view/1592349.htm
http://blog.csdn.net/MagBryan/archive/2010/03/22/5403907.aspx
轉自:
http://blog.csdn.net/mushubingfeng/article/details/6307914
總結
以上是生活随笔為你收集整理的libvirt调用c语言程序,libvirt库简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全球计算机病毒损失报告,世界十大计算机病
- 下一篇: can总线不加末端电阻_山西CAN-BU