1. 程式人生 > >KVM虛擬化專題(2)KVM及Libvirt架構

KVM虛擬化專題(2)KVM及Libvirt架構

負載 password strong image tex https 分享圖片 密碼 管理工具

kvm是內核組件,並沒有自己的用戶空間,QEMU是一個通用的開源的硬件模擬器,可以模擬多種硬件
QEMU_KVM從分支與主幹合並,QEMU成為KVM在用戶空間的管理工具,及KVM運行在內核空間負載虛擬機調用物理資源的請求處理,QEMU則在用戶空間處理用戶下達給虛擬機的各種指令

技術分享圖片
從架構上看KVM屬於宿主模型,因為Linux設計之初並內有針對虛擬化的支持,KVM是以內核模塊的形式存在的。但是隨著越來越多的虛擬化功能被加到Linux內核當中,也可以把Linux內核看作一個Hypervisor。因此KVM也可以算作是Hypervisor模型。
技術分享圖片
Libvirt
Libvirt是由Redhat開發的一套開源的軟件工具,目標是提供一個通用和穩定的軟件庫來高效、安全的管理一個節點上的虛擬機,並支持遠程操作。
Libvirt服務
啟動服務 systemctl start libvirtd
配置文件在/etc/libvirt目錄下面

一個庫文件,實現管理接口
一個守護進程(libvirtd)
一個命令行工具(virsh)

技術分享圖片
為了支持VMM,Libvirt采用基於驅動(Driver)架構,每種VMM需要提供一個Driver和Libvirt進行通信來操控特定的VMM
Libvirt定義了各種API

  • 虛擬機快照:快照包括內存、硬盤等信息在內的完整的虛擬化狀態。
  • 虛擬化管理:這一類API用於管理虛擬機,也是Libvirt裏面使用最頻繁的功能,比如,創建、銷毀、重啟、遷移虛擬機、操作系統的磁盤鏡像等。
  • 事件:事件(events)是Libvirt定義的一套檢測特定情況發生的機制,用戶可以通過響應的API告訴Libvirt,想要監測什麽樣的事件,與事件發生時采取什麽樣的操作。
  • 宿主機:用於獲取宿主機的各種信息,包括機器名,COU狀態等,也用於和特定的VMM建立連接。
  • 網絡接口:實現網路接口的響應操作,如定義一個新的網絡接口
    技術分享圖片
    virsh是一個基於Libvirt的命令行工具,用於管理虛擬機的整個生命周期,包括創建、銷毀、遷移等。
    virsh常用參數指令:
    virsh shutdown --mode-agent  比--mode=acpi更加安全地關閉操作系統
    virsh snapshot-creat -quiesce  在創建快照之前,將緩存地內容刷入到磁盤
    virsh domfsfreee     靜默文件系統
    virsh domfsthaw      恢復靜默地文件系統
    virsh domfstrim        讓虛擬機trim文件系統
    virsh domtime          獲取虛擬機的事件
    virsh setvcpus         配置虛擬機的vCPU
    virsh  dominfaddr  --source agent     查詢虛擬機的IP地址
    virsh domfsinfo      顯示虛擬機的文件系統列表
    virsh set-user-password   設置虛擬機用戶的密碼

KVM虛擬化專題(2)KVM及Libvirt架構