吃透什麼是KVM虛擬化

冷雨夜我不想家發表於2021-04-16
概念:
雲端計算自從提出,一直沒有一個明確而統一的定義。維基百科對雲端計算做了如下的描述:雲端計算是一種通過因特網以服務的方式提供動態可伸縮的虛擬化的資源的計算模式。
美國國家標準與技術研究院( NIST)定義:雲端計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路訪問,進入可配置的計算資源共享池(資源包括網路
、伺服器、儲存、應用軟體和服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的互動。
雲端計算分類:
公有云:public Cloud,通常指第三方提供商為使用者提供的能夠通過網際網路來使用的雲主機,
所有入駐的使用者都稱為租戶,公有云本質使一種共享資源服務,最大的特點使成本低,擴充套件性好對於安全要求不高的中小型企業或個人站長是非常好的選擇,缺點是對於雲端的資源缺乏控
制,保密資料的安全性,網路效能和匹配性問題。
私有云:Private Cloud,是為使用者單獨而構建的,是企業的專有資源,對資料保密,資料安全,服務質量都能有效控制,特點是安全性與私有化,是定製化解決方案的根本,可保證企
業的資料安全與穩定。
混合雲:Hybird Cloud 是一種混合了私有云和公有云的新型解決方案,集公有云的方便便捷與私有云的安全穩定為一體,是近年雲端計算的主
要模式和發展方向,企業出於安全考慮,會將敏感資料或是執行關鍵性的工作負載放在私有云上,同時又希望能使用公有云的免費資源,達到安全又省錢的目的。
雲端計算的分層:
1.軟體設施即服務
SaaS提供商將應用軟體統一部署在自己的伺服器上,使用者根據需求通過網際網路向廠商訂購應用軟體服務,服務提供商根據客戶所定軟體的數量、時間的長短等因素收費,並且通過瀏覽器向
客戶提供軟體的模式。這種服務模式的優勢是,由服務提供商維護和管理軟體,提供軟體執行的硬體設施,使用者只需擁有能夠接入網際網路的終端,即可隨時隨地使用軟體。在這種模式下,
客戶不再像傳統模式那樣花費大量資金在硬體、軟體、維護人員上,只需要支出一定的租賃服務費用,通過網際網路就可以享受到相應的硬體、軟體和維護服務,這是網路應用最具效益的
營運模式。對於小型企業來說,SaaS是採用先進技術的最好途徑。
目前,Salesforce.com是提供這類服務最著名的公司,Google Docs、Google Apps和Zoho Office也屬於這類服務。
2.平臺設施及服務
PaaS把開發環境作為一種服務來提供。這是一種分散式平臺服務,廠商提供開發環境、伺服器平臺、硬體資源等服務給客戶,使用者在其平臺基礎上定製開發自己的應用程式並通過其伺服器
和網際網路傳遞給其他客戶。PaaS能夠為企業或個人提供研發的中介軟體平臺,提供應用程式開發、資料庫、應用伺服器、試驗、託管及應用服務。
Google App Engine、Salesforce的 force.com平臺、八百客的800APP是PaaS的代表產品。以Google App Engine為例,它是一個由python應用伺服器群、BigTable資料庫及GFS組成
的平臺,為開發者提供一體化主機伺服器及可自動升級的線上應用服務。使用者編寫應用程式並在Google的基礎架構上執行就可以為網際網路使用者提供服務,Google提供應用執行及維護所需要的平臺資源。
3.基礎設施及服務
整合成一個虛擬的資源池為整個業界提供所需要的儲存資源和虛擬化伺服器等服務。這是一種託管型硬體方式,使用者付費使用廠商的硬體設施。例如Amazon Web服務(AWS )、Google的Google Compute Engine、IBM的BlueCloud等均將基礎設施作為服務出租。
laaS的優點是使用者只需低成本獲得所需的硬體資源,按需租用相應計算能力、儲存容量、網路頻寬,而且省去了硬體運維方面的成本,大大降低了使用者在硬體上的開銷。

傳統資料中心面臨的問題:
1.伺服器和網路裝置資源利用率過低,無法共享,導致資源浪費。
2.據統計大部分資料中心的伺服器和網路裝置的利用率僅在20%~30之間。有的CPU利用率,硬碟利用率都在百分之10下。
3.資源分配後進行調整困難
4.資源分配不合理也是傳統網路架構存在的問題,因為資源不能動態調配,分配出去的資源都是固定的,不能隨意新增或者刪除。
5.難以自動化
6.初始成本過高,伺服器升級遷移比較繁瑣,無法實現自動化。
7.成本較高,需要大量伺服器主機,硬體投入和後期管理維護成本很大。
虛擬化和虛擬機器
1.什麼是虛擬化?
在計算機技術中,虛擬化(virtualization)是一種資源管理技術,是將計算機的各種實體資源(CPU,記憶體,磁碟空間,網路介面卡等。)予以抽象,轉換後呈現出來並可提供分割,組合為一個或多個計算機配置環境, 並重新分割,重新組合。以達到最大合理利用物理資源的目的。
2.虛擬化的優勢
虛擬化可以提高IT敏捷性,靈活性和可擴性,同時大幅節約成本,更高的工作負載移動性,更高的效能和資源可用性,自動化運維這些都是虛擬化的優勢,虛擬化技術可以使IT部門更輕鬆進行管理以及降低擁有成本和運維成本,其優勢包括:
1.資源超分
2.降低資金成本和運維成本
3.最大限度減少或許消除停機
4.提高IT部門的工作效率
5.加快應用和資源的調配速度
6.提高業務連續性和災難恢復能力
7.簡化資料中心管理
8.真正的Soft-Defined Data Center的可用性
9.減少埠的衝突。

虛擬機器
虛擬計算機被稱為虛擬機器,(VM,Virtual Machine)它是一種嚴密隔離且內含作業系統和應用的軟體容器,每個虛擬機器都是完全獨立的,通過將多臺虛擬機器放置在一臺物理計算機上,可僅在一臺物理伺服器或主機上執行多個作業系統和應用,名為hypervisor的精簡軟體層可將虛擬機器與主機分開,並根據需要為每個虛擬機器動態分配計算資源。

虛擬化型別:
1.伺服器虛擬化
伺服器的虛擬化支援將多個作業系統作為高校的虛擬機器在單個伺服器上執行,主要優勢:
提升IT效率
降低運維成本
更快部署工作
提升應用效能
提高服務可用性
消除伺服器數量劇增和情況複雜
2.網路虛擬化
通過軟體定義網路,即網路的建立不再依賴物理裝置,公有云廠商允許使用者建立新的網路,在k8s,openstack中都會使用。
3.桌面虛擬化
將桌面部署為代管服務,使IT組織能更快響應不斷變化的工作場所和新出現的機會,還可以將虛擬化桌面和應用快速交付給分支機構。
4.儲存虛擬化
SAN(基於硬碟)
/NAS(NFS,SAMBA)/GlusterFS/Ceph
5.容器技術
被稱為下一代虛擬化技術,典型代表Docker。

雲端計算和虛擬化
雲端計算是一種服務模式,虛擬化是一種技術
虛擬化是雲端計算的重要支撐技術,雲端計算是基於網際網路的相關服務的增加,使用和交付模式,通常涉及通過網際網路來提高動態易擴充套件且經常是虛擬化的資源,通過虛擬化,可以將應用程式和資料在不同層次以不同的方式展現給客戶,為雲端計算的使用者和開發者提高便利,雲端計算的虛擬化過程為組織帶來了靈活性,從而改善IT運維和減少成本支出。

什麼是KVM
KVM的全稱是Kernel Virtual Machine,翻譯成中文就是核心虛擬機器。KVM虛擬機器最初是由一個以色列的創業公司Qumranet開發的,作為他們的VDI產品的虛擬機器。為了簡化開發,KVM的開發人員並沒有選擇從底層開始新寫一個Hypervisor,而是選擇了基於Linuxkernel,通過載入新的模組從而使Linux Kernel本身變成一個Hypervisor。2006年10月,在先後完成了基本功能、動態遷移以及主要的效能優化之後,Qumranet正式對外宣佈了KVM的誕生。同年10月,KVM模組的原始碼被正式接納進入Linux Kernel,成為核心原始碼的一部分。作為一個功能和成熟度都遜於Xen的專案,在這麼快的時間內被核心社群接納,主要原因在於:在虛擬化方興未艾的當時,核心社群急於將虛擬化的支援包含在內,但是Xen取代核心由自身管理系統資源的架構引起了核心開發人員的不滿和牴觸。

在2008年9月4日,同核心社群保持著很深淵源的著名Linux發行版提供商——Redhat公司出人意料地出資1億700百萬美金,收購了Qumranet,從而成為了KVM開源專案的新東家。由於此次收購,Redhat公司有了自己的虛擬機器解決方案,於是開始在自己的產品中用KVM替換Xen。2010年11月,Redhat公司推出了新的企業版Linux———RHEL 6,在這個發行版中整合了最新的KVM虛擬機器,而去掉了在RHEL 5.x系列中整合的Xen。

KVM架構
從虛擬機器的基本架構上來區分,虛擬機器一般分為兩種,我們稱之為型別一和型別二。其中,“型別一”虛擬機器是在系統上電之後首先載入執行虛擬機器監控程式,而傳統的作業系統則是執行在其建立的虛擬機器中。型別一的虛擬機器監控程式,從某種意義上說,可以視為一個特別為虛擬機器而優化裁剪的作業系統核心。因為,虛擬機器監控程式作為執行在底層的軟體層,必須實現諸如系統的初始化、物理資源的管理等作業系統的職能﹔它對虛擬機器的建立、排程和管理,與作業系統對程式的建立、排程和管理有共通之處。這一型別的虛擬機器監控程式一般會提供一個具有一定特權的特殊虛擬機器,由這個特殊虛擬機器來執行需要提供給使用者日常操作和管理使用的作業系統環境。著名的開源虛擬化軟體 Xen、商業軟體VMwareESX/ESXi和微軟的Hyper-V就是“型別一”虛擬機器的代表。
與“型別一”虛擬機器的方式不同,“型別二”虛擬機器監控程式,在系統上電之後仍然執行一般意義上的作業系統(也就是俗稱的宿主機作業系統),虛擬機器監控程式作為特殊的應用程式,可以視作作業系統功能的擴充套件。對於“型別二”的虛擬機器來說,其最大的優勢在於可以充分利用現有的作業系統。因為虛擬機器監控程式通常不必自己實現物理資源的管理和排程演算法,所以實現起來比較簡潔。但是,正所謂“成也蕭何,敗也蕭何”,這一型別的虛擬機器監控程式既然依賴作業系統來實現管理和排程,就同樣也會受到宿主作業系統的一些限制。例如,通常無法僅僅為了虛擬機器的優化,而對作業系統作出修改。本書的主角KVM就是屬於“型別二”虛擬機器,另外,VMware Workstation、VirtualBox也是屬於“型別二”虛擬機器。

 

KVM的元件:
KVM:執行在核心空間,提供CPU和記憶體的虛擬化,以及客戶機的I/O攔截,Guest的部分I/O被KVM攔截後,交給QEMU處理。

兩類元件:
kvm.ko /dev/kvm:工作為hypervisor,在使用者空間可通過系統呼叫ioctl()與核心中的kvm互動,從而完成虛擬機器的建立,啟動,停止,刪除等各種管理功能,可虛擬CPU和記憶體
qemu
-kvm工作於使用者空間用於實現IO裝置模擬,也用於實現一個虛擬機器例項

 

 

QEMU是什麼?
QEMU本身並不是KVM的一部分,其自身就是一個著名的開源虛擬機器軟體。與KVM不同,QEMU虛擬機器是一個純軟體的實現,所以效能低下。但是,其優點是在支援QEMU本身編譯執行的平臺上就可以實現虛擬機器的功能,甚至虛擬機器可以與宿主機並不是同一個架構。作為一個存在已久的虛擬機器,QEMU的程式碼中有整套的虛擬機器實現,包括處理器虛擬化、記憶體虛擬化,以及KVM使用到的虛擬裝置模擬(比如網路卡、顯示卡、儲存控制器和硬碟等)。
為了簡化開發和程式碼重用,KVM 在 QEMU的基礎上進行了修改。虛擬機器執行期間,QEMU會通過KVM模組提供的系統呼叫進人核心,由KVM模組負責將虛擬機器置於處理器的特殊模式執行。遇到虛擬機器進行輸入輸出操作,KVM模組會從上次的系統呼叫出口處返回QEMU,由QEMU來負責解析和模擬這些裝置。
從QEMU角度來看,也可以說QEMU使用了KVM模組的虛擬化功能,為自己的虛擬機器提供硬體虛擬化的加速,從而極大地提高了虛擬機器的效能。除此之外,虛擬機器的配置和建立,虛擬機器執行依賴的虛擬裝置,虛擬機器執行時的使用者操作環境和互動,以及一些針對虛擬機器的特殊技術(諸如動態遷移),都是由QEMU自己實現的。

 

1.安裝KVM環境
1.KVM需要宿主機CPU必須支援虛擬化功能,因此如果在vmware workstation上使用虛擬機器做宿主機,那麼必須要在虛擬機器配置介面的處理器選項中開啟虛擬化功能。
2.驗證伺服器是否支援虛擬化
# grep -Em1 "vmx|svm" /proc/cpuinfo 
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists rdpid overflow_recov succor
3.安裝KVM相關的安裝包
建議安裝 yum install qemu-kvm libvirt virt-manager virt-install 
4.安裝成功,啟動KVM

 

相關文章