樓飛燕
(浙江廣廈建設(shè)職業(yè)技術(shù)學(xué)院,東陽 322100)
大數(shù)據(jù)存儲系統(tǒng)架構(gòu)是目前大數(shù)據(jù)管理所面臨的重要問題之一,由于磁盤讀寫性能的挑戰(zhàn),和主存速度差距不斷增加,傳統(tǒng)主存-磁盤存儲架構(gòu)已無法適應(yīng)大數(shù)據(jù)管理需求,無法構(gòu)建有效的大數(shù)據(jù)存儲性能。新型存儲如固態(tài)盤、PCM等技術(shù)則具有價格與壽命的劣勢,目前混合利用新型存儲介質(zhì)與傳統(tǒng)存儲介質(zhì)架構(gòu)存儲系統(tǒng)是應(yīng)用廣泛的一種技術(shù)[1],但該技術(shù)面臨的關(guān)鍵問題則在于I/O性能的不足,直接影響了大數(shù)據(jù)的存儲效率,進(jìn)而影響了系統(tǒng)整體性能,如何提高大數(shù)據(jù)存儲系統(tǒng)的I/O性能是目前大數(shù)據(jù)存儲的重要研究方向之一。本研究對目前存儲系統(tǒng)架構(gòu)優(yōu)化、I/O性能優(yōu)化等方面的技術(shù)進(jìn)行簡要總結(jié)。
負(fù)載多樣性是目前大數(shù)據(jù)存儲系統(tǒng)的主要負(fù)載特征之一,在并發(fā)訪問中,I/O負(fù)載性能的優(yōu)化是存儲系統(tǒng)架構(gòu)的新要求,對I/O高層庫、中間層、存儲系統(tǒng)層分別給予相應(yīng)的優(yōu)化是主要優(yōu)化方法。高層庫的優(yōu)化可以通過應(yīng)用程序接口(API)的靈活化設(shè)計完成,可有效應(yīng)對用戶在運行系統(tǒng)時對I/O負(fù)載特征復(fù)雜性描述的需求,如非連續(xù)內(nèi)存訪問模式(NUSA)[2],負(fù)載特征能夠直接向中間件層與存儲系統(tǒng)層進(jìn)行傳遞,便于各層后續(xù)進(jìn)行針對性優(yōu)化。在中間件層中,由于大數(shù)據(jù)存在請求數(shù)據(jù)量少、非對稱性與非連續(xù)性等負(fù)載特征,可通過列表I/O、數(shù)據(jù)類型I/O、聚集I/O、MPI-I/O、遠(yuǎn)程過程調(diào)用協(xié)議庫等優(yōu)化方法,提高不同I/O訪問模式應(yīng)用所需要的I/O負(fù)載性能。在存儲系統(tǒng)層,可采用相應(yīng)的緩存替換策略或相應(yīng)存儲系統(tǒng)優(yōu)化策略的配置,動態(tài)化調(diào)整并優(yōu)化存儲系統(tǒng)架構(gòu)與存儲策略,以解決存儲系統(tǒng)對復(fù)雜負(fù)載特征的負(fù)載適用性。如基于對象存儲技術(shù),是一種分布式并行存儲系統(tǒng),包括客戶端、元數(shù)據(jù)服務(wù)器與存儲節(jié)點3個部分,數(shù)據(jù)通路與控制通路相分離,每個對象存儲設(shè)備對自身設(shè)備數(shù)據(jù)對象分布進(jìn)行智能管理,該存儲體系架構(gòu)充分實現(xiàn)了元數(shù)據(jù)與文件數(shù)據(jù)的并行性及文件數(shù)據(jù)在對象存儲設(shè)備中的并行性,優(yōu)化了系統(tǒng)I/O性能[3]。
緩存是元數(shù)據(jù)I/0性能優(yōu)化的主要方法之一,隨著固態(tài)硬盤(SSD)在大數(shù)據(jù)存儲系統(tǒng)中的廣泛應(yīng)用,大量緩存讀寫對于SSD壽命的影響成為一個重要問題,I/O密集型應(yīng)用的不斷發(fā)展需要緩存架構(gòu)的持續(xù)優(yōu)化,以解決SSD壽命和元數(shù)據(jù)訪問性能問題。目前的技術(shù)中,可通過就地更新策略減輕SSD寫負(fù)載[4]。混合存儲結(jié)構(gòu)或異構(gòu)存儲是目前解決元數(shù)據(jù)存儲與讀寫速度的一種熟練的技術(shù)。利用f l ash作為元數(shù)據(jù)服務(wù)器(MDS)的存儲介質(zhì),提高元數(shù)據(jù)讀寫速度,Lustre、Hybrid MDSL等均是該技術(shù)的有效應(yīng)用,結(jié)合日志文件,按照訪問熱度,制定元數(shù)據(jù)遷移機制,能夠有效提高SSD利用效率,優(yōu)化I/O性能。SSD與DRAM協(xié)作式技術(shù)也是解決方法之一,DRAM是SSD的調(diào)整緩沖,SSD則是主存,可架設(shè)一個基于對象數(shù)據(jù)的存儲系統(tǒng)。為降低寫放大,還可以log結(jié)構(gòu)順序塊組織SSD,在這種混合架構(gòu)中融入Memcached,以提升性能[5]。
Flash是目前隨機I/O性能良好的一種存儲介質(zhì),可廣泛應(yīng)用于HDD與SSD的混合架構(gòu)或閃存轉(zhuǎn)換層(FTL)是文件系統(tǒng)與閃存芯片之間的中間層,可掩蓋閃存特性,能夠使文件系統(tǒng)以訪問傳統(tǒng)磁盤的方法訪問閃存,能夠執(zhí)行地址轉(zhuǎn)換、損耗均衡與垃圾回收等功能,設(shè)計一種基于新型FTL接口的f l ash存儲系統(tǒng)架構(gòu),既能發(fā)揮f l ash的隨機讀寫優(yōu)勢,又能夠提升I/O性能。也可采取降低SSD垃圾回收負(fù)載的方法提高I/O性能[6]。還可通過日志文件系統(tǒng)的改善,根據(jù)數(shù)據(jù)塊熱度差異進(jìn)行劃分,以減少SSD的隨機寫操作[7]。Facebook的Flashcache是目前混合分層存儲系統(tǒng)應(yīng)用較為廣泛的一種塊設(shè)備緩存模塊,在使用時能夠以內(nèi)核模塊形式實施動態(tài)加載,無需修改內(nèi)核,能夠很好地維持磁盤原有數(shù)據(jù)布局,對于SSD讀寫性能優(yōu)勢與硬盤廉價且耐久的優(yōu)勢良好地結(jié)合在一起,從而構(gòu)建了一個特有的存儲塊設(shè)備,SSD是硬盤的一個緩存,可提高塊設(shè)備訪存速度,虛擬塊設(shè)備一一對應(yīng)磁盤邏輯地址,文件系統(tǒng)層對虛擬設(shè)備的訪問模式與磁盤相同[8]。
目前PCM、STT-RAM、FRAM等新型非易失存儲介質(zhì)應(yīng)用范圍也在逐步擴大,這些存儲介質(zhì)較f l ash更快,企業(yè)級中廣泛應(yīng)用的PCIe即屬于該存儲介質(zhì)的應(yīng)用,在這一存儲系統(tǒng)中,I/O棧面臨更大的瓶頸,針對此問題,有研究提出了優(yōu)化設(shè)計I/O協(xié)議棧,以構(gòu)建一個高性能閃存SSD,進(jìn)一步提高I/O性能,該方法主要從設(shè)備驅(qū)動層與硬件設(shè)備上入手,基于原型系統(tǒng),加入了內(nèi)核緩存旁路優(yōu)化技術(shù)、多請求隊列與多中斷優(yōu)化技術(shù)、本地命令隊列優(yōu)化技術(shù)等,大幅提升了PCIe閃存SSD性能,讀寫寬帶進(jìn)一步提升[9]。也可采用PCM與DRAM協(xié)作式的存儲架構(gòu),較小的DRAM可作PCM緩存使用,通過DRAM緩存延遲PCM寫操作,進(jìn)而降低PCM寫次數(shù)[10]。
第一,基于散列的數(shù)據(jù)查詢方法。該方法是通過散列文件訪問路徑對文件所在MDS進(jìn)行定位?;诖思夹g(shù),可引入分布式哈希表與Chord結(jié)構(gòu)對分布式文件系統(tǒng)進(jìn)行查詢,存儲節(jié)點和數(shù)據(jù)均采取環(huán)形分布式散列技術(shù),數(shù)據(jù)能夠均勻地散列于各個節(jié)點中,可應(yīng)用于并行性數(shù)據(jù)查詢,減少了查詢時延,同時有利于數(shù)據(jù)遷移[11]。第二,Bloom filter+k-d-tree技術(shù),利用Bloom filter技術(shù)建立各分區(qū)目錄表,快速縮小數(shù)據(jù)查找空間,利用k-d-tree在分區(qū)內(nèi)建立內(nèi)在索引,為多維屬性查找提供便利[12]。
目錄樹是目前數(shù)據(jù)存儲系統(tǒng)的主要顯示形式,大數(shù)據(jù)需要龐大的目錄樹支撐,嚴(yán)重降低了元數(shù)據(jù)搜索性能。目前,針對元數(shù)據(jù)搜索性能的I/O優(yōu)化技術(shù)主要包括三種:第一,基于索引式的元數(shù)據(jù)搜索技術(shù)。如Compact、BitMap、C-index分布式索引等技術(shù),其中C-index分布式索引是一種基于樹結(jié)構(gòu)的索引技術(shù),可應(yīng)用于云平臺,能夠支持一維或多維范圍的查詢,能夠在合理時間內(nèi)構(gòu)建大數(shù)據(jù)集的索引,且索引獨立于文件系統(tǒng)之外[13]。第二,基于語義相似性搜索技術(shù),該技術(shù)目前包括了M-Chord、R-Chord、MCAN、SIMIPEER、RT-CAN、DiST、DKDT、P2RP-tree、NR-tree、pSearch、SSW等技術(shù),主要是通過聚類劃分、RPC劃分、R-tree、k-d-tree、CAN等方法進(jìn)行空間劃分,基于Chord、拓?fù)?、CAN、Super-peer、樹形、DHT、SSW等拓?fù)浣Y(jié)構(gòu),可提供范圍查詢、窗口查詢、KNN查詢等方法,部分搜索技術(shù)可支持?jǐn)?shù)據(jù)更新[14]。第三,基于采樣的搜索技術(shù),該技術(shù)是對目錄樹中的各個分支給予采樣打分后,根據(jù)分值,對目錄分支進(jìn)行快速剪切,不斷縮小分層目錄的搜索范圍,進(jìn)而提高搜索速度。第四,基于事件通知的搜索技術(shù)。該技術(shù)可利用時間通知機制,替換不活躍的緩存文件,提高緩存利用率。
元數(shù)據(jù)存儲是大數(shù)據(jù)存儲系統(tǒng)中最為關(guān)鍵的一種元數(shù)據(jù)訪問操作,其I/O優(yōu)化技術(shù)主要包括兩種:第一,優(yōu)化文件創(chuàng)建交互協(xié)議。在文件創(chuàng)建時利用子操作合并、數(shù)據(jù)文件句柄出租、數(shù)據(jù)文件預(yù)創(chuàng)建等方法,確保文件創(chuàng)建的過程保持?jǐn)?shù)據(jù)一致性,減少非必要的數(shù)據(jù)交互操作,提升元數(shù)據(jù)創(chuàng)建性能。第二,優(yōu)化元數(shù)據(jù)存儲方法,即對元數(shù)據(jù)在MDS上的存儲方式進(jìn)行優(yōu)化,以提高元數(shù)據(jù)的持久存儲寫入性能,進(jìn)而提升文件創(chuàng)建性能。
I/O負(fù)載均衡是充分發(fā)揮各個數(shù)據(jù)服務(wù)器性能的重要方法,其優(yōu)化方法主要包括兩種:第一,靜態(tài)負(fù)載均衡,該方法是在程序運行之間,根據(jù)負(fù)載比例對文件數(shù)據(jù)進(jìn)行分塊處理,向不同I/O服務(wù)器進(jìn)行映射,使各服務(wù)器實現(xiàn)負(fù)載均衡,如NCUC方案,對分布式NameNode集群通過Chord協(xié)議實施快速、一致性的哈希計算,該方案能夠自動向NameNode節(jié)點分配元數(shù)據(jù)。第二,動態(tài)負(fù)載均衡,即對文件負(fù)載特征信息未知的前提下,結(jié)合系統(tǒng)運行的動態(tài)負(fù)載信息,對數(shù)據(jù)服務(wù)器之間的負(fù)載分布進(jìn)行實時調(diào)整,進(jìn)而消除負(fù)載熱點,提高I/O性能。該方法對于異構(gòu)性能差異存儲系統(tǒng)有良好的適應(yīng)性,如,基于時間預(yù)測模式的優(yōu)化方法,在I/O調(diào)度前,構(gòu)建一個時間預(yù)測模型評估各節(jié)點性能,按照節(jié)點性能分布I/O任務(wù),確保各節(jié)點任務(wù)完成時間的均衡性;基于主動負(fù)載復(fù)制與被動負(fù)載遷移的分布式NameNode算法動態(tài)負(fù)載均衡策略;基于模塊化結(jié)構(gòu)的對象存儲系統(tǒng)動態(tài)負(fù)載均衡優(yōu)化方法等。
寫操作是I/O負(fù)載占用比例很高的一個操作,在HDD、SSD中均會被放大,進(jìn)而影響I/O性能,優(yōu)化寫操作是優(yōu)化I/O性能的重要途徑。目前的優(yōu)化方法主要是:通過非阻塞寫操作,消除異步預(yù)取頁,增加寫操作并行化運行速率;加入一個基于Flash的寫加速層,或建立一個應(yīng)用型訪問負(fù)載模型,將應(yīng)用數(shù)據(jù)劃分至一個獨立的Flash存儲空間中,進(jìn)而提升I/O寫操作性能;也可利用索引結(jié)構(gòu)進(jìn)行優(yōu)化,如采用未修改過的操作系統(tǒng)內(nèi)核架構(gòu),將寫優(yōu)化的負(fù)面影響降低到最小化,或?qū)⑷罩狙舆t綁定、分區(qū)與范圍刪除等技術(shù),同時確保寫操作性能的優(yōu)化與其他操作性能的正常進(jìn)行;也可通過垃圾收集機制的研究減少寫操作的干擾因素。如基于固態(tài)盤的一種非對稱I/O路徑混合緩存方法MOLAR,該方法采用內(nèi)在驅(qū)逐計數(shù)篩選算法,能夠使SSD選擇緩存數(shù)據(jù)塊,設(shè)定閾值后,該緩存數(shù)據(jù)塊可緩存到SSD,既不會犧牲緩存命中率,又能夠減輕SSD寫負(fù)載壓力,優(yōu)化寫性能;系統(tǒng)將SSD邏輯地址分為兩個獨立區(qū)域,即長活躍與短活躍數(shù)據(jù)塊區(qū)域,短活躍數(shù)據(jù)塊的被替換可能性較高,可聚合在一個集中度相對較高的地址空間內(nèi),進(jìn)而減少SSD垃圾回收對寫操作的影響,優(yōu)化I/O性能;該系統(tǒng)對于SSD寫負(fù)載壓力的降低至少達(dá)到一個數(shù)量級,提高了讀/寫性能與I/O吞吐率。又如通過靜態(tài)條帶化技術(shù)優(yōu)化隨機寫操作的CD-RAIS,將SSD連續(xù)或非連續(xù)請求分配到同一個條帶中,盡量減少靜態(tài)條帶對于校驗信息的頻繁更新,通過滯后數(shù)據(jù)置無效操作與不同條帶更新合并的操作,減少了檢驗信息數(shù)據(jù)塊的更新,對于隨機小寫操作有更強的優(yōu)化性。
I/O轉(zhuǎn)發(fā)架構(gòu)是一種新型的基于Flash存儲介質(zhì)的緩存容量擴展方法,是一種利用分層I/O架構(gòu),對計算資源中的I/O請求進(jìn)行逐層規(guī)約,利用聚合、重組與緩存I/O請求等方法減少計算節(jié)點與文件系統(tǒng)之間的交互操作,以縮小CPU與I/O組件性能之間的差距,同時有利于并行文件系統(tǒng)和計算節(jié)點日益增長之間的互連提出的可擴展性需求問題。該方法可在I/O中轉(zhuǎn)節(jié)點中建立一個基于主存與SSD之間的異構(gòu)緩沖區(qū),接入一個高速存儲介質(zhì),以提高緩存容量,提升I/O性能。同時,利用主動數(shù)據(jù)處理技術(shù),發(fā)揮I/O中轉(zhuǎn)節(jié)點中全功能多核CPU的強大計算能力,主動處理傳輸至I/O中轉(zhuǎn)節(jié)點中的各類數(shù)據(jù),可提供加密、壓縮、數(shù)表轉(zhuǎn)換與字符統(tǒng)計等服務(wù)。該主動數(shù)據(jù)處理塊與多線程并發(fā)數(shù)據(jù)處理服務(wù)能夠加速處理I/O中轉(zhuǎn)節(jié)點中的數(shù)據(jù),計算可縮小的數(shù)據(jù)大小,降低I/O中轉(zhuǎn)節(jié)點與磁盤之間的I/O路徑數(shù)據(jù)傳送量,減少磁盤訪問次數(shù),增加帶寬,提高I/O吞吐率。
緩存技術(shù)對于改善數(shù)據(jù)訪問性能有廣泛的適用性,客戶端數(shù)據(jù)緩存技術(shù)能夠提高大數(shù)據(jù)存儲系統(tǒng)I/O性能。第一,緩存數(shù)據(jù)結(jié)構(gòu)優(yōu)化,該方法是基于數(shù)據(jù)塊的優(yōu)化技術(shù)。第二,緩存管理方法。通過緩存管理優(yōu)化緩存分配,是調(diào)節(jié)各存儲設(shè)備I/O負(fù)載分布的有效方法,可使存儲設(shè)備獲得與其自身服務(wù)能力相匹配的負(fù)載,進(jìn)而消除性能瓶頸。有研究設(shè)計了一種基于負(fù)載特征識別與訪問性能預(yù)測的緩存分配技術(shù)Caper,該算法首先要建立CART模型,預(yù)測I/O請求對不同存儲設(shè)備的性能要求。該算法將應(yīng)用負(fù)載劃分為隨機訪問、順序訪問與循環(huán)訪問三類負(fù)載進(jìn)行分析,能夠減少異構(gòu)存儲設(shè)備的性能差異;同時,該算法還改進(jìn)了時鐘算法,不同I/O訪問特征對應(yīng)的緩存塊有不同權(quán)值大小的設(shè)置,能夠進(jìn)一步改善緩存效益?;蛘呋诜答伣Y(jié)構(gòu)與公平隊列建立一種緩存分配方法,如Qaca算法,主要由基于開始時間公平隊列的服務(wù)請求順序控制模塊與基于反饋結(jié)構(gòu)的緩存管理模塊組成,可通過Qos控制I/O請求服務(wù)順序,通過緩存分區(qū)方法周期性調(diào)整緩存分區(qū)大小。
大數(shù)據(jù)存儲系統(tǒng)I/O性能優(yōu)化在未來仍然面對更快的技術(shù)進(jìn)步及相應(yīng)的技術(shù)優(yōu)化,存儲平臺、存儲管理、混合存儲緩存技術(shù)、I/O寬帶、快速存儲介質(zhì)應(yīng)用及系統(tǒng)優(yōu)化、數(shù)據(jù)I/O寫性能優(yōu)化等將成為未來大數(shù)據(jù)存儲系統(tǒng)性能優(yōu)化的重要路徑及重要研究方向。