kvm隨筆(一)


1、kvm是全虛擬化、xen是準虛擬化
kvm屬於內核的一部分,xen類似於替換內核(2005年intel開發出了xen3.0,開始支持intel的VT和IA64,至此xen可以跑沒有修改的操作系統,2010年內核社區接納xen,linux3.0內核主幹對xen支持越來越好)
全虛擬化有無可比擬的優勢,因爲準虛擬化需要修改客戶操作系統,因此不支持windows
2、軟件虛擬化與硬件虛擬化
軟件虛擬化如qemu,對物理平臺的訪問與截獲,說白了就是在硬件與軟件中多了一層軟件,效率可想而知。
硬件虛擬化是硬件處理器支持虛擬化,效率大大提高。
3、kvm本身不執行任何模擬
需要用戶空間的qemu進行模擬
4、kvm可以使用linux支持的任何存儲來存儲虛擬機鏡像
包括具有IDE、SCSI和SATA的本地磁盤,網絡附加存儲(NAS),或者支持iSCSI和光前通道SAN
5、kvm的原生磁盤格式爲QCOW2
支持快照,徐雲多級快照、壓縮和加密
6、x86下的兩種虛擬化模型
物理硬件-虛擬機監控器-操作系統:此種模型的代表有微軟的Hyper-V、xen以及VMware的ESX/ESXi,該模型會有一特殊的虛擬機提供用戶的管理操作。
物理硬件-操作系統-虛擬機監控器:kvm屬於這類。
7、kvm模塊
kvm模塊是kvm虛擬機的核心部分,其主要功能是初始化CPU硬件,打開虛擬化模式,然後將xuni客戶機運行在虛擬機模式下,並對虛擬客戶機的運行提供一定的支持。
8、關於CPU過載的使用
最不推薦的做法讓某一個客戶機的vCPU數量超過物理系統上存在的CPU數量。比如,擁有4個邏輯CPU的宿主機中,同時運行一個或多個客戶機,其中每個客戶機的vCPU數量多於4個(如16個)。這樣的使用方法會帶來比較明顯的性能下降,其性能反而不如爲客戶機分配2個(或4個)vCPU的情況,而且客戶機中負載過重,可能會讓整個系統運行不穩定。不過,在並非100%負載的情況下,一個或(多個)有4個vCPU的客戶機運行在擁有4個邏輯CPU的宿主機中並不會帶來明顯的性能損失。
9、CPU獨佔
第一步:啓動宿主機時隔離指定數量CPU(修改grub)
第二步:啓動客戶機(指定了CPU數量),使用taskset命令將QEMU進程和vCPU線程綁定到指定物理CPU
10、內存過載
一般來說客戶機操作系統上的應用程序並非一直100%的利用其分配到的內存,並且宿主機上的多個客戶機一般也不會同時達到100%的內存使用率,所以內存過載分配是可行的,一般來說有如下三種方式實現內存過載使用:
1)內存交換(swapping):用交換空間來彌補內存不足
2)氣球(ballooning):通過virio_balloon驅動來實現宿主機Hypervisor和客戶機之間的協作
3)頁共享(page sharing):通過KSM(Kernel Samepage Merging)合併多個客戶機進程使用的相同內存頁
如何計算應該分配的交換空間大小以滿足內存的過載使用:
某個服務器有32GB的物理內存,想在其上運行64個內存配置1GB的客戶機。在宿主機中,大約需要4GB大小的內存來滿足系統進程、驅動、磁盤緩存及其他應用程序所需內存(不包括客戶機進程所需內存)。計算過程如下:
客戶機所需交換分區爲:64 x 1GB+4GB-32GB=36GB。
根據Redhat的建議[註釋],對於32GB物理內存的RHEL系統,推薦使用8GB的交換分區。
所以,在宿主機中總共需要建立44GB(36GB+8GB)的交換分區來滿足安全實現客戶機內存的過載使用。
更多精彩文章,請搜索微信公衆號“扶艾”。我們定期分享OpenStack相關技術文章,在這裏,只有純乾貨。 


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