日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libvirt调用c语言程序,libvirt库简介

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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库简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。