最快和最慢的服務器存儲,其差異是巨大的。基于以太網的iSCSI SAN系統,其延遲可以是RAM或3D-XPoint的6-7倍。RAM只需幾納秒就可響應,3D-XPoint和PCIe型NVMe需要一微秒,一般的SAN存儲需要幾毫秒,而磁盤SAN/NAS系統則需數百毫秒。從最快到最慢的設備,響應速度的差異高達數百萬倍。
基于此,合理利用分層或緩存技術來優化,企業的存儲性能會有天壤之別。當然,理解并決定選用哪種方案,要比隨意選擇困難得多。
例如,通過分層得到的存儲系統和數據管理方法,會比簡單將數據劃分為冷、暖、熱要復雜得多。選擇哪種緩存技術——write-around,write-through或write-back——取決于對系統性能和可靠性的綜合評估。了解分層和緩存之間的差異,知道使用場景和用法,對維護企業級存儲性能至關重要。
緩存種類
存在兩種主要類型的緩存:主機端緩存,和主機/存儲之間的緩存。
主機端緩存:主機的不同層級都可以實現緩存。有些可用機器RAM作緩存,這時數據只在內存總線移動而不經PCI總線,所以速度最快。RAM比最快的PCIe的NVMe存儲還快上千倍。
接下來是基于DIMM的存儲,例如Intel和Micron共同開發的3D-XPoint,還有Diablo的Memory1。這些介質不是RAM,但利用內存總線,所以性能雖然低于RAM,但仍比任何基于PCIe的存儲好很多,且比同價格RAM的容量大至少10倍。這之后是PCIe型NVMe閃存,和具有內置緩存的HBA和網卡。
主機端緩存的弊端是軟件依賴。以上諸多種類緩存的實現,有些要比其他透明。HBA和網卡在各自的板載內存上緩存數據,主機通過標準通用的驅動程序控制硬件工作,其配置緩存的過程很透明。內存型計算、NVDIMM和PCIe NVMe,需要在OS或應用層安裝專有緩存軟件,因此故障隱患或性能下降的可能性更高。
專有緩存設備:這些設備位于主機與存儲之間,對OS和應用完全透明。其硬件升級也完全無關于主機運行狀態。和RAM和NVDIMM比性能和延時要弱很多,但若應用的延時需求在微秒范圍,便可利用這種專有緩存設備來顯著提升性能。
分層種類
分層存儲優化技術,初現于世紀之交,首先在硬盤上實現。15,000轉硬盤作為第一級,10,000轉第二級,7,200轉第三級,每一層都比上面層更慢,但更便宜。SSD出現后,變成了第零級(這樣做是為了不必重構現有定義)。但從那時起,更快的SSD、NVDIMM、甚至DRAM型緩存技術的出現,以及更慢的云存儲、冷存儲、磁帶的介入,讓分層的級別不斷增加,事情也變得越來越亂。
存儲管理和存儲虛擬化軟件可將數據發至不同層次,過程中完全透明于主機,因此單個目錄中的文件可能存儲在很多層次,但呈獻給OS的只是一個連續的文件夾。
各種存儲管理軟件有著不同的分層機制。其一,首先寫入最快層,然后未讀取的數據漸次移動到更慢層。其二,根據應用類型、目標目錄或其他一些預設定的標準,分配不同寫入層次。許多SAN系統提供某種形式的自動分層,這比基于卷或LUN的手動分層優勢顯著。
最初的自動分層體系使用簡單的老化算法,其中主機讀來的任何數據自動移至最快層,隨即按未訪問時間長短漸次移動到更慢、更便宜的層次。同時,預測算法將文件按讀取頻度分組,并將頻度更高的文件移動到更快層。后來的自動分層體系加入了更多細分算法,旨在為最長訪問的文件提供更好性能。
分層系統一般運行在SAN系統上,這意味著不同的存儲系統通常有著自己的分層機制。不同的SAN供應商,分層機制亦不同,這意味著采購了多供應商方案的大型企業,要么各自為政地管理不同存儲方案,要么需要采購額外的存儲管理系統來統領全局。
自動分層通常提供最佳性能,且近乎無人值守。但是,手動分層更適合一些特定場景。例如,盡管有部分不經常訪問的文件,DBA也希望在同一層上保留所有數據庫文件,以確保最高性能。對于其他一些只在緊急狀況下加載特定文件,或定期為特定任務執行備份維護的應用,將其手動分層到最低性能層,也是可以的。
數據丟失的不同可能性
緩存和分層技術帶來的不同影響,在災備/業務連續性管理上體現得最清楚。理論上,當數據最初被寫入存儲時,寫程序會一直等待直到系統確認數據已被成功寫入,如果系統故障導致確認無法發出,則寫程序會恢復到寫入前的狀態。但如果數據初始寫入地是內存緩存且寫程序收到了數據寫入的系統確認,但數據在后臺寫入最終目的地過程中掉電,則數據丟失的可能性大小和采用何種緩存策略相關:
Write-through緩存:數據讀寫均經過緩存,但系統一直等待數據從緩存寫入到最終(永久)存儲后,才發出寫入確認。這樣確保了數據的完整,但寫入延遲較高。當然,讀數據時可以直接從緩存拿,所以讀取速度將加快。
Write-around緩存:數據的讀寫均繞過緩存,直接與最終目的地往來。這種方法與Write-through相比,寫性能更高,因為寫入不經過緩存層,但讀性能受損,因為緩存層沒有數據。
Write-back緩存:數據的讀寫均經過緩存,一旦數據寫入緩存系統就發出寫入確認。這種緩存策略提供最好的讀寫性能,但掉電丟數據的可能性最大。當然,可通過配備電池和額外的閃存緩存層來保證數據安全。
對于分層存儲架構,因為系統直到數據直到寫入永久存儲層才確認,因此損失的可能性降到最低,但性能比緩存架構也低得多,因為任何永久存儲的寫入延遲都比內存大很多。
附加用例
使用分層或主機端緩存,可以加速幾乎任何應用,訣竅是按需選擇和優化。例如,加速數據庫、媒體服務器或實時分析系統的緩存優化策略是不同的,因為數據隨機/順序性、數據完整性、讀取延遲、IOPS、帶寬等的要求均不相同。另外需考慮的是實現成本。從$100/GB到$0.1/GB,各種方案都存在,需要選擇性價比最高的。
許多情況下緩存/分層都可以通過較小投資實現極大的性能提升。主機端緩存/零級的SSD,在容量僅為下一級10%-20%時,可將性能提升至少10倍。沒有放之四海皆準的標準,必須按照自己的實際需要來配備最佳性價比的加速方案。