我們已經到達了新的階段,一半以上的生產工作負載來自于虛擬化。沒有采用虛擬化的工作負載,極可能是因為它是IO密集型應用或對延遲非常敏感。這種類型的工作負載,長期以來被認為虛擬化是不可能或不現實的。然而,虛擬化閃存加速使這種類型應用的虛擬化變得更加容易。
VMware和微軟都有各自的方法來提供基于閃存的緩存加速功能。在兩種情況下閃存(固態硬盤形式)都用來做讀緩存加速操作。微軟的方法同時提供寫加速。
WSS使閃存使用自動化
微軟提供的虛擬機閃存加速方法是基于WSS,而非基于Hyper-V。當然,Hyper-V是windows服務器的一個角色,能夠完全的使用大多數WSS的特性。
在Windows Server 2012 R2中,微軟介紹WSS的本地分層存儲功能。該功能允許管理員將可用的物理存儲匯集到存儲池。一個存儲池可以包含固態硬盤(SSD),傳統硬盤(HDDs)或者兩者的混合。在大多數情況下,windows操作系統可以自動的區分兩種存儲類型。當系統無法識別SSD的情況下,通過使用PoweShell工具,可以將SSD和HDD進行手工區分。
一個Windows存儲池的主要工作是提供裸存儲空間給一個或多個虛擬磁盤使用。虛擬磁盤可以通過服務器管理器創建,可以被視為本地存儲或者作為Hyper-V虛擬機的存儲。真實情況下,許多的部署采用嵌套的方法,一個虛擬磁盤創建在一個存儲池中。虛擬磁盤作為宿主操作系統的本地存儲,Hyper-V虛擬機使用的磁盤駐留在該虛擬磁盤上。
如果虛擬磁盤創建在存儲池之上,虛擬磁盤向導檢查SSD的存在。如果固態磁盤存在,新的虛擬磁盤向導會顯示一個復選框,用戶可以選擇使用分層存儲。這個復選框是否顯示取決于固態磁盤的數據是否足夠容納虛擬磁盤的存儲分布。例如,一個使用鏡像分布的虛擬磁盤需要兩個物理磁盤。如果選擇使用分層存儲,就需要兩個固態磁盤。
當虛擬磁盤使用分層存儲創建,會發生兩件事。
1.Windows操作系統跟蹤讀取最頻繁的數據塊。這些數據塊(微軟定義為熱數據塊)將被自動遷移到高速存儲層中。這個想法是最經常訪問到的數據應該獲得最好的性能。手動將文件移到高速層也是可能的,它們會永遠駐留在高速存儲中。
2.Windows創建一個1GB的寫緩存(假設高速層足夠大)。寫緩存設計用來提高寫操作速度。操作系統可以首先在高速層寫下數據,然后在I/O需求較低的時刻將數據移動到標準層。
如前所述,直接使用創建在Windows存儲池之上的虛擬磁盤來配置Hyper-V的虛擬機是可能的。如果Hyper-V的虛擬磁盤存在于存儲池的虛擬磁盤,Hyper-V的虛擬磁盤仍然能夠享有基本能力的效益。值得注意的是,如果有多個Hyper-V虛擬磁盤駐留在一個單一的Windows虛擬硬盤,Hyper-V磁盤將共享Windows磁盤的I/O帶寬和高速緩存。
VSphere創建專用的讀緩存加速
微軟并不是使用緩存加速唯一的虛擬化廠商。VMware通過它的vFRC功能來支持高速緩存加速。
VMware采用的方法和微軟的方法有很多共同點。vFRC通過使用閃存存儲來降低IO延遲。緩存加速的進程也是完全透明的,并且虛擬機感知不到緩存的存在。因此,緩存相關的代理是不需要的。
這是它們的相似之處。微軟采用的方法是在由Windows服務器操作系統控制的存儲層之上創建虛擬磁盤。相比之下,VMware將緩存作為一個可設置的資源。VSphere允許創建CPU資源池和內存資源池。基于閃存的緩存加速是基于創建的一種叫做虛擬閃存資源的邏輯對象。
虛擬閃存資源是一組閃存存儲容量的邏輯集合(基本上,是SSD的存儲池)。盡管如此,關于虛擬閃存資源還是有一些重要的事情需要了解:
· 閃存必須致力于緩存加速。固態磁盤不能被SAN或NAS存儲和虛擬閃存資源共享—它們只能屬于兩者中的一個。同樣的,你不能把一個VMware的數據存儲區放在虛擬閃存讀緩存存儲中。
· 它是一個主機層的對象。換句話說,緩存所使用的資源在一個特定的主機服務器上。緩存不是一個緩存級別的對象,并且它的內容不會在集群節點之間進行復制。然而,vMotion是緩存加速感知的。管理員可以選擇在使用vMotion功能遷移一個虛擬機到另一臺主機時,將緩存內容包括在內,或者可以將緩存內容拋棄掉。如果緩存內容被復制,目標主機必須有自己的虛擬讀緩存。
· 在vMotion過程中使用虛擬讀緩存加速會有懲罰。如果vMotion過程之中包括緩存內容,對比緩存不存在或者緩存內容沒有被遷移的情況,它會耗費更長的時間來遷移虛機。不幸的是,估計由于緩存內容添加而造成的vMotion時間增加是很困難的,因為該時間是基于諸如緩存大小和可用的網絡帶寬、存儲帶寬來決定的。
· vMotion過程不包括緩存內容也會有懲罰。如果緩存的內容不包括在vMotion的過程中,vMotion進程將耗費和緩存不存在時相同的時間來完成遷移過程。這時vMotion完成后性能懲罰會發生,因為虛擬機不會在有數據塊存儲在SSD緩存中。虛擬機的性能最終還是會恢復,但是這時緩存不得不先重建。這個過程類似于一個基于閃存的緩存加速是第一次添加到虛擬機中,這時vSphere需要學習哪些數據應該被緩存。
如你所知,大多數Hyper-V的部署是基于共享存儲的。如果所有的Hyper-V主機使用相同的物理分層存儲,實時遷移不會影響高速緩存的內容。
雖然VMware的vFRC設計的主要目的是提高虛擬機的性能,但是虛擬機是不會直接訪問緩存的。相反,vFRC的一個組件“vSphere閃存讀緩存加速基礎設施(vSphere Flash Read Cache Infrastructure) ”扮演著控制高速緩存使用的代理人角色。vSphere閃存讀緩存加速基礎設施也能夠強制執行管理員制定的緩存策略。
然而vFRC基礎設施的主要工作是虛擬機緩存訪問的代理程序,它允許虛擬機管理程序通過虛擬閃存主機交換緩存功能來利用緩存,該功能可以通過SSD來取代vSphere5.0的swap分區。
無論你是在微軟或者VMware環境下工作,基于閃存的緩存加速都有很大的潛力來提高虛擬機的性能。從緩存加速中獲取最大效益的關鍵是了解你的虛擬機管理程序是如何使用緩存的,然后依照你的虛擬化管理程序認證過的最佳實踐來添加閃存存儲。