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