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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libvirt详解

發(fā)布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libvirt详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

**提要:**虛擬云實現(xiàn)的三部曲:虛擬化技術(shù)實現(xiàn)–>虛擬機(jī)管理–>集群資源管理(云管理)。

libvirt是目前使用最為廣泛的對KVM虛擬機(jī)進(jìn)行管理的工具和API。Libvirtd是一個daemon進(jìn)程,可以被本地的virsh調(diào)用,也可以被遠(yuǎn)程的virsh調(diào)用,Libvirtd調(diào)用qemu-kvm操作虛擬機(jī)。

why&&what
實現(xiàn)一朵可運行、可運維的云,需要完整的實現(xiàn)三層:VIM層、VNFM層、NFVO層,其中實現(xiàn)對VNF的生命周期管理是VNFM層要實現(xiàn)核心功能。但要做到對VNF的控制管理談何容易,VIM層中提供的hypervisor技術(shù)多種多樣,包括kvm,vmware,xen等等,每種技術(shù)提供的驅(qū)動和API又都不盡相同。即使能夠做到單種技術(shù)的控制管理,還要實現(xiàn)不同hypervisor下VNF的遷移,困難可想而知。
而Libvirt正是為解決上述問題而生,通過在VIM層和VNFM層提供一個虛擬抽象層,提供統(tǒng)一API供上層調(diào)用,下層統(tǒng)一封裝不同虛擬機(jī),從而方便地實現(xiàn)對虛擬機(jī)的管理。
Libvirt是管理虛擬機(jī)、存儲、網(wǎng)絡(luò)的一系列軟件集合。它包括了一個API庫、一個daemon程序(libvirtd)和一個命令行工具(virsh).主要目標(biāo)是為各種虛擬化工具提供一套統(tǒng)一可靠的API,讓上層可以用一種單一的方式來管理多種不同的虛擬化技術(shù)。

1、什么是libvirt
Libvirt是管理虛擬機(jī)和其他虛擬化功能,比如存儲管理,網(wǎng)絡(luò)管理的軟件集合。位于虛擬機(jī)和云管理中間的一個抽象管理層。它包括一個API庫,一個守護(hù)程序(libvirtd)和一個命令行工具(virsh);libvirt本身構(gòu)建于一種抽象的概念之上。它為受支持的虛擬機(jī)監(jiān)控程序?qū)崿F(xiàn)的常用功能提供通用的API。
libvirt的主要目標(biāo)是為各種虛擬化工具提供一套方便、可靠的編程接口,用一種單一的方式管理多種不同的虛擬化提供方式。

libvirt 的基本操作和大概結(jié)構(gòu)

  • libvirt 組件有一個 shell,被稱為 virsh,提供類似 shell 的界面,可以輸入 start、shutdown
    等命令操作虛擬機(jī)

  • libvirt 有一個守護(hù)進(jìn)程,libvirtd,其對 virsh 的命令做出響應(yīng)

    • 以 non-root 執(zhí)行 virsh start 時,將以 qemu://session 的方式運行。libvirtd 將啟動一個 non-root 的子進(jìn)程來與 virsh 進(jìn)行 socket 通信
    • 以 root 執(zhí)行 virsh start 時,將以 qemu://system 方式運行,libvirtd 直接與 virsh 進(jìn)行 socket 通信

無論是上述哪種方式,都會創(chuàng)建多個(一般16個)線程,該線程的的作用是將 socket 傳遞過來的各個命令和配置進(jìn)行解析,最終形成一個 cmd。
子線程會將 cmd 通過 pipe 傳遞給 libvirtd,libvirtd 會 fork 出一個子進(jìn)程,并 exec cmd
來自https://blog.csdn.net/sdulibh/article/details/90257557

libvirt 啟動 qemu 的流程圖

2、主要支持的功能
虛擬機(jī)管理:包括不同的領(lǐng)域生命周期操作,比如:啟動、停止、暫停、保存、恢復(fù)和遷移。支持多種設(shè)備類型的熱插拔操作,包括:磁盤、網(wǎng)卡、內(nèi)存和CPU。
遠(yuǎn)程機(jī)器支持:只要機(jī)器上運行了libvirt daemon,包括遠(yuǎn)程機(jī)器,所有的libvirt功能就都可以訪問和使用。支持多種網(wǎng)絡(luò)遠(yuǎn)程傳輸,使用最簡單的SSH,不需要額外配置工作。
存儲管理:任何運行了libvirt daemon的主機(jī)都可以用來管理不同類型的存儲:創(chuàng)建不同格式的文件鏡像(qcow2、vmdk、raw等)、掛接NFS共享、列出現(xiàn)有的LVM卷組、創(chuàng)建新的LVM卷組和邏輯卷、對未處理過的磁盤設(shè)備分區(qū)、掛接iSCSI共享,等等等等。因為libvirt可以遠(yuǎn)程工作,所有這些都可以通過遠(yuǎn)程主機(jī)使用。
網(wǎng)絡(luò)接口管理:任何運行了libvirt daemon的主機(jī)都可以用來管理物理和邏輯的網(wǎng)絡(luò)接口。
虛擬NAT和基于路由的網(wǎng)絡(luò):任何運行了libvirt daemon的主機(jī)都可以用來管理和創(chuàng)建虛擬網(wǎng)絡(luò)。

3、支持的虛擬機(jī)

4、體系結(jié)構(gòu)
沒有使用libvirt的虛擬機(jī)管理方式如下圖所示:

為支持各種虛擬機(jī)監(jiān)控程序的可擴(kuò)展性,libvirt實施一種基于驅(qū)動程序的架構(gòu),該架構(gòu)允許一種通用的API以通用方式為大量潛在的虛擬機(jī)監(jiān)控程序提供服務(wù)。下圖展示了libvirt API與相關(guān)驅(qū)動程序的層次結(jié)構(gòu)。這里也需要注意,libvirtd提供從遠(yuǎn)程應(yīng)用程序訪問本地域的方式。

libvirt的控制方式有兩種:
1)管理應(yīng)用程序和域位于同一節(jié)點上。管理應(yīng)用程序通過libvirt工作,以控制本地域。

2)管理應(yīng)用程序和域位于不同節(jié)點上。該模式使用一種運行于遠(yuǎn)程節(jié)點上、名為libvirtd的特殊守護(hù)進(jìn)程。當(dāng)在新節(jié)點上安裝libvirt時該程序會自動啟動,且可自動確定本地虛擬機(jī)監(jiān)控程序并為其安裝驅(qū)動程序。該管理應(yīng)用程序通過一種通用協(xié)議從本地libvirt連接到遠(yuǎn)程libvirtd。

6、相關(guān)工具
virsh(虛擬 shell)的應(yīng)用程序,基于命令行的管理工具,可以實現(xiàn)簡單的資源管理。它構(gòu)建于libvirt之上,允許以交互方式使用多個libvirt功能。
virsh list 列出給定主機(jī)上的活動域域id和狀態(tài) 查看在運行的虛擬機(jī) /domain?
virsh list --all 查看創(chuàng)建的所有虛擬機(jī)
virsh start domain_name 啟動名稱為domain_name的虛擬機(jī)
virsh suspend domain_name 掛起虛擬機(jī)
virsh resume domain_name 恢復(fù)被掛起的虛擬機(jī)
virsh autostart domain_name 開機(jī)啟動虛擬機(jī),及在虛擬服務(wù)libvirt啟動時啟動虛擬機(jī)
virsh auto start --disable domain_name 關(guān)閉開機(jī)啟動虛擬機(jī)
virsh shutdown domain_name 關(guān)閉虛擬機(jī)(需要ACPID服務(wù)的支持,ACPI是Advanced Configuration and PowerInterface縮寫,高級配置和電源管理接口)
virsh reboot domain_name 重啟持久虛擬機(jī)
virsh reset domain_name 強(qiáng)制重啟虛擬機(jī)
virsh destroy domain_name 強(qiáng)制關(guān)閉虛擬機(jī),這種方式是從virsh list列表中將虛擬機(jī)刪
除,仍然可以start起來
virsh net-start default 啟動默認(rèn)的網(wǎng)絡(luò)
virsh net-autostart default 自啟動默認(rèn)網(wǎng)絡(luò)
徹底刪除虛擬機(jī)步驟
1)關(guān)閉虛擬機(jī):virsh destroy domain_name
2)刪除定義:virsh undefine domain_name
3)刪除虛擬機(jī)文件(在/var/lib/libvirtd/下的相關(guān)文件)

創(chuàng)建虛擬機(jī)步驟:
需要提前準(zhǔn)備好xml配置文件(本地沒有就去網(wǎng)上抄一個,修改對應(yīng)參數(shù))
virsh dumpxml domain_name > /home/ 轉(zhuǎn)儲虛擬機(jī)的設(shè)置項
virsh define *.xml 從xml定義一個虛擬機(jī)
virsh start domain_name

附上libvirt 官方xml鏈接
https://libvirt.org/formatdomain.html

總結(jié)

以上是生活随笔為你收集整理的libvirt详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。