長期以來,數(shù)據(jù)都是一種蘊含著價值的商品,不論是在企業(yè)內(nèi)部環(huán)境中部署,抑或是放到公有云端去實現(xiàn),它 都是IT系統(tǒng)的核心所在。自上世紀50年代,磁帶和磁盤發(fā)明后,我們便產(chǎn)生了在存儲介質(zhì)上持久存放數(shù)據(jù)的需要。
當然,這種持續(xù)的數(shù)據(jù)存儲是要付出代價的。不論是磁盤、磁帶或是閃存,存儲設(shè)備的速度都無法趕上處理器和內(nèi)存系統(tǒng)的發(fā)展。于是,為了得到良好的整體存儲性能,我們必須不斷嘗試各種方式,使得存儲介質(zhì)運轉(zhuǎn)得更快。
我們在外部存儲介質(zhì)中保留數(shù)據(jù)通常只有兩種原因:長期存儲和數(shù)據(jù)保護。
長期存儲意味著在應(yīng)用程序關(guān)閉或服務(wù)器斷電后數(shù)據(jù)仍然能得以保留。數(shù)據(jù)無法長期駐留于系統(tǒng)內(nèi)存(DRAM),所以當服務(wù)器或應(yīng)用程序發(fā)生故障時,數(shù)據(jù)每隔一段時間就要寫入到相應(yīng)的介質(zhì)之中。
數(shù)據(jù)保護亦是至關(guān)重要的,服務(wù)器有時會出現(xiàn)故障,甚至發(fā)生一些意想不到的事故災(zāi)害,如果不在多個存儲介質(zhì)上創(chuàng)建冗余,保留多個數(shù)據(jù)副本,我們很容易會遇到麻煩。數(shù)據(jù)保護機制包含RAID、糾刪碼和快照等,它們可以用來保護數(shù)據(jù)免遭物理和邏輯損壞,以及常見的“使用者操作失誤”。
存儲的性能指標
存儲性能的評估通常使用這三種指標。
延遲:用以衡量設(shè)備的響應(yīng)時間。系統(tǒng)內(nèi)存的延遲通常以納秒(ns)為單位、閃存以微秒(μs)計,而硬盤驅(qū)動器的單位則用毫秒 (ms)。
帶寬:表示設(shè)備在特定時間段內(nèi)傳輸數(shù)據(jù)的能力,通常以每秒兆比特(Mbps)或每秒千兆比特(Gbps)為單位。
吞吐量:代表了設(shè)備傳輸數(shù)據(jù)的實際能力,通常以每秒兆字節(jié)(MBps)或每秒千兆字節(jié)(GBps)為單位。
雖然看似類同,但帶寬與吞吐量卻有著本質(zhì)上的差別。例如,硬盤驅(qū)動器(HDD)和固態(tài)驅(qū)動器(SSD)接口的最大帶寬相同,但其輸入/輸出(I / O)順序或隨機、讀或?qū)懙臄?shù)據(jù)吞吐量卻有著天壤之別。
在理想環(huán)境中,所有的數(shù)據(jù)都將存儲在系統(tǒng)內(nèi)存之中,以最快的性能提供訪問,但系統(tǒng)內(nèi)存代價不菲且容易丟失,服務(wù)器內(nèi)又只能配置有限的容量。大多數(shù)應(yīng)用程序不需要一直訪問所有的數(shù)據(jù),考慮到成本因素,我們訪問這些數(shù)據(jù)的頻繁程度和所要求的速度決定了數(shù)據(jù)最適合的存儲位置。
那么,如何才能充分利用存儲資源呢?我們可以怎樣調(diào)優(yōu),才能以最低的成本贏得最佳性能?
存儲介質(zhì)性能的比較
在深入探討之前,我們先來看下可供企業(yè)選擇的各種存儲介質(zhì)的層次結(jié)構(gòu)。
DRAM:是在性能和延遲方面都表現(xiàn)最佳的存儲介質(zhì),缺點是所存儲的內(nèi)容并不穩(wěn)定。DRAM容量擴容并不容易,而且不能在多臺服務(wù)器之間輕松共享。DRAM可以按字節(jié)尋址。
NVDIMM:使用和DIMM相同的外形尺寸,可以像DRAM那樣非??焖?,并且在斷電時可以借助閃存或其它技術(shù)來保留內(nèi)容。其在速度上略遜于DRAM,也有類似的訪問性和擴展性問題。NVDIMM通常以字節(jié)尋址。
閃存:非??焖俚某志么鎯橘|(zhì),并具有良好的可擴展性,可作為單臺服務(wù)器或是存儲陣列的組成部分。它比DRAM便宜很多,并按數(shù)據(jù)塊尋址。根據(jù)不同價格、性能、成本可以區(qū)分出不同的閃存類型,如MLC、TLC等。
硬盤驅(qū)動器:一種相對較慢的,用以長期存儲數(shù)據(jù)的介質(zhì),現(xiàn)在更多用于歸檔和備份數(shù)據(jù)的存放。硬盤驅(qū)動器同樣是數(shù)據(jù)塊尋址的。
上述這些介質(zhì)均可單獨或混合使用,從而實現(xiàn)了一系列不同存儲性能的方案。
服務(wù)器內(nèi)部的存儲介質(zhì)選擇
存儲可以直接部署在服務(wù)器內(nèi)部,盡可能靠近中央處理器,縮短數(shù)據(jù)的I/O路徑,從而減少延遲。
閃存則必硬盤具有更高的性能水平。根據(jù)訪問數(shù)據(jù)的性能需求,可以組合使用不同閃存/硬盤驅(qū)動器容量配比的方案,從而在成本和性能之間達成平衡。閃存與系統(tǒng)內(nèi)存可以用作高速緩存來存放活躍的數(shù)據(jù),而同時將相對靜止的數(shù)據(jù)存儲到硬盤驅(qū)動器上。
這其中涉及到命中率的問題,即活躍數(shù)據(jù)都存儲在緩存中,根據(jù)命中率可以推測出I/O性能。如果數(shù)據(jù)需要從硬盤驅(qū)動器而非緩存中讀取,那么其訪問請求的性能將受到影響。一種方案是將廉價和昂貴的不同閃存類型混合使用,從而實現(xiàn)適合的方案性價比。
服務(wù)器中存儲的另一項考慮因素是要防止設(shè)備故障。假如驅(qū)動器發(fā)生故障,那么服務(wù)器可能要完全宕機才能更換部件,除非該設(shè)備支持熱插拔。假如服務(wù)器發(fā)生故障,內(nèi)部設(shè)備上的數(shù)據(jù)都將無法訪問,因此我們需要復(fù)制數(shù)據(jù)。這取決于將一組服務(wù)器連接起來的網(wǎng)絡(luò)的速度,給I/O增加了額外的延遲。
考量存儲陣列的性能
共享存儲陣列為數(shù)據(jù)帶來了更高的可用性和更好的可訪問性,不過由于需要遍歷以太網(wǎng)或光纖通道的存儲網(wǎng)絡(luò),這可能會造成延遲。
目前一些新產(chǎn)品正在上市,提供不同的連接選項(如RDMA,RoCE和NVMe)等解決方案。相比傳統(tǒng)的存儲網(wǎng)絡(luò),這些新技術(shù)雖然擴展性較差,但顯著降低了延遲。
存儲陣列亦可以通過選擇不同的存儲介質(zhì)來改善性能。
DRAM緩存能夠改進讀寫性能,而混合系統(tǒng)中的閃存與磁盤驅(qū)動器則能實現(xiàn)最好的方案性價比。
同時,與上文中討論的“緩存未命中”問題的風(fēng)險相比,全閃存系統(tǒng)能夠確保所有數(shù)據(jù)的I / O性能與延遲。
閃存技術(shù)的應(yīng)用引發(fā)了一系列技術(shù)的產(chǎn)生,已經(jīng)不在局限于單純地提高吞吐量、解決延遲。通常來說,用越多的內(nèi)存和閃存來取代磁盤,我們就能得到越好的存儲性能。
存儲網(wǎng)絡(luò)的性能
當使用外部存儲陣列時,我們可以通過調(diào)整存儲網(wǎng)絡(luò)以提高整體系統(tǒng)的性能。
最新的主機總線適配器(HBA)帶來了非常高的帶寬(32Gbps光纖通道、40Gbps和100Gbps以太網(wǎng)),而網(wǎng)絡(luò)交換機則實現(xiàn)了很低的延遲。通常來說,更快的單個設(shè)備都會促使整體系統(tǒng)的性能得以更好地發(fā)揮,盡管不斷升級交換機的成本或許是不容小覷的。通過添加更多的前端連接(額外的HBA),我們可以將工作負載擴展分配到更多的連接之上,從而提高對存儲陣列的吞吐量。
另有一些其它的技術(shù)同樣可以改善性能:
負載均衡:這項技術(shù)能夠在盡可能多的設(shè)備上平衡資源的利用率。這意味著你可以將數(shù)據(jù)擴展分布到多塊磁盤(閃存或硬盤驅(qū)動器),并充分利用所有連接,能夠在服務(wù)器和存儲陣列之間實現(xiàn)寬條帶化技術(shù)。
負載優(yōu)化:訪問活躍數(shù)據(jù)會產(chǎn)生較重的工作負載,可以將其遷移到更快速的設(shè)備上,例如閃存,由于閃存代價不菲,因此需要盡可能使用在最需要的地方。假如可以克服服務(wù)器可用性的問題,那么NVDIMM的應(yīng)用或許可以大大提高某些工作負載的性能。
緩存:我們已經(jīng)探討過存儲陣列和服務(wù)器上的緩存,其亦可以跨設(shè)備使用,即在服務(wù)器上使用DRAM和閃存,對來自外部存儲的I / O進行緩存,這在讀取操作上沒有限制,而寫出操作則要求一定的彈性以防止數(shù)據(jù)丟失。
存儲網(wǎng)絡(luò)調(diào)優(yōu):在更為復(fù)雜的存儲網(wǎng)絡(luò)中,共享存儲端口和交換機之間的鏈路或許會變成瓶頸,需要檢查隊列深度和緩沖區(qū)信用閥值等設(shè)置,或者利用網(wǎng)絡(luò)自帶的拓撲技術(shù)進行優(yōu)化。
通過上述討論,我們不難看出:改善性能的前提是具備適合的度量方式。如果缺乏合適的度量工具,量化性能問題、判斷問題是否得以解決便無從談起。
所有存儲供應(yīng)商都會提供衡量其產(chǎn)品性能的工具,甚至還能實現(xiàn)端到端的性能測試,顯示出存儲對整體應(yīng)用系統(tǒng)性能的影響。通過這些工具,你還可以看出當前實時的性能和歷史的性能數(shù)值——這對于持續(xù)改進存儲系統(tǒng)性能而言亦是至關(guān)重要的。