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 設置虛擬機用戶的密碼