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