KVM虛擬化學習總結之簡介

KVM虛擬化學習總結之簡介

1、虛擬化分爲:全虛擬化和半虛擬化,需要CPU的支持。

 

2、全虛擬化:不需要做任何配置,讓用戶覺得就是一臺真實的服務器

 

3、半虛擬機化:需要用戶配置,有點麻煩。

 

4KVM 僅僅是 Linux 內核的一個模塊。管理和創建完整的 KVM 虛擬機,需要更多的輔助工具。

 

5、與Xen相比較,KVM就簡化的多了。它不需要重新編譯內核,也不需要對當前kernel做任何修改,它只是幾個可以動態加載的.ko模塊。它結構更加精簡、代碼量更小。所以,出錯的可能性更小。並且在某些方面,性能比Xen更勝一籌。

 

6/etc/libvirt/qemu目錄,存放虛擬機的配置文件。

 

7kvm的備份:拷貝/etc/libvirt/qemu目錄下的xml配置文件,以及xml中設置的img文件。

 

8kvm的還原:進入virsh,執行define 目錄下的xml文件路徑,且確保鏡像文件的存在。

virsh # define /etc/libvirt/qemu/winxp.xml

 

9KVM允許客戶機過載使用(over-commit)物理資源,即給客戶機分配的CPU和內存數量多於物理上實際存在的資源。

 

10CPU的過載使用,是讓一個或多個客戶機使用vCPU的總數量超過實際擁有的物理CPU數量,QEMU會啓動更多的線程來爲客戶機提供服務,這些線程也是被Linux內核調度運行在物理CPU硬件上。

 

11、最推薦的做法是對多個CPU的客戶機使用over-commit,比如:在擁有4個邏輯CPU的宿主機中,同時運行多於4個(如8個、16個)客戶機,其中每個客戶機都被分配一個vCPU。這時,如果每個宿主機的負載不很大的情況下,宿主機Linux對每個客戶機的調度是非常有效的,這樣的過載使用並不會帶來客戶機中的性能損失。

 

12最不推薦的做法是讓某一個客戶機的vCPU數量超過物理CPU數量。比如,在擁有4個邏輯CPU的宿主機中,同時運行一個或多個客戶機,其中每個客戶機的vCPU數量多於4(如16個)。這樣的使用方法會帶來比較明顯的性能下降,其性能反而不如將客戶機分配2個(或4個)vCPU,而且如果客戶機中負載過重時,可能會讓整個系統運行不穩定。不過,在並非100%滿負載的情況下,一個(或多個)有4vCPU的客戶機運行在擁有4個邏輯CPU的宿主機中並不會帶來明顯的性能損失。

 

13、總的來說,KVM允許CPU的過載使用,但是並不推薦在實際的生產環境(特別是負載較重的環境)中過載使用CPU。在生產環境中過載使用CPU,有必要在部署前進行嚴格的性能和穩定性測試。

 

14KVM中內存也是允許過載使用(over-commit)的,KVM能夠讓分配給客戶機的內存總數大於實際可用的物理內存總數。

 

15、一般來說,有如下三種方式來實現內存的過載使用:

 

1)內存交換(swapping):用交換空間(swap space)來彌補內存的不足。

2)氣球(ballooning):通過virio_balloon驅動來實現宿主機Hypervisor和客戶機之間的協作來完成。

3)頁共享(page sharing):通過KSMKernel Samepage Merging)合併多個客戶機進程使用的相同內存頁。

 

其中,第一種內存交換的方式是最成熟的(Linux中很早就開始應用),但不推薦使用虛擬內存swap

 

16KVM(模塊):

     modprobe 命令加載 KVM 模塊,如果用 RPM 安裝 KVM 軟件包,系統會在啓動時自動加載模塊。加載了模塊後,才能進一步通過其他工具創建虛擬機。但僅有 KVM 模塊是遠遠不夠的,因爲用戶無法直接控制內核模塊去做事情,還必須有一個用戶空間的工具。

 

17QEMU (管理工具):

    QEMU 是一個強大的虛擬化軟件,它可以虛擬不同的 CPU 構架。比如說在 x86 CPU 上虛擬一個 Power CPU,並利用它編譯出可運行在 Power 上的程序。

 

18QEMU-KVM (管理工具):

KVM 使用了 QEMU 的基於 x86 的部分,並稍加改造,形成可控制 KVM 內核模塊的用戶空間工具 QEMU-KVM。所以 Linux 發行版中分爲 內核部分的 KVM 內核模塊和 QEMU-KVM 工具。

 

19Libvirtvirshvirt-manager(管理工具):

    RedHat KVM 開發了更多的輔助工具,比如 libvirtlibguestfs 等。原因是 QEMU 工具效率不高,不易於使用Libvirt 是一套提供了多種語言接口的 API,爲各種虛擬化工具提供一套方便、可靠的編程接口,不僅支持 KVM,而且支持 Xen 等其他虛擬機。使用 libvirt,你只需要通過 libvirt 提供的函數連接到 KVM Xen 宿主機,便可以用同樣的命令控制不同的虛擬機了。Libvirt 不僅提供了 API,還自帶一套基於文本的管理虛擬機的命令virsh,你可以通過使用 virsh 命令來使用 libvirt 的全部功能。但最終用戶更渴望的是圖形用戶界面,這就是 virt-manager。它是一套用 python 編寫的虛擬機管理圖形界面,用戶可以通過它直觀地操作不同的虛擬機。Virt-manager 就是利用 libvirt API 實現的。

 

20、在 KVM 模型中,每一個虛擬機都是一個由 Linux 調度程序管理的標準進程,你可以在用戶空間啓動客戶機操作系統。一個普通的 Linux 進程有兩種運行模式:內核和用戶。 KVM 增加了第三種模式:客戶模式(有自己的內核和用戶模式)

 

 

21、內核模塊導出了一個名爲 /dev/kvm 的設備,它可以啓用內核的客戶模式(除了傳統的內核模式和用戶模式)。有了 /dev/kvm 設備,VM 使自己的地址空間獨立於內核或運行着的任何其他 VM 的地址空間。




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