KVM虛擬化基礎二(QEMU,KVM,Hypervisor,Libvirt)

QEMU是什麼?

QEMU is a generic and open source machine emulator and virtualizer QEMU官網
QEMU是一套由 Fabrice Bellard 開發者編寫的模擬處理器的自由軟件,是一個完整的可以單獨運行的軟件。可獨立模擬出整臺計算機(CPU/內存/IO設備)它是通過一個特殊的“重編譯器”對特定的處理器(CPU)的二進制代碼進行翻譯轉換來提供一系列的硬件模擬,使Guest OS認爲自己和硬件直接打交道(其實是同QEMU模擬出來的硬件打交道)。QEMU再將這些指令翻譯給真正硬件進行操作,通過這種模式Guest OS可以和主機上的各種IO類及USB設備等進行交互。但由於其所有指令都需要經過QEMU來翻譯因而性能會比較差(存軟件模擬);
QEMU有兩種工作模式:
系統模式:可模擬出整個電腦系統
用戶模式:可運行不同與當前硬件平臺的其他平臺上的程序(如在x86平臺上運行跑在ARM平臺上的程序)
代碼地址:目前最新的版本是3.1,在1.3之後QEMU和QEMU-KVM合二爲一叫QEUMU-KVM QEMU 代碼
KVM虛擬化基礎二(QEMU,KVM,Hypervisor,Libvirt)

KVM 是什麼?

紅帽的官網KVM知識點參考 紅帽官網
KVM的知識點社區參考 KVM社區
KVM(Kernel -base-virtual machine)實際上是類Linux發行版內核中提供的虛擬化技術(內核級虛擬化),可將內核直接充當Hypervisor來使用,在內核中獨立存在可動態加載。
注意:其處理器(CPU)自身必須支持虛擬化擴展
工作原理:
KVM包含一個內核模塊kvm.ko其用來實現核心虛擬化功能,以及一個和處理器強相關的模塊 kvm-intel.ko或kvm-amd.ko。KVM本身不實現任何模擬僅僅是暴露了一個 /dev/kvm 接口。這個接口可被宿主機用來主要負責vCPU的創建、虛擬內存的地址空間分配、vCPU寄存器的讀寫以及vCPU的運行。有了KVM以後Guest OS的CPU指令不用再經過QEMU來轉譯便可直接運行,大大提高了運行速度。但KVM的kvm.ko本身只提供了CPU和內存的虛擬化,其它網絡等IO的支持需配合另一組件 QEMU-KVM;
動態裝載:
如果裝載了kvm模塊內核立即變爲殭屍並變成了Hypervisor(悄悄並腐蝕了寄生在內核級宿主機之上的Hypervisor)用戶空間就變爲了其中一臺虛擬機的管理控制檯,完全寄生不驅動任何驅動管理程序;
KVM虛擬化基礎二(QEMU,KVM,Hypervisor,Libvirt)

Hypervisor 是什麼?

通俗來講 Hypervisor 是一種將操作系統與硬件抽象分離的一種技術實現方法。一種運行在物理服務器和操作系統之間的中間軟件層(可以是軟件程序,也可以是固件程序);
它允許多個操作系統和應用共享一套基礎物理硬件,因此也可以看作是虛擬環境中的“元”操作系統;
它可以協調訪問服務器上的所有物理設備和虛擬機,當服務器啓動並執行Hypervisor時它會給每一臺虛擬機分配適量的內存、CPU、網絡和磁盤,並加載所有虛擬機的客戶操作系統,它能夠使得這些虛擬機可高效地去分享物理服務器的硬件資源。也叫虛擬機監視器VMM(Virtual Machine Monitor);
Hypervisor是所有虛擬化技術的核心,非中斷地支持多工作負載遷移的能力是Hypervisor的基本功能;
Hypervisor 翻譯過來就是超級監督者,被引申爲超級管理程序、超多功能管理器、虛擬機管理器、VMM;
Hypervisor(主機虛擬化)的兩種類型
1型虛擬化:在硬件上跑的不是宿主機(直接跑的是虛擬化軟件,需驅動底層硬件)所創建每個主機都是虛擬機
2型虛擬化:在硬件安裝操作系統(操作系統安裝虛擬軟件vmware,virtualbox)
KVM虛擬化基礎二(QEMU,KVM,Hypervisor,Libvirt)

Libvirt 是什麼?

社區站點:libvirt 社區站點
這是 RedHat 開始支持KVM後搞的一個用戶空間虛擬機管理工具。目標是提供一個單一途徑以管理多種不同虛擬化方案以及虛擬化主機,其包括:KVM/QEMU,Xen,LXC,OpenVZ 或 VirtualBox hypervisors等 ;
它Libvirt內置的API廣泛用於雲解決方案開發中的虛擬機監視器編排層(Orchestration Layer)。常用的管理工具如,virsh,virt-install,virt-manager等;
Libvirt 的一些主要功能

  • VM management(虛擬機管理)
    各種虛擬機生命週期的操作,如:啓動、停止、暫停、保存、恢復和遷移等;多種不同類型設備的熱插拔操作,包括磁盤、網絡接口、內存、CPU等
  • Remote machine support(支持遠程連接)
    Libvirt 的所有功能都可以在運行着 libvirt 守護進程的機器上執行,包括遠程機器。通過最簡便且無需額外配置的 SSH 協議,遠程連接可支持多種網絡連接方式
  • Storage management(存儲管理)
    任何運行 libvirt 守護進程的主機都可以用於管理多種類型的存儲:創建多種類型的文件鏡像(qcow2,vmdk,raw,...),掛載 NFS 共享,枚舉現有 LVM 卷組,創建新的 LVM 卷組和邏輯卷,對裸磁盤設備分區,掛載 iSCSI 共享,以及更多......
  • Network interface management(網絡接口管理)
    任何運行 libvirt 守護進程的主機都可以用於管理物理的和邏輯的網絡接口,枚舉現有接口,配置(和創建)接口、橋接、VLAN、端口綁定
  • Virtual NAT and Route based networking(虛擬 NAT 和基於路由的網絡)
    任何運行 libvirt 守護進程的主機都可以管理和創建虛擬網絡。Libvirt 虛擬網絡使用防火牆規則實現一個路由器,爲虛擬機提供到主機網絡的透明訪問
  • 安裝:安裝 libvirt 以及至少一個虛擬運行環境(hypervisor)
    基於守護進程/客戶端架構的 libvirt 只需裝在需要實現虛擬化的機器上,服務及客戶端可以是相同的物理機器
    Libvirt 的 KVM/QEMU 驅動 KVM/QEMU驅動站點

    Archlinux站點上的Libvirt參考?

    libvirt wiki 參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章