共享(sharing)和過量使用(overcommitment)這兩種內(nèi)存管理技術(shù)都能夠幫助提升系統(tǒng)整合性,但是在使用它們之前,管理員應(yīng)該首先了解二者之間的細(xì)微差別。
一臺(tái)服務(wù)器能夠支持的虛擬機(jī)數(shù)量通常取決于物理硬件所能夠提供的可用計(jì)算資源。大多數(shù)資源,比如處理器周期、存儲(chǔ)I/O和網(wǎng)絡(luò)帶寬等,都能夠相對簡單地進(jìn)行共享。這種做法的原理在于負(fù)載并不總是處于忙碌狀態(tài),因此共享——或者過度使用——資源能夠?qū)崿F(xiàn)更高等級(jí)的負(fù)載整合,因此為虛擬機(jī)分配的資源總量和可以超過當(dāng)前物理資源的總數(shù)量;就算在特殊情況下出現(xiàn)問題,也只不過是對負(fù)載性能產(chǎn)生輕微影響。
然而 ,服務(wù)器內(nèi)存一直以來都被視為一種固定資源。由于每臺(tái)運(yùn)行在內(nèi)存當(dāng)中的虛擬機(jī)都是應(yīng)用程序和數(shù)據(jù)集合的完整鏡像,因此為所有虛擬機(jī)提供足夠的內(nèi)存資源是十分重要的。否則,服務(wù)器將不得不使用硬盤上的交換文件(swap file)來補(bǔ)充內(nèi)存空間——但是通常這種方式會(huì)對虛擬機(jī)的性能造成極為嚴(yán)重的影響。但是隨著內(nèi)存過度使用和內(nèi)存共享技術(shù)的出現(xiàn),這種情況正在發(fā)生改變。
借助于內(nèi)存過度使用技術(shù),主機(jī)服務(wù)器所分配的內(nèi)存數(shù)量可以超過現(xiàn)有的物理內(nèi)存數(shù)量。比如,假設(shè)一臺(tái)主機(jī)服務(wù)器擁有4GB物理內(nèi)存,那么借助于內(nèi)存過度使用技術(shù)也許可以創(chuàng)建六臺(tái)內(nèi)存為1GB的虛擬機(jī)。乍看之下,這是一種非常危險(xiǎn)的方式,因?yàn)閮煞N負(fù)載不能同時(shí)共享相同內(nèi)存地址空間當(dāng)中的不同數(shù)據(jù)片——至少在將數(shù)據(jù)交換到硬盤之前是不可以的。
但是設(shè)計(jì)者很快意識(shí)到許多虛擬機(jī)并不會(huì)使用為其分配的全部內(nèi)存空間,導(dǎo)致部分內(nèi)存空間基本上被浪費(fèi)了,因?yàn)橐恢碧幱诳臻e或者未使用狀態(tài)。Hypervisor能夠?qū)ふ姨幱诳臻e狀態(tài)的內(nèi)存,并且將其提供給需要使用的虛擬機(jī)。如果沒有其他虛擬機(jī)需要額外的內(nèi)存,那么這些空閑空間可以被用來創(chuàng)建新的虛擬機(jī)。可以在“共享(Shares)”虛擬內(nèi)存配置當(dāng)中定義虛擬機(jī)在內(nèi)存池當(dāng)中的優(yōu)先級(jí),并且還可以通過“預(yù)留(Reservation)”機(jī)制定義虛擬機(jī)能夠使用的最小內(nèi)存空間,保證虛擬機(jī)擁有足夠內(nèi)存以正常運(yùn)行。
虛擬機(jī)還能夠共享大量內(nèi)容。比如,上面提到的六臺(tái)1GB內(nèi)存虛擬機(jī)全部運(yùn)行Windows Server 2012 R2,其中兩臺(tái)虛擬機(jī)運(yùn)行相同的業(yè)務(wù)應(yīng)用。那么在這種情況下,五臺(tái)Windows Server 2012 R2和一個(gè)應(yīng)用程序就是冗余的。內(nèi)存共享技術(shù)允許不同虛擬機(jī)使用相同內(nèi)存頁面當(dāng)中的一個(gè)通用實(shí)例。這樣就能夠減少虛擬機(jī)需要使用的內(nèi)存總數(shù)量,并且支持更高等級(jí)的過度使用。內(nèi)存共享技術(shù)的實(shí)現(xiàn)方式非常類似于硬盤存儲(chǔ)當(dāng)中的數(shù)據(jù)去重復(fù)化機(jī)制。
需要特別注意的是內(nèi)存過度使用和內(nèi)存共享都是高度動(dòng)態(tài)的技術(shù),會(huì)受到總計(jì)算負(fù)載和通用內(nèi)容數(shù)量的影響。比如,很少使用的虛擬機(jī)能夠?yàn)閮?nèi)存過度使用釋放大量內(nèi)存空間,但是隨著虛擬機(jī)使用頻率的增加和內(nèi)存需求的增長,hypervisor必須將這些內(nèi)存返還給虛擬機(jī),否則就會(huì)面臨使用硬盤交換文件所帶來的性能問題。類似地,使用不同操作系統(tǒng)版本、應(yīng)用程序和數(shù)據(jù)的虛擬機(jī)也許只有很少能夠共享的通用內(nèi)存頁面。虛擬機(jī)遷移和負(fù)載均衡會(huì)改變通用內(nèi)存頁面,對內(nèi)存共享產(chǎn)生影響。