在完美的世界中,人們能夠將所有的數據運行在速度最快的媒質上。不幸的是,對人們而言,IT世界并不完美。
為了實用起見,人們必須將存儲與應用程序的要求相匹配。數據配置文件快速變化(即活動數據不斷變化)可能會導致這一問題,因為分層模型中的移動數據一直是一個反應過程。此外,隨著IT團隊變得越來越注重云計算,數據和應用程序可能不再位于同一位置上,因此人們還需要能夠跨越距離引用數據的產品,同時保持一致性和完整性。
解決這些I/O性能問題的一個方法是實現存儲緩存。與分層不同,存儲緩存在高性能介質層中保存數據副本,而數據的主要版本保存在數據的存儲副本上,通常是更便宜的磁盤或閃存。
緩存的優點
使用副本而不是實際數據的優點是緩存的內容可以快速更改以匹配活動工作負載。與此同時,緩存中的非活動數據可以簡單地失效,也不必在緩存變滿時移出。
緩存還允許成本有效地使用多種媒體類型,因為只有一小部分數據通常在任何時候都是活動的(大多數應用程序中可能是10%到20%)。相對較少的緩存,組織可以加速大部分I/O請求,這比將所有數據放在快速介質上的成本要低得多,從而顯著改進應用程序的性能。
緩存權衡
對于本地部署,存儲緩存是改善整體I/O性能和在昂貴介質上放置數據的成本之間的折衷。通過高效的緩存算法,可將高比例的I/O(希望90%至95%或更高)提供給緩存。不可避免地,某些數據在需要時不會在緩存中,這意味著恢復到主存儲器中以檢索該數據,從而導致不良的I/O響應。在這種可能是一個問題的情況下,例如使用金融交易系統或在線賭博,將主要數據放在更快的存儲層上是可取的。
在云計算環境中,企業可以使用物理和虛擬設備在本地數據中心或云端緩存數據。這比直接訪問數據提供更好的性能,因為通過公共互聯網或甚至專用網絡檢索數據將具有比本地數據中心高得多的延遲。然而,將數據緩存進出公共云的一個缺點是確保將所有I/O寫入活動都提交回主存儲的一致性問題。
緩存模型
以下是實現存儲緩存的三個主要方法:用戶選擇哪一種方法決定緩存如何處理寫I/O請求:
·直寫法。在主機確認之前,寫請求將寫入高速緩存和主存儲。I/O保證在永久介質上,但性能受到主存儲器速度的限制。由于緩存層不需要彈性(例如,RAID保護),所以直接寫入成本更低并且更容易實現。如果數據已經存在,或從主存儲器讀取并寫入高速緩存,讀請求將直接從緩存中提供。
·回寫法。該過程將數據寫入高速緩存,并立即確認主機的I/O完成。I/O寫入性能良好,盡管在寫入主存儲器之前,數據更加暴露。因此,大多數回寫式緩存的實現通過鏡像到另一個主機或控制器中,或使用電池和UPS備份來保護緩存數據。
·繞寫法。使用此模式,數據直接寫入主存儲器,繞過緩存,然后僅用于讀取請求。使用這種類型的,其中工作負載配置文件包含大量的順序寫入,否則將以隨后重新讀取的數據(如備份或歸檔數據)來對緩存進行配置。
緩存的軟件實現通常至少實現這樣的一種方法,并且可以通過檢測工作負載類型或通過由卷或LUN配置來適應。
緩存步驟說明
緩存方法基于如何處理寫入I/O:
·直寫法(寫入高速緩存和主存儲同步寫入)。
·回寫法(寫入高速緩存和主存儲異步寫入)。
·繞寫法(寫入旁路緩存并直接進入主存儲)。
緩存可以在I/O堆棧的多個位置實現:
·外部陣列(供應商特定)。
·通過設備(適用于遠程訪問數據)。
·虛擬機管理程序(加速虛擬機并從重復數據刪除中受益)。
·操作系統(擴展基本操作系統緩存功能)。
·應用程序(例如數據庫,以減少普通數據的讀取活動)。
在哪里緩存?
緩存在多個地方跨I/O堆棧使用。用戶可以在應用程序,操作系統或管理程序中作為設備或存儲陣列中緩存。每一種想法都是利用更快的媒質-動態RAM,非易失性DRAM(雙列直插式內存模塊)或閃存(NAND)來提高I/O性能。示例包括:
·外部陣列:陣列中的緩存一直是外部存儲系統的一項功能,因為EMC公司在20世紀90年代早期在Symmetrix品牌下推出了集成的緩存磁盤陣列。陣列緩存的目的是減少機械硬盤中看不到的I/O性能,有效地滿足I/O和重新排序寫入和讀取請求,以優化(并有效地最小化)磁頭的移動。通過DRAM,NVDRAM和閃存的混合來實現對用戶來說是透明的磁盤緩存。存儲陣列供應商可以將高速緩存存儲到底層存儲,其中高速緩存比率是固定的,或允許客戶將高速緩存大小指定為陣列設計或構建的一部分。
·基于設備的應用程序緩存可以通過使用擴展網絡上數據可見性的設備實現。這些產品使用典型的協議(如iSCSI,SMB和CIFS以及NFS)。在遠距離訪問數據的地方,例如跨多個數據中心,或者與公共云之間往往會使用這些產品。緩存過程可以在任一方向上運行。也就是說,它可以基于現場更快速地訪問云資源,或者在云中更快地訪問本地資源。
·虛擬機管理程序:虛擬機管理程序緩存允許閃存和DRAM內存用于通過將虛擬機的最活躍部分放入更快的存儲空間來改善虛擬機性能。在VMware的vSphere上,這意味著使用閃存本身與“閃存讀取緩存”功能,它為每個虛擬機分配一定量的閃存。還有第三方工具將緩存基于塊的I/O以及存儲在虛擬機管理程序中的NFS數據存儲上的數據。微軟Hyper-V緩存直接在操作系統中實現,或使用Windows Server 2012中引入的CSV(群集共享卷)緩存等新功能。虛擬機管理程序緩存也可以工作在能夠重復數據刪除數據的多個虛擬機(如類似的虛擬桌面基礎架構[VDI]圖像)。
·操作系統:操作系統中的緩存從一開始就是操作系統的一個功能。緩存過程往往是非常基本的,簡單的做到平滑I/O響應時間。盡管在許多情況下,緩存不考慮不同的I/O配置文件。軟件供應商已經很快將這個機會引入了與存儲媒體捆綁在一起的程序,為Windows和Linux提供了更高效的緩存。
·應用緩存:緩存在應用程序中作為數據庫的一部分或使用定制代碼實現。大多數數據庫平臺都實現某種緩存,例如Oracle SQL Result Cache和Full Database Caching以及MySQL Query Cache。
供應商的緩存產品
所有外部存儲陣列幾乎在DRAM或NAND閃存中緩存I/O。盡管使用全閃存陣列,存儲緩存可能是最小的,因為總體節省成本較低。以下是供應商如何實施緩存的一些具體示例。
靈活存儲使用NAND閃存來緩存寫入I/O,這基于可以立即重新讀取的假設。然而,NVRAM用于在提交到磁盤之前緩存數據。HPE3PAR使用閃存作為DRAM的擴展,用于具有較少訪問數據的第二級層。此功能(稱為自適應閃存緩存)使閃存能夠擴展陣列緩存的功能,而無需部署額外的DRAM。
Avere系統公司具有基于設備的緩存產品,可將NAS存儲擴展到地理位置分散的數據中心或公共云。在公共云空間中,這被實現為虛擬設備而不是物理硬件。還有來自微軟(StorSimple)的云緩存產品可以緩存從Azure編寫和讀取的數據,以及用于本地緩存存儲在公共或私有云中的文件數據的Panzura全局文件系統設備。
在管理程序中,供應商為NAS和塊協議提供I/O加速。例如,將Pernix Data集成到VMwareESXi內核中,并允許使用DRAM和NAND閃存來加速虛擬機的I/O。在使用DRAM的情況下,在集群中的多個主機之間復制寫入I/O以防止硬件故障。Infinio Accelerator軟件緩存了虛擬機的NAS和基于塊的I/O。這是通過在虛擬機中使用DRAM的每個VMware vSphere主機上使用虛擬機來實現的。就SanDisk而言,它提供了FlashSoft品牌下的緩存。最新的4.0版本支持vSphere 6和Microsoft Hyper-V(和Server),而舊版本支持Linux和vSphere ESXi 5.x。
在OS(操作系統)層,有一些用于加速性能的軟件產品。Enmotus公司提供了一系列產品,用于改進傳統的基于磁盤的性能,例如使用閃存進行工作站或服務器,而英特爾公司的緩存加速軟件與其各種SSD產品配合使用。該軟件支持Windows和Linux操作系統,并且可以作為所有常見虛擬機管理程序下的虛擬機運行。其他基于操作系統的緩存產品包括ION Accelerator(SanDisk),AutoCache(Samsung)和Xtrem Cache(EMC)。
最后,Atlantis計算公司有兩個緩存產品,一個針對VDI(ILIO),另一個用于虛擬服務器環境(USX)。ILIO使用具有高水平重復數據刪除的DRAM來支持永久性和非持久性桌面,以提供比使用外部基于閃存的存儲更有效的VDI總體擁有成本。
采用緩存提高性能
緩存可以提高許多地方的應用程序性能。然而,決定在何處進行緩存需要平衡成本節約(避免許可證和硬件成本)和實現的實用性。雖然高度虛擬化的環境通常得益于管理程序中的緩存,但一些戰術實現(例如直接在虛擬機中進行緩存或將SSD分配到數據庫)也可能證明是有用的。