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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

libvirt php,libvirt虚拟化开发简介

發布時間:2023/12/20 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libvirt php,libvirt虚拟化开发简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

libvirt是一個虛擬化開發的工具庫,提供了底層的kvm,xen,vmware esx等虛擬化的統一封裝。可以通過libvirt提供的api對不同的底層實現進行同一的管理。除了原生的c api,還有c#, go, java, ocaml. perl, python, php, ruby的api,用戶可自主選擇自己熟悉的語言。

要使用libvirt首先要安裝libvirtd,這是一個后臺守護進程,負責管理虛擬機系統以及和客戶端交互。libvirt還包含了virsh命令行工具,供用戶通過shell手動管理。另外,還可以通過圖形界面方式進行管理,該工具是virt-manager,如果您想要通過python的api進行開發,需要安裝python3-libvirt或python-libvirt。在debian下,可通過下列指令安裝這些包:

apt-get install libvirt-daemon libvirt-daemon-system libvirt-clients python3-libvirt virt-manager

啟動libvirtd:

systemctl start libvirtd

接下來我們就可以通過virt-manager創建一個虛擬機。熟悉vmware或者virtualbox的同學,可以看到virt-manager和這些軟件很類似,安裝系統就不再介紹了。

系統安裝完成之后,我們就可以通過virsh工具進行基本的操作了。運行virsh,回車,進入virsh的命令行,可通過help查看virsh支持的操作。

virsh # help

Grouped commands:

Domain Management (help keyword 'domain'):

attach-device attach device from an XML file

attach-disk attach disk device

attach-interface attach network interface

autostart autostart a domain

blkdeviotune Set or query a block device I/O tuning parameters.

blkiotune Get or set blkio parameters

blockcommit Start a block commit operation.

......

通過查看這些命令,我們了解到libvirt提供了客戶機的管理,客戶機監控,主機監控,設備管理,網絡管理,快照管理和存儲管理等功能。由于有virt-manager工具,很多功能我們都可以通過圖形化界面方式完成,但是我們可以通過virsh快速獲取某個主機某項信息,方便開發時對比測試我們的代碼是否正確。

libvirt中的一些基本概念:

主機連接 主機連接是客戶端和libvirtd之間的通道,該連接既可以訪問運行在本地的libvirtd程序,也可以訪問運行在網絡上其他主機上的libvirtd。

客戶域 是一個運行著的虛擬機或者是可以生成一個虛擬機的配置文件。每個客戶域都有一個唯一的ID,name和UUID

虛擬網絡 為客戶機提供網絡訪問

存儲池 存儲池用來組織和管理存儲卷

存儲卷 用來為客戶機提供存儲設備(磁盤)

主機設備 可以給虛擬機分配客戶機上設備

libvirt-common:通用的宏和枚舉定義

libvirt-domain-snapshot:客戶機快照管理

libvirt-domain:客戶域管理

libvirt-event:事件管理

libvirt-host:宿主機信息查看

libvirt-interface:網絡接口管理(網卡)

libvirt-network:網絡管理

libvirt-nodedev:設備管理

libvirt-nwfilter:網絡過濾

libvirt-secret:密鑰管理

libvirt-storage:存儲管理

libvirt-stream:數據流

virterror:錯誤處理

python api簡要功能示例:

獲取所有的客戶機列表,詳細參考:

from __future__ import print_function

import sys

import libvirt

conn = libvirt.open('qemu:///system')

if conn == None:

print('Failed to open connection to qemu:///system', file=sys.stderr)

exit(1)

domainIDs = conn.listDomainsID()

if domainIDs == None:

print('Failed to get a list of domain IDs', file=sys.stderr)

print("Active domain IDs:")

if len(domainIDs) == 0:

print(' None')

else:

for domainID in domainIDs:

print(' '+str(domainID))

conn.close()

exit(0)

客戶機內存信息統計,詳細參考:

from __future__ import print_function

import sys

import libvirt

domName = 'Fedora22-x86_64-1'

conn = libvirt.open('qemu:///system')

if conn == None:

print('Failed to open connection to qemu:///system', file=sys.stderr)

exit(1)

dom = conn.lookupByID(5)

if dom == None:

print('Failed to find the domain '+domName, file=sys.stderr)

exit(1)

stats = dom.memoryStats()

print('memory used:')

for name in stats:

print(' '+str(stats[name])+' ('+name+')')

conn.close()

exit(0)

官方有更多參考示例,這里不再過多介紹。我個人接觸libvirt是因為要監控虛擬機的運行狀態,性能統計,網絡信息等的監控,所以對于快照,網絡管理,存儲管理等沒有通過python接口進行過實踐,對其了解的也不適特別多。下面是我認為一些有用的鏈接,可供參考:

virsh命令參考 詳細講解virsh的使用,如果對于xml的定義描述不確定時,可參考virsh的代碼

XML格式 libvirt api使用的交互方式

API參考 libvirt提供的C接口,如果你需要的功能在這里找不到,那就是沒有了

希望通過本片文章能讓你對libvirt的開發有一個簡單的認識。

總結

以上是生活随笔為你收集整理的libvirt php,libvirt虚拟化开发简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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