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 代碼
php
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)用戶空間就變爲了其中一臺虛擬機的管理控制檯,徹底寄生不驅動任何驅動管理程序;
html
Hypervisor 是什麼?
通俗來說 Hypervisor 是一種將操做系統與硬件抽象分離的一種技術實現方法。一種運行在物理服務器和操做系統之間的中間軟件層(能夠是軟件程序,也能夠是固件程序);
它容許多個操做系統和應用共享一套基礎物理硬件,所以也能夠看做是虛擬環境中的「元」操做系統;
它能夠協調訪問服務器上的全部物理設備和虛擬機,當服務器啓動並執行Hypervisor時它會給每一臺虛擬機分配適量的內存、CPU、網絡和磁盤,並加載全部虛擬機的客戶操做系統,它可以使得這些虛擬機可高效地去分享物理服務器的硬件資源。也叫虛擬機監視器VMM(Virtual Machine Monitor);
Hypervisor是全部虛擬化技術的核心,非中斷地支持多工做負載遷移的能力是Hypervisor的基本功能;
Hypervisor 翻譯過來就是超級監督者,被引伸爲超級管理程序、超多功能管理器、虛擬機管理器、VMM;
Hypervisor(主機虛擬化)的兩種類型1型虛擬化:在硬件上跑的不是宿主機(直接跑的是虛擬化軟件,需驅動底層硬件)所建立每一個主機都是虛擬機
2型虛擬化:在硬件安裝操做系統(操做系統安裝虛擬軟件vmware,virtualbox)
linux
Libvirt 是什麼?
社區站點:libvirt 社區站點
這是 RedHat 開始支持KVM後搞的一個用戶空間虛擬機管理工具。目標是提供一個單一途徑以管理多種不一樣虛擬化方案以及虛擬化主機,其包括:KVM/QEMU,Xen,LXC,OpenVZ 或 VirtualBox hypervisors等 ;
它Libvirt內置的API普遍用於雲解決方案開發中的虛擬機監視器編排層(Orchestration Layer)。經常使用的管理工具如,virsh,virt-install,virt-manager等;
Libvirt 的一些主要功能git
各類虛擬機生命週期的操做,如:啓動、中止、暫停、保存、恢復和遷移等;多種不一樣類型設備的熱插拔操做,包括磁盤、網絡接口、內存、CPU等
Libvirt 的全部功能均可以在運行着 libvirt 守護進程的機器上執行,包括遠程機器。經過最簡便且無需額外配置的 SSH 協議,遠程鏈接可支持多種網絡鏈接方式
任何運行 libvirt 守護進程的主機均可以用於管理多種類型的存儲:建立多種類型的文件鏡像(qcow2,vmdk,raw,...),掛載 NFS 共享,枚舉現有 LVM 卷組,建立新的 LVM 卷組和邏輯卷,對裸磁盤設備分區,掛載 iSCSI 共享,以及更多......
任何運行 libvirt 守護進程的主機均可以用於管理物理的和邏輯的網絡接口,枚舉現有接口,配置(和建立)接口、橋接、VLAN、端口綁定
任何運行 libvirt 守護進程的主機均可以管理和建立虛擬網絡。Libvirt 虛擬網絡使用防火牆規則實現一個路由器,爲虛擬機提供到主機網絡的透明訪問
安裝:安裝 libvirt 以及至少一個虛擬運行環境(hypervisor)基於守護進程/客戶端架構的 libvirt 只需裝在須要實現虛擬化的機器上,服務及客戶端能夠是相同的物理機器
Libvirt 的 KVM/QEMU 驅動
KVM/QEMU驅動站點服務器
Archlinux站點上的Libvirt參考?