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