聊一聊虛擬化基礎(chǔ)知識(shí)
引言
開始前給大家舉個(gè)例子:
場(chǎng)景如下:一臺(tái)服務(wù)器只有有8G內(nèi)存,程序A需要4G內(nèi)存,程序B需要4G內(nèi)存,傳統(tǒng)架構(gòu)無法滿足這樣的場(chǎng)景,那只有依靠虛擬化來解決,通過虛擬化方式,我們可以不僅提供2臺(tái)4G內(nèi)存,更可以通過內(nèi)存氣泡、內(nèi)存復(fù)用、內(nèi)存置換等技術(shù)實(shí)現(xiàn)超分配!
Part A.虛擬化簡(jiǎn)介
虛擬化是云計(jì)算的基礎(chǔ),基于虛擬化我們可以實(shí)現(xiàn)私有云、公有云、桌面云等。
虛擬化是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源(CPU、內(nèi)存、磁盤空間、網(wǎng)絡(luò)適配器等),予以抽象、轉(zhuǎn)換后呈現(xiàn)出來并可供分區(qū)、組合為一個(gè)或多個(gè)電腦配置環(huán)境。由此,打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶可以比原本的配置更好的方式來應(yīng)用這些電腦硬件資源。這些資源的新虛擬部分是不受現(xiàn)有資源的架設(shè)方式,地域或物理配置所限制。一般所指的虛擬化資源包括計(jì)算能力和數(shù)據(jù)存儲(chǔ)。
虛擬化架構(gòu)
幾個(gè)重要的概念:
A.宿主機(jī):Host ,即物理服務(wù)器
B.虛擬機(jī):Guest ,也稱客戶機(jī)、虛機(jī)
C.VMM(virtual Machine Monitor):即Hypervisors,它是一種運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享硬件。Hypervisors是一種在虛擬環(huán)境中的“元”操作系統(tǒng)。他們可以訪問服務(wù)器上包括磁盤和內(nèi)存在內(nèi)的所有物理設(shè)備。Hypervisor不但協(xié)調(diào)著這些硬件資源的訪問,也同時(shí)在各個(gè)虛擬機(jī)之間施加防護(hù)。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí),它會(huì)加載所有虛擬機(jī)客戶端的操作系統(tǒng)同時(shí)會(huì)分配給每一臺(tái)虛擬機(jī)適量的內(nèi)存、CPU、網(wǎng)絡(luò)和磁盤。
Part B.虛擬化的分類
【常規(guī)分類】
此外還有混合虛擬化,是指將一個(gè)內(nèi)核級(jí)驅(qū)動(dòng)器插入到宿主操作系統(tǒng)內(nèi)核。這個(gè)驅(qū)動(dòng)器作為虛擬硬件管理器來協(xié)調(diào)虛擬機(jī)和宿主操作系統(tǒng)之間的硬件訪問?;旌咸摂M化需要底層硬件支持虛擬化擴(kuò)展功能。
【基于Guest OS CPU對(duì)硬件訪問分類】
CPU的運(yùn)行級(jí)別,Ring 0也稱為核心態(tài),操作系統(tǒng)需要直接訪問硬件和內(nèi)存,使用特權(quán)指令,控制中斷、修改頁表、訪問設(shè)備,因此它的代碼需要運(yùn)行在***運(yùn)行級(jí)別。Ring 3也稱為用戶態(tài),需要訪問磁盤、寫文件時(shí),則需要調(diào)用系統(tǒng)函數(shù),這樣的操作稱為用戶態(tài)到核心態(tài)。
大家都知道宿主機(jī)的操作系統(tǒng)運(yùn)行級(jí)別是Ring 0,虛擬機(jī)的操作系統(tǒng)就無法在Ring 0級(jí)別運(yùn)行,但是虛擬機(jī)OS不知道這一點(diǎn),執(zhí)行的命令與物理機(jī)無異,但是沒有執(zhí)行權(quán)限是會(huì)出錯(cuò)的。所以這時(shí)候虛擬機(jī)管理程序(VMM)需要避免這件事情發(fā)生。 虛機(jī)怎么通過 VMM 實(shí)現(xiàn) Guest CPU 對(duì)硬件的訪問,根據(jù)其原理不同有三種實(shí)現(xiàn)技術(shù):
1. 全虛擬化
2. 半虛擬化
3. 硬件輔助的虛擬化
主要區(qū)別見下圖:
A.全虛擬化
一般采用優(yōu)先級(jí)壓縮技術(shù)(Ring Compression)和二進(jìn)制代碼翻譯技術(shù)(BinaryTranslation)。優(yōu)先級(jí)壓縮技術(shù)讓VMM和Guest運(yùn)行在不同的特權(quán)級(jí)下。對(duì)x86架構(gòu)而言,即VMM運(yùn)行在***特權(quán)級(jí)別Ring 0下,guest OS運(yùn)行在Ring 1下,用戶應(yīng)用運(yùn)行在Ring 3下。因此,Guest OS的核心指令無法直接下達(dá)到計(jì)算機(jī)系統(tǒng)硬件執(zhí)行,而是需要經(jīng)過VMM的捕獲和模擬執(zhí)行(部分難以虛擬化的指令需要通過Binary Translation技術(shù)進(jìn)行轉(zhuǎn)換)。
B.輔助虛擬化
當(dāng)前主要有Intel的VT-x和AMD的AMD-V這兩種技術(shù)。其核心思想都是通過引入新的指令和運(yùn)行模式,使VMM和Guest OS分別運(yùn)行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS運(yùn)行在Ring 0下。通常情況下,Guest OS的核心指令可以直接下達(dá)到計(jì)算機(jī)系統(tǒng)硬件執(zhí)行,而不需要經(jīng)過VMM。當(dāng)Guest OS執(zhí)行到特殊指令的時(shí)候,系統(tǒng)會(huì)切換到VMM,讓VMM來處理特殊指令。
C.全虛擬化
采用Hypercall技術(shù)。Guest OS的部分代碼被改變,從而使Guest OS會(huì)將和特權(quán)指令相關(guān)的操作都轉(zhuǎn)換為發(fā)給VMM的Hypercall(超級(jí)調(diào)用),由VMM繼續(xù)進(jìn)行處理。而Hypercall支持的批處理和異步這兩種優(yōu)化方式,使得通過Hypercall能得到近似于物理機(jī)的速度。
【按虛擬化技術(shù)分類】
1.服務(wù)器虛擬化,計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)和IO的虛擬化
2.存儲(chǔ)虛擬化,如Serversan,支持虛擬化的存儲(chǔ)陣列等
3.網(wǎng)絡(luò)虛擬化,如vlan、虛擬防火墻、虛擬分布式交換機(jī)
4.桌面(應(yīng)用)虛擬化,即桌面云
其他分類這里不在細(xì)說,下面給大家分享下KVM和XEN的一些區(qū)別:
【對(duì)比KVM和XEN】
Xen作為***秀的半虛擬化引擎,在基于硬件的虛擬化幫助下,現(xiàn)在也完全支持虛擬化MS Windows。被設(shè)計(jì)成一個(gè)獨(dú)立的內(nèi)核,它只需要Linux執(zhí)行 I/O,這樣使得它非常的大,并且它有自己的調(diào)度程序、內(nèi)存管理器、計(jì)時(shí)器和機(jī)器初始化程序。
做華為虛擬化的同學(xué)應(yīng)該都知道有個(gè)Dom0,這個(gè)Dom0是個(gè)什么東西呢?這個(gè)Domain 0(特權(quán)虛擬機(jī))是其他虛擬機(jī)的管理者和控制者,可以構(gòu)建其他更多Domain,并管理虛擬設(shè)備。它還能執(zhí)行管理任務(wù),比如虛擬機(jī)的休眠、喚醒和遷移其他虛擬機(jī)。此外,還有個(gè)Dom u,這個(gè)是指除了Dom 0之外的普通虛擬機(jī)。
KVM是一個(gè)獨(dú)特的管理程序,其讓Linux內(nèi)核自身變成一個(gè)管理程序,通過KVM作為一個(gè)內(nèi)核模塊實(shí)現(xiàn),在虛擬環(huán)境下Linux內(nèi)核集成管理程序?qū)⑵渥鳛橐粋€(gè)可加載的模塊,可以簡(jiǎn)化管理以及提升性能。KVM使用標(biāo)準(zhǔn)Linux調(diào)度程序、內(nèi)存管理器和其他服務(wù)。將虛擬技術(shù)建立在內(nèi)核上而不是去替換內(nèi)核。
KVM架構(gòu)
Xen架構(gòu)
此外,還有微軟的Hyper-V、OpenVz,這里不再跟大家介紹!
Part C.虛擬化的優(yōu)勢(shì)
1.降低運(yùn)營成本
服務(wù)器虛擬化降低了IT基礎(chǔ)設(shè)施的運(yùn)營成本,運(yùn)維人員可以從繁重的物理服務(wù)器、OS、中間件及兼容性的管理工作解放處理,減少人工干預(yù)頻率,使管理更加強(qiáng)大、便捷。
2.縮短上線周期
虛擬化中對(duì)可以將需要批量預(yù)安裝機(jī)器進(jìn)行模板化,使用模板創(chuàng)建虛擬機(jī),不僅可以縮短安裝周期,也可以減少人工帶來的配置失誤。從而縮短操作系統(tǒng)安裝部署周期,進(jìn)而縮短業(yè)務(wù)的上線周期。
3.提高可靠性
通過集群部署、雙網(wǎng)卡、雙電源以及OS盤的RAID策略都可以為我們提升基礎(chǔ)架構(gòu)的可靠性。通過對(duì)集群設(shè)置,我們可以實(shí)現(xiàn)虛擬機(jī)的冷熱遷移,故障恢復(fù)甚至容錯(cuò)等,從而在架構(gòu)上實(shí)現(xiàn)了高可靠。
4.提高資源利用率
擺脫傳統(tǒng)架構(gòu)單臺(tái)服務(wù)器單個(gè)應(yīng)用,通過虛擬化技術(shù),資源可以以更小的單位提供,可以實(shí)現(xiàn)一比多的形式,很大程度提高了物理資源的利用率,同時(shí),可對(duì)虛擬機(jī)進(jìn)行隔離,保證了安全性。
5.動(dòng)態(tài)資源調(diào)度(DRS)
通過DRS可以實(shí)現(xiàn)機(jī)房節(jié)能環(huán)保,降低功耗,在資源閑置時(shí)自動(dòng)遷移并關(guān)閉部分資源,資源緊張時(shí)可自動(dòng)開啟資源并負(fù)載均衡
Part D.幾種虛擬化關(guān)鍵技術(shù)
一、內(nèi)存復(fù)用
a.內(nèi)存共享:虛擬機(jī)內(nèi)存只讀時(shí),可共享同一內(nèi)存空間,需要寫時(shí),再分配空間。
b.內(nèi)存氣泡:虛擬機(jī)之間的內(nèi)存交換負(fù)載,即內(nèi)存使用低的釋放給內(nèi)存使用較高的虛擬機(jī)。
c.內(nèi)存置換:暫時(shí)不用的內(nèi)存置換到存儲(chǔ)中,從而提高內(nèi)存使用。
二、CPU相關(guān)
CPU虛擬化的開啟,物理在BIOS里面設(shè)置相關(guān)Virtual Technology項(xiàng),如果需要開啟虛擬化嵌套,則需要在VMwareworkstation設(shè)置相關(guān)虛擬化模式,如果是kvm的嵌套則可能需要升級(jí)內(nèi)核。
三、ServerSan
ServerSan通?;趥鹘y(tǒng)的X86服務(wù)器,配以SSD做緩存和萬兆網(wǎng)卡做傳輸,同時(shí)滿足了計(jì)算和存儲(chǔ)資源,從而實(shí)現(xiàn)了計(jì)算和存儲(chǔ)的融合,大多數(shù)的ServerSan都基于開源的Ceph,不僅可以實(shí)現(xiàn)高性能,也可以實(shí)現(xiàn)數(shù)據(jù)的多副本,更可以實(shí)現(xiàn)存儲(chǔ)的高級(jí)功能,如快照、鏈接克隆、精簡(jiǎn)配置等。
主要特點(diǎn)如下:
1.軟件定義,獨(dú)立于硬件;
2.分布式,不存在單點(diǎn)故障;
3.系統(tǒng)自治,自動(dòng)進(jìn)行故障自愈和數(shù)據(jù)平衡;
4.融合系統(tǒng),存儲(chǔ)和計(jì)算部署在相同硬件上;
5.橫向擴(kuò)展,最小部署(至少3臺(tái)),按需擴(kuò)容;
6.強(qiáng)一致性,只有所有副本寫成功,單次寫操作完成,確保從任意副本數(shù)據(jù)的完整性;










































