計(jì)算機(jī)內(nèi)存向來不便宜,多年來操作系統(tǒng)一直在設(shè)法處理內(nèi)存不足的問題。大多數(shù)現(xiàn)代操作系統(tǒng)會(huì)使用硬盤空間創(chuàng)建一個(gè)交換或頁面文件來擴(kuò)展物理內(nèi)存。
預(yù)留在硬盤上的空間用于將不經(jīng)常被使用到的數(shù)據(jù)從內(nèi)存交換到訪問速度更慢、成本更低的磁盤上。應(yīng)用需求以及數(shù)據(jù)存儲(chǔ)從未停止增長(zhǎng),但內(nèi)存以及存儲(chǔ)并未線性增加。盡管內(nèi)存大小在緩慢增加,但硬盤在容量上卻呈爆炸式增長(zhǎng)。
虛擬化的引入使計(jì)算機(jī)內(nèi)存能夠承載十幾臺(tái)虛擬機(jī)。存儲(chǔ)這些虛擬機(jī)數(shù)據(jù)的磁盤空間很充足,但是物理磁盤的性能可能跟不上。單塊硬盤已經(jīng)被多塊磁盤所組成的RAID組所取代,RAID組中磁盤的數(shù)量遠(yuǎn)比容量重要。問題是磁盤大小非常大,構(gòu)成數(shù)TB的存儲(chǔ)空間非常容易,但受限于存儲(chǔ)IOPS,你無法高效使用這些存儲(chǔ)空間。
對(duì)很多企業(yè)來說,SSD成為解決方案。無活動(dòng)部件,性能與內(nèi)存訪問速度相似,唯一的缺點(diǎn)是比機(jī)械磁盤的成本高很多。性能特征使得SSD成為虛擬化的理想選擇,問題在于容量,大多數(shù)SSD容量以GB而非TB計(jì)算。這使得高效使用磁盤空間變得尤為重要。由于SSD磁盤空間非常珍貴,將其用于高IO功能并限制用于存儲(chǔ)靜態(tài)數(shù)據(jù)是很有必要的。不幸的是,交換文件代表的是關(guān)鍵但卻很少會(huì)用到的磁盤空間??紤]在虛擬化平臺(tái)中使用SSD時(shí),我們需要找到節(jié)省空間的創(chuàng)造性方法。
舉一個(gè)簡(jiǎn)單的例子,一臺(tái)Windows虛擬機(jī)配置了四個(gè)處理器、16GB的內(nèi)存、20GB的操作系統(tǒng)以及另外50GB的存儲(chǔ)空間。我們將會(huì)發(fā)現(xiàn)該虛擬機(jī)實(shí)際需要110GB的存儲(chǔ)空間。這比配置的空間增加了36%,也就是40GB。這些額外的空間來自哪里,為什么看起來我們的存儲(chǔ)空間消失在了百慕達(dá)神秘三角中?讓我們深入研究一下并找出是誰在秘密使用這些存儲(chǔ)空間。
Windows一直在使用pagefile.sys文件,用于將內(nèi)存頁按需交換到磁盤中。在桌面中頁大小是動(dòng)態(tài)的,但是在服務(wù)器中頁大小往往是固定的。默認(rèn)的大小取決于應(yīng)用及角色,但通常是內(nèi)存容量的1.5倍。如果服務(wù)器內(nèi)存是2GB,那么將會(huì)預(yù)留3GB的磁盤空間用于頁面文件。在之前我們所舉的例子中,16GB的內(nèi)存,頁面文件應(yīng)該是24GB,這是一塊很大的空間,但是還有更糟糕的事兒。VMware將會(huì)在數(shù)據(jù)存儲(chǔ)上創(chuàng)建一個(gè)大小與虛擬機(jī)內(nèi)存容量相同的頁面文件,發(fā)生虛擬機(jī)內(nèi)存交換時(shí)會(huì)用到該頁面文件。在我們的示例中,頁面文件的大小為16GB。加上Windows創(chuàng)建的24GB的頁面文件,一共是40GB。但我們希望永遠(yuǎn)不要用到這些文件。
針對(duì)單臺(tái)虛擬機(jī),這已經(jīng)是一個(gè)不小的數(shù)字,如果有100臺(tái)虛擬機(jī),那么潛在的死亡空間將是4TB。這將會(huì)浪費(fèi)大量的資源,尤其是使用SSD時(shí)更是如此。因此,讓我們一起了解一些能夠有助于減少死亡空間的選項(xiàng)。
Windows交換文件:盡管可以重新配置服務(wù)器不使用任何交換空間,但這有悖于微軟的最佳實(shí)踐。減少交換文件能夠回收部分空間,但在發(fā)生宕機(jī)時(shí)你將無法收集完整的內(nèi)存dump信息。稍微激進(jìn)的選擇是在價(jià)格更為廉價(jià)的磁盤空間中創(chuàng)建一個(gè)單獨(dú)的虛擬磁盤,將Windows交換文件轉(zhuǎn)移到該虛擬磁盤中。然而,除非交換文件位于系統(tǒng)磁盤中,否則將無法捕獲內(nèi)存dump信息。
VMware交換文件:VMware基于虛擬機(jī)的交換文件要比Windows的分頁文件更難發(fā)現(xiàn)。
其通常是基于為每臺(tái)虛擬機(jī)預(yù)留的內(nèi)存容量。因此在我們的例子中,如果為虛擬機(jī)預(yù)留8GB的內(nèi)存,那么VMware的頁面文件將只有8GB。如果為虛擬機(jī)預(yù)留16GB的內(nèi)存,那么將不需要預(yù)留任何的磁盤空間,但是必須要舍棄內(nèi)存過量分配功能—這并非理想的選擇。VMware還允許你將交換文件遷移到其他存儲(chǔ)層。盡管這有益于提高磁盤空間的使用效率,但卻需要管理并備份位于多個(gè)位置的虛擬機(jī)文件,所以這可能并非理想的選擇。
盡管看起來并沒有簡(jiǎn)單的解決方法,折衷的選擇可能有助于減輕存儲(chǔ)之苦。盡管慣例以及微軟建議頁面文件是安裝的內(nèi)存容量的1.5倍,但很多管理員默認(rèn)將其設(shè)置為4GB,很少會(huì)超過6GB。畢竟,只有在對(duì)操作系統(tǒng)進(jìn)行故障診斷時(shí)才需要完整的dump文件。除非有問題,否則干嘛浪費(fèi)寶貴的SSD空間呢?對(duì)于VMware交換文件來說,內(nèi)存預(yù)留是一個(gè)無法忽略的巨大優(yōu)勢(shì)。然而,大多數(shù)管理員過量分配的內(nèi)存值不會(huì)超過50%,但更接近安全范圍的內(nèi)存值是20%到30%。這意味著虛擬機(jī)50%的內(nèi)存預(yù)留值針對(duì)可能出現(xiàn)的問題保留了足夠多的開銷,同時(shí)還能夠減少存儲(chǔ)空間的占用。
通過將Windows頁面文件減少到12GB、VMware交換文件減少到8GB,很輕松地就回收了20GB的存儲(chǔ)空間。浪費(fèi)的存儲(chǔ)空間從36%減少到了18%,進(jìn)行了一些較小的調(diào)整并不會(huì)明顯增加風(fēng)險(xiǎn)。當(dāng)然,增加VMware預(yù)留值或者減少Windows交換文件并不適用于所有的工作負(fù)載,一定要在業(yè)務(wù)需求與風(fēng)險(xiǎn)之間有效地平衡存儲(chǔ)的使用。