大数据存储系统I/O性能优化技术研究进展
大數據存儲系統I/O性能優化技術研究進展
肖利民,霍志勝
北京航空航天大學計算機學院,北京 100191
摘要:大數據存儲系統的I/O性能是影響大數據應用整體性能的關鍵因素之一,總結了當前在存儲系統架構、元數據I/O性能、數據I/O性能方面開展的大數據存儲系統I/O性能優化工作,并指出了未來大數據存儲系統I/O性能優化的一些研究方向。
關鍵詞:大數據存儲系統;存儲系統架構;元數據I/O性能;數據I/O性能;性能優化技術
doi:10.11959/j.issn.2096-0271.2017062
論文引用格式:肖利民, 霍志勝. 大數據存儲系統I/O性能優化技術研究進展[J]. 大數據, 2017, 3(6): 65-84.
XIAO L M, HUO Z S. Review of I/O performance optimization technology for big data storage system[J]. Big Data Research, 2017, 3(6): 65-84.
1? 引言
大數據已成為當前IT領域的重點研發內容和產業發展方向,我國把應對大數據問題帶來的機遇和挑戰提升到了國家戰略層次,國家自然科學基金、國家重點研發計劃等國家科技計劃設置專項引導我國大數據研發工作,國務院頒布《促進大數據發展行動綱要》推動我國大數據產業發展工作。根據《自然》雜志對大數據及其應用的論述,數據存儲是大數據處理和利用過程中不可或缺的關鍵環節。大數據存儲系統是滿足大數據應用存儲需求的基礎設施,其輸入/輸出(input/output,I/O)性能直接決定大數據存儲效率,是影響大數據應用整體性能的關鍵因素。因此,如何提升大數據存儲系統I/O性能是當前大數據領域的研究熱點。
大數據存儲系統大多沿用傳統存儲技術構建,甚至大多直接由傳統存儲系統擴展或升級而來,在大數據應用環境的巨大負載壓力下,元數據I/O和數據I/O性能極易成為大數據存儲過程中的性能瓶頸。例如,在大數據應用環境中,元數據I/O在整個存儲系統I/O活動中占比很高,而支持元數據I/O的傳統目錄樹結構組織方式往往是針對小規模數據設計的,不適應大數據應用導致的日益龐大的目錄樹規模,因此,元數據I/O極易成為影響存儲系統I/O性能的關鍵瓶頸。同時,在大數據應用環境中,數據規模超過PB級甚至EB級,文件數量達到萬億級別,用戶數量急劇增長,用戶I/O負載呈現出多樣性特征,且存在數據服務器中數據分布不合理、I/O帶寬資源競爭劇烈、小文件大量存在等因素,數據I/O同樣容易成為影響存儲系統I/O性能的瓶頸。
為了適應和滿足大數據應用環境中數據存儲的需求,針對當前存儲系統中元數據I/O和數據I/O面臨的性能瓶頸問題,國內外學術界和工業界主要從存儲系統架構優化、元數據I/O性能優化、數據I/O性能優化3個維度開展了大量的大數據存儲系統I/O性能優化工作,如圖1所示。因此,本文首先總結和分析了當前在存儲系統架構優化方面的工作,包括基于負載特征的存儲系統架構、密集型元數據I/O緩存架構、基于Flash的存儲系統架構、新型元數據管理架構;其次,總結和分析了當前存儲系統元數據I/O性能優化技術,包括元數據搜索、元數據查找、元數據創建3方面的優化技術;再次,總結和分析了當前存儲系統數據I/O優化技術,包括數據I/O的文件級分條方法、數據I/O的負載均衡方法、數據I/O的最小化訪問沖突方法、數據I/O的寫優化技術、數據I/O的緩存容量擴展技術、數據I/O的帶寬分配技術、數據I/O的客戶端緩存技術;然后,分析和指出了未來大數據存儲系統I/O性能優化可能的一些研究方向;最后,對全文進行了總結。
圖1 ?大數據存儲系統I/O性能優化相關研究工作
2 ?存儲系統架構優化技術
在大數據應用環境中,當前存儲系統架構主要面臨如下問題。
?? 大數據應用的負載特征呈現出多樣性,存儲系統的通用架構無法有效應對多樣化的負載,從而造成存儲系統I/O性能的異常起伏。
?? 大數據應用使得元數據I/O請求呈現密集型負載特征,導致元數據服務器I/O帶寬資源的競爭加劇,從而引起元數據I/O性能下降。
?? 支持元數據I/O的傳統目錄樹組織方式是為較小規模的存儲系統設計的,不適應大數據應用中日益龐大的目錄樹規模,從而限制了元數據I/O性能。
?? 隨著新型Flash存儲介質的大量應用,亟需研究新的存儲系統架構,以充分利用Flash隨機讀寫性能優勢,從而提高存儲系統I/O性能。
針對上述問題,當前學術界和工業界從存儲系統架構角度出發,開展了大量I/O性能優化工作。
2.1 基于負載特征的存儲系統架構
在大數據應用環境中,存儲系統服務的I/O負載通常來自多種類型的大數據應用,普遍采用“one-size-fits-all”的存儲系統架構設計,無法很好地滿足大數據應用負載對存儲資源訪問的多樣性需求,往往導致底層存儲系統的性能未被充分利用。
在具有不同負載特征的并發大數據應用環境中,優化I/O負載的性能給存儲系統的架構設計帶來了新的需求和挑戰。首先,不同類型應用對存儲資源的訪問具有多樣性的需求,根據負載特征設計合理的I/O優化策略是滿足存儲需求的必要手段,并且,還需要細粒度地配置和管理啟用的I/O優化策略,而目前的存儲系統如并行虛擬文件系統(parallel virtual file system,PVFS)、 Lustre等只支持文件數據分布等少數優化策略。其次,在系統運行過程中,針對I/O負載產生的請求,需要選擇符合其特征的優化策略,以滿足相應的存儲訪問需求,而現有的存儲系統架構主要面向大規模科學計算應用而設計,難以在優化策略的實現以及I/O請求的處理過程中,區分I/O負載的數據存儲和訪問方式。最后,存儲系統需要支持在系統不停機的情況下,根據負載特征的變化情況動態調整處理I/O請求使用的優化策略,并保證調優過程中并發訪問的正確性,而現有的靜態配置和動態配置方法無法同時滿足上述需求。
為優化存儲系統架構,使其更好地適應負載多樣性,通常分別從存儲系統架構的I/O 高層庫、I/O中間件層、存儲系統層開展相應的優化,具體如下。
●基于負載特征的I/O高層庫優化:通常的思路是設計一套靈活的應用程序編程接口(application programming interface,API),以支持用戶在運行時描述其復雜的I/O負載特征,如非連續內存訪問結構[1]等,從而將應用負載特征傳遞到中間件層和存儲系統層,以便后續開展針對性優化。
●基于負載特征的I/O中間件層優化:針對大數據應用存在的請求數據量小、非連續、非對稱等典型負載特征,在I/O中間件層采取列表I/O(list I/O)[2]、 數據類型I/O(datatype I/O)[3]、聚集 I/O[4]、 聚集緩存[5]、預取[6]、數據析取[4]、 高性能便攜式MPI-I/O(R OM I/O)[7]、網絡文件系統用戶空間遠程過程調用協議庫(vNFS)[8]等針對性優化方法,以提高不同I/O訪問模式的應用負載的I/O性能。
●基于負載特征的存儲系統層優化:針對不同類型負載特征,動態調整和優化存儲系統架構及其策略,選擇合適的緩存替換策略或配置相應的存儲系統優化策略[9-15],以提高存儲系統的負載適應性。
2.2 密集型元數據I/O緩存架構
在大數據應用環境中,存儲系統的數據量變得十分龐大,元數據的規模也日益龐大,往往超過動態隨機存取存儲器(dynamic random access memory,DRAM)緩存的容量;同時,大數據應用的用戶數量急劇增長,多用戶并發訪問造成元數據I/O呈現密集型負載特征。這些都造成了元數據I/O資源競爭加劇,影響了存儲系統的元數據I/O性能。
當前互聯網大數據應用環境中,用戶數量的規模達到上億級別(例如,百度、淘寶等),在高峰時期,用戶并發訪問存儲系統帶來大量的讀寫請求,造成元數據服務器I/O資源的競爭,從而降低存儲系統的整體性能,而Flash存儲介質能夠有效提高存儲系統的性能,因此,互聯網大數據應用大量采用Flash存儲介質,以提高元數據I/O的性能。
為有效應對大規模密集型元數據I/O訪問需求,主要的思路是構建基于Flash的元數據緩存架構,利用Flash存儲介質隨機讀寫性能的優勢,提高大規模密集型元數據I/O性能。同時,為避免密集型元數據I/O中寫負載過重影響固態硬盤(solid state drive,SSD)壽命,可通過重構文件系統減少元數據寫回尺寸,采用就地更新(in place)策略降低SSD寫負載[16-18]。此外,也可利用基于SSD和DRAM協作式緩存架構,在盡量延長SSD壽命的同時,提高元數據I/O性能[19]。
2.3 基于Flash的存儲系統架構
當前,大部分存儲系統仍采用硬盤驅動器(hard disk drive,HDD)作為主要存儲介質,不能有效滿足大數據應用的I/O性能需求。相比之下,Flash存儲介質具有更好的隨機I/O性能,能夠更好地滿足大數據應用的I/O性能需求。但是,如果簡單地將Flash加載到存儲系統中,因受傳統存儲架構的約束,并不能充分發揮Flash的隨機讀寫性能。
在互聯網大數據應用環境中,隨著網絡和硬件設備技術的發展,用戶數量規模變得十分龐大,如果存儲系統仍以HDD作為主要的存儲介質,由于HDD固有的機械式特性,將難以滿足應用的性能需求,造成極大的等待時延,降低用戶的體驗。Flash存儲介質具有優良的隨機讀寫性能,能夠提高存儲系統的性能,因此,互聯網行業對基于Flash的存儲架構進行了大量研究。
為使Flash在存儲系統中更好地發揮其優勢,滿足大數據I/O性能需求,基本的優化思路是設計和構建基于Flash的存儲系統架構,針對當前存儲系統架構中現有協議未能充分發揮Flash隨機讀寫性能優勢的問題,研究相應的優化策略[20-23],例如,利用SSD再使用機制預取無效數據;并行化二次寫以提升寫操作性能;利用追加日志機制發揮Flash的隨機讀寫性能;設計基于新型閃存轉換層(Flash translation layer,FTL)接口的Flash存儲系統架構等,以發揮Flash隨機讀寫性能優勢,提高存儲系統I/O性能;基于新型的SSD內部管理機制(如強力控制器、 基于奇偶校驗的冗余NIC陣列(RAIN)、電容支持隨機存取存儲器),降低SSD的 垃圾回收(garbage collection,GC)負載以提高它的性能,從而提高 存儲系統的I/O性能[24]。
2.4 新型的元數據管理架構
傳統基于目錄樹的元數據管理架構已被應用三十多年,當數據規模較小時,能夠有效管理存儲系統的元數據。但進入大數據時代,目錄樹規模日益龐大,傳統的目錄樹映射方式、元數據組織和管理方式等容易成為制約元數據I/O性能提升的瓶頸。
為提升元數據I/O性能以滿足大數據應用需求,當前主要從新型目錄樹映射方式、基于數據庫的元數據組織架構兩方面開展元數據管理架構的優化 。
●新型目錄樹映射方式[25]:傳統文件系統采用元數據與數據一對一的映射方式,不能有效利用時間負載局部性特征,限制了文件系統的性能提升,因此,設計新型的目錄樹映射方式,采用元數據與數據一對多的映射方法,能有效提高文件系統的元數據I/O性能,同時,利用新型的元數據完整性保護方式 可提高元數據I/O的性能[26]。
●基于數據庫的元數據組織架構[27-29]:采用非結構化數據庫組織和管理元數據,可有效提高元數據I/O性能,并且利用基于高速帶寬的分布式數據庫進行元數據管理,還可提高元數據管理架構的可擴展性。
針對大數據應用的多樣性負載特征、密集型元數據負載等造成的存儲系統I/O性能問題,學術界和工業界從存儲系統架構角度進行了大量研究,以優化元數據I/O和數據I/O性能。由于相變存儲器(phase change memory,PCM)等新型存儲介質的出現,未來存儲系統還可能采用更多新型存儲介質以提高I/O性能。然而,簡單地將這些新型存儲介質添加到存儲系統中,受傳統存儲架構的約束,往往不能有效發揮其優勢。為充分發揮新型存儲介質的性能,需要研究新型存儲系統架構,因此,基于新型存儲介質的存儲系統架構仍會是當前和未來一段時間的研究熱點。
3 ?元數據I/O性能優化技術
存儲系統普遍采用目錄樹結構組織文件,即存儲系統將文件分布到不同層次的目錄中進行管理,并且按照一定的元數據分布算法進一步將文件分配到不同的元數據服務器中。這是傳統存儲系統采用的一種元數據組織方式,當數據規模較小時,是一種高效的元數據組織方式。然而,在大數據應用環境中,數據規模劇增,文件數量規模達到萬億級別,如果依然采用傳統樹型組織方式,將會導致文件管理和維護及獲取文件元數據的網絡交互等開銷不斷增大,從而造成元數據I/O性能瓶頸。為此,當前學術界和工業界在元數據I/O性能優化方面開展了大量的研究工作。
3.1 元數據搜索技術
元數據搜索是大數據存儲系統中一種重要的元數據訪問活動。在大數據應用環境中,由于日益增長的文件規模和傳統的目錄組織結構等矛盾,元數據搜索操作會產生大量的元數據訪問,然而,目錄樹的關鍵路徑瓶頸將使元數據服務器能力未能充分利用,從而嚴重制約元數據搜索性能。
在高性能計算及互聯網大數據應用環境中,相關大數據應用需要及時獲取數據進行處理,例如,用戶需要通過搜索引擎快速瀏覽網頁。當前,存儲系統主要以目錄樹的形式組織網頁數據,并且,大數據應用導致目錄樹的規模十分龐大,搜索整個目錄空間會帶來較長的時延。樹型結構存在關鍵路徑,關鍵路徑造成多元數據服務器串行化搜索,降低元數據的搜索性能,因此,高性能計算和互聯網行業針對元數據搜索進行了大量研究。
圍繞提升元數據搜索性能的研究主要可分為以下幾類。
●基于索引結構的元數據搜索方法:該類方法通常用于桌面搜索和小規模企業文件系統搜索應用,這些應用程序包含一個一般性的關系數據庫和一個倒排索引,它們部署在文件系統之外,作為一個獨立的應用程序使用[30,31],以彌補文件系統欠缺的快速搜索支持。
●基于語義分組的元數據搜索方法:針對當前主流分層文件系統架構的限制,采用語義分組相關性技術[32,33],通過擴展分層結構的方式,從文件中動態提取文件屬性,組成基于屬性語義的虛擬目錄,以加速元數據搜索。
●基于采樣的元數據搜索方法: 該類方法是一種快速搜索技術[34],對目錄樹各分支進行采樣打分,通過對分值的判定,快速剪切目錄分支,縮小分層目錄搜索范圍,以加快元數據搜索速度。
●基于事件通知的元數據搜索方法[35]:該類方法利用時間通知機制,替換出緩存中不活躍的文件,以提高緩存使用率。相比索引結構,可減少存儲開銷;相比采樣方法,可提高文件搜索的準確率。
●基于多維 Bloom Filter結構的并行搜索方法[36]:該類方法利用多維Bloom Filter結構,快速縮小目錄樹搜索范圍,并且通過MapReduce實現多元數據服務器的并行化搜索,在占用輕量負載的前提下,快速準確地獲得元數據搜索結果。
3.2 元數據查找技術
元數據查找是大數據存儲系統中一種常用的元數據訪問活動,在元數據操作中占比很大。在大數據應用環境中,根據Lustre社區的估計[37],單個存儲系統管理的文件數量規??蛇_到萬億級別,當前基于目錄路徑的元數據查找方法會引入大量的內存占用開銷,從而導致元數據查找性能瓶頸問題。
在高性能計算的大數據應用場景中,萬億級別的存儲系統中目錄數可達到千億級別,文件查找把文件的路徑信息映射成文件句柄,大多數的存儲系統采用目錄層次結構來管理文件和目錄,查找一個文件需要遍歷目錄樹,并且在訪問每層目錄時進行權限檢查,以禁止未經授權的訪問,通過引入目錄路徑(directory path,DP)來消除目錄樹的遍歷。然而,基于DP的方法會引入大量的內存占用開銷,導致存儲系統性能的下降。因此,工業界和學術界針對元數據搜索進行了大量研究。
圍繞提升元數據查找性能的研究主要可分為以下兩類。
●基于散列的元數據查找方法[38-40]:該類方法采用直接散列文件訪問路徑定位文件所在的元數據服務器,使用層次化的Bloom Filter矩陣標識文件所在的服務器,通過 直接散列文件的名字查找對應的文件元數據,利用基于文件全路徑名的散列值定位元數據服務器,可減少遍歷目錄路徑的開銷。
●基于目錄查找表的元數據查找方法[41,42]:該類方法為避免目錄重命名導致的遷移開銷,建立了目錄路徑與標識號的一一對應關系,文件的路徑查找直接通過唯一不變的標識號定位文件所在目錄的元數據服務器和地址,在修改目錄名時,避免遷移目錄中文件的元數據,從而提高元數據查詢性能。
3.3 元數據創建技術
元數據創建是大數據存儲系統中一種關鍵的元數據訪問活動,當前在大數據應用環境中,大量文件創建操作導致密集的元數據創建操作,給元數據服務器造成了很大的資源競爭,因而降低了大數據存儲系統的I/O性能。
科學計算、商業計算等大數據應用是大數據存儲系統的主要應用來源,其元數據操作呈現訪問密集性、數據海量性等特征。例如,高性能計算機普遍采用檢查點技術實現系統容錯,這些應用程序一般采用多進程共享文件(多對1:N-1)或單一文件(1對1:N-N)兩種方式操作,但由于在高性能計算機中有數千甚至數萬個進程同時執行上述應用程序,產生大規模的并發密集型元數據訪問。此外,隨著數據密集型應用的快速發展,應用對計算機I/O系統需求的數據總量大、文件數量多,對存儲系統的元數據訪問也呈現密集型的特點,如北美電力網絡平臺每年產生15 TB的原始數據,為不同領域應用分析的數據量超過每天45 TB。因此,針對元數據的密集型創建,學術界和工業界進行了大量研究。
圍繞有效提升元數據創建性能的研究主要可分為以下兩類。
●文件創建的交互協議優化方法[43,44]:該類方法在文件創建過程中控制客戶端與服務器端的消息交互流程,通過合并子操作、出租數據文件句柄、預創建數據文件等文件創建方法,在保證文件創建過程中數據一致性的前提下,減少不必要的消息交互,以提高元數據創建的性能。
●元數據的存儲優化方法[45,46]:該類方法主要通過優化文件元數據在元數據服務器上的存儲方式,提升元數據在持久存儲中的寫入性能,從而提高元數據創建的性能。
針對大數據存儲系統中目錄樹組織方式造成的元數據I/O性能瓶頸問題,學術界和工業界在搜索、查找、創建等元數據I/O活動方面開展了性能優化工作,一定程度上提高了元數據I/O的性能。然而,隨著大數據應用的發展,數據規模的進一步擴大對元數據I/O性能提出了更高的要求,新的應用負載的出現也給元數據I/O性能帶來了更多的挑戰,因此,元數據I/O性能優化仍會是未來一段時間的研究熱點。
4 ?數據I/O性能優化技術
在大數據應用環境中,數據規模達到PB甚至EB級、文件數量達到萬億級別、用戶數量急劇增長、用戶I/O負載呈現多樣性特征,加之數據在數據服務器中分布不合理等因素,導致數據服務器資源競爭加劇、數據I/O負載不均衡,從而造成數據I/O性能瓶頸問題。為此,當前學術界和工業界在數據I/O性能優化方面開展了大量的研究工作。
4.1 數據I/O的文件分條方法
文件分條是存儲系統提高數據I/O性能的重要技術途徑之一,即把一個文件分成多個子文件,將這些子文件合理地分配到不同的I/O服務器上,那么訪問該文件時,就可以從這些子文件中并行讀取數據,從而提高數據I/O性能。因此,恰當的文件分條方法有助于提高數據的I/O性能,而不恰當的文件分條方法會導致數據I/O性能損失[47]。
對于高性能計算而言,大數據計算應用的計算結果的速率與計算結果存儲在磁盤內的速度之間的不匹配是一個不可避免的問題[11]。作為一種可行的解決方案,存儲系統(例如 PVFS、Lustre、 通用并行文件系統(GPFS)和 Panasas文件系統(PanFS))首先把一個文件分割成多個子文件,然后把這些子文件分配到多個數據服務器,從而通過多個數據服務器的并發度提供高速的數據傳輸速率和吞吐量。文件分條的一個關鍵因素是文件分條寬度的大小。具體而言,文件分條寬度是指同一個文件內被分配到同一個數據服務器上的連續文件空間。研究表明,合適的文件分條寬度的大小能夠很好地提高整個存儲系統的性能,否則并行文件系統80%的性能可能損失。
圍繞文件分條方法的研究主要可分為以下3類。
●系統級文件分條方法:典型的思想是基于整個并行I/O系統的平均文件大小和平均文件請求頻率等因素,通過實驗或性能分析模型等確定整個文件系統內文件的分條寬度。
●目錄級文件分條方法:基本的思想是位于同一目錄的文件都從父目錄處獲得文件分條的寬度[48]。
●文件級文件分配方法:每一個文件可根據各自承擔的負載特征以及整個系統的負載情況,決定其各自的分條寬度。此外,允許某個文件在其負載特征發生改變的情況下,對該文件重新進行分條。由于不同的應用程序往往具有不同的文件訪問負載特征,因此,基于文件粒度的文件分條方法能更好地保證單一文件的訪問性能[49-51]。
4.2 數據I/O的負載均衡方法
進入大數據時代,大數據存儲系統面臨巨量數據服務器管理而引起的挑戰。為充分發揮所有數據服務器的系統性能,數據I/O負載在數據服務器之間應盡可能均衡分布 [52-54]。然而,日益龐大的數據服務器規模將更容易導致存儲系統中數據I/O負載失衡的問題。
對于高性能大數據計算應用的科學計算數據的管理而言,存儲系統扮演著重要的角色,為了充分地發揮并行I/O系統的性能,存儲系統內的數據服務器之間的負載應該符合均勻的分布,數據服務器之間的負載均衡能夠消除系統的性能瓶頸,從而優化整個存儲系統的平均響應時間和資源利用率。然而,不恰當的文件分條大小、不平衡的文件分配策略、不同應用程序訪問的沖突以及異構的計算環境等一些因素均可能導致數據服務器之間負載的失衡。
圍繞數據I/O負載均衡方法的研究主要可分為以下兩類。
●靜態負載均衡:指在程序運行前,對文件數據按照負載比例分塊,并映射到不同的I/O服務器,以實現I/O服務器間的負載均衡。該類方法簡單有效,適用于具有穩定負載或可預測負載應用,如并行計算應用,因此,幾乎所有主流的并行文件系統(包括GPFS[55]、Lustre和并行虛擬文件系統版本2(parallel virtual file system v2,PVFS2)[56]等)大多采用靜態均衡方法。
●動態負載均衡:指在文件負載特性等信息未知的情況下,根據系統運行時的動態負載信息,實時調整負載在數據服務器間的分布,從而及時消除負載熱點,優化整個系統的I/O性能。該類方法通過動態調整I/O負載在數據服務器間的分布,能夠有效協調并行I/O間的訪問,從而有效提高存儲系統的并行數據I/O性能[57-59]。
4.3 數據I/O的最小化訪問沖突方法
存儲系統通過分條文件在多個數據服務器間的分配,最小化大數據應用訪問存儲系統的平均響應時間,然而,現有方法一般通過平衡磁盤間負載或最小化單磁盤上文件大小方差等技術,優化文件請求的平均響應時間等性能指標,未考慮文件請求的磁盤I/O沖突概率問題,會導致數據I/O性能降低。
高性能大數據計算應用產生的科學數據的存儲和管理已成為當今學術界和工業界面臨的實際挑戰。主要的原因是當前需要存儲的數據的容量急劇增加,然而科學計算程序從磁盤上讀取數據速率的增加仍然相當慢。因此,對于大多需要頻繁進行文件讀寫的大數據科學計算應用來講,文件數據的輸入和輸出仍然是其性能瓶頸之一。與此同時,存儲系統能夠通過在多個磁盤間分配文件分條后的文件提供并行的文件數據讀和寫,從而提供高速的文件數據傳輸速率。因此,基于大規模的并行磁盤設備建立的存儲系統最近獲得了相當多的研究關注,為了在存儲系統內進行大數據的有效存儲和管理,在文件被訪問之前,應該在多個并行的磁盤內對文件進行有效的分配。然而,文件分配方法往往忽略了動態文件訪問特性——文件請求的磁盤I/O沖突概率。
圍繞數據I/O最小化訪問沖突方法的研究主要可分為以下兩類。
●基于最優化理論的文件分配算法[60,61]:該類方法以最小化平均響應時間(或最優化資源利用率,或最大化系統吞吐量等)為目標,以數據服務器的最大化服務率等為限制條件,建立最優化模型求解文件最優分配方案。該類方法的優點是平臺無關性和準確性,但其不足是計算復雜度較高。
●基于啟發式思想的文件分配算法[62-64]:該類方法充分利用和挖掘已知的文件訪問信息,以其中某些文件訪問特性(如文件訪問的時間方差等)為出發點,建立近似均衡的負載均衡算法實現文件的分配。該類方法計算復雜度低,雖然性能較基于最優化理論的方法有所下降,但在實際應用場景下有較好的使用價值。
4.4 數據I/O的寫優化技術
在大數據應用的I/O負載中,寫操作占據很高的比例,同時,相比于讀操作,寫操作是一種代價昂貴的操作,無論存儲介質是HDD還是SSD,寫操作都會被放大,影響存儲系統的I/O性能,因此,寫操作性能是存儲系統I/O性能的重要瓶頸。
在互聯網大數據應用環境中,用戶數量的急劇增加造成高并發的數據寫,例如,淘寶在促銷活動時期,每秒鐘能夠達到上百萬的寫操作,這會給存儲系統帶來極大的壓力,造成存儲系統I/O帶寬資源的競爭,降低I/O性能,因此,學術界和工業界對寫操作的性能優化進行了大量的研究。
圍繞數據I/O寫操作優化方法的研究主要可分為以下3類。
●非阻塞寫優化策略:主要通過消除異步預取頁來達到非阻塞寫操作的目的,通過非阻塞寫策略,增加 寫操作的并行化程度,從而優化寫操作I/O性能[65]。
●基于Flash的寫加速優化方法:在保留動態資源管理和高可用的前提下,通過基于Flash的寫加 速層,無縫合并虛擬化環境,加速寫操作I/O性能[66]。同時,研究建立應用的訪問負載模型,為應用劃分合適的Flash存儲空間,以提高寫操作I/O性能[67]。
●基于寫索引結構的優化方法:通過使用未修改的操作系統(operating system,OS)內核架構,最小化對寫優化造成的影響[68]。在索引結構上利用延遲綁定日志、分區和范圍刪除等技 術,在保證其他操作性能的前提下,提高寫操作I/O性能[69]。在持 久內存中利用基于寫優化基數樹的索引結構,以提高寫操作性能[70]。研究基于物理地址的垃圾收集機制能夠降低對寫操作的干擾[71]。
4.5 數據I/O的緩存容量擴展技術
大數據應用需要快速訪問存儲系統中的數據,當前主流的存儲介質HDD因其機械操作極易成為性能瓶頸。隨著DRAM、Flash等高速存儲介質的成本下降,存儲系統開始大量采用DRAM、Flash等高速存儲介質來擴展存儲系統緩存容量以提高性能,然而,簡單地將DRAM和Flash等加入存儲系統中,易造成緩存資源利用率低等問題。
圍繞數據I/O緩存容量擴展技術的研究主要可分為如下兩類。
●基于DRAM的緩存容量擴展方法[72]:該類方法利用DRAM擴大緩存容量,使大數據應用的大部分工作數據都裝載在緩存中,同時,研究建立基于應用的訪問負載模型,利用基于日志結構的管理機制提高緩存資源利用率。
●基于Flash的緩存容量擴展方法[73-75]:該類方法利用Flash存儲作為二級緩存,擴展存儲系統的緩存容量。為高性能網絡連接的Flash存儲介質劃分虛擬地址層,達到擴展緩存容量的目的,從而提高數據I/O的性能。
4.6 數據I/O的帶寬分配技術
I/O帶寬是大數據存儲系統的一種重要資源,I/O帶寬能否公平和高效地分配,直接影響著大數據存儲系統的I/O性能好壞。然而,當前存儲系統的異構性和應用負載的多樣性相互交織在一起,給公平和高效的I/O帶寬分配帶來了很大挑戰。
數據中心是大數據存儲的重要載體,當前互聯網應用和高性能計算研究都建立了大量的數據中心。隨著互聯網技術的發展,數據中心的應用數量也在急劇增長?,F代數據中心是為多種大數據應用服務構建的,不同的大數據應用表現出不同的資源需求和負載特征,如何分配存儲系統I/O帶寬資源影響著大數據應用的性能。同時,隨著價格下降,SSD憑借優良的隨機讀寫性能在存儲系統中被廣泛地采用,以提高I/O性能,SSD與HDD共存造成存儲介質的異構性。由于不同服務器中SSD和HDD的配置不同,導致服務器間I/O帶寬能力具有差異性。存儲系統的異構性、服務器間帶寬能力的差異性、應用間I/O負載的不同等因素相互交織在一起,給公平和高效的存儲系統I/O帶寬分配帶來新的挑戰。因此,學術界和工業界對I/O帶寬分配進行了大量研究。
圍繞數據I/O帶寬分配的研究主要可分為如下幾類。
●基于成比例公平性的單種資源分配方法[76-79]:該類方法利用應用的負載權重,在用戶間提供嚴格的成比例I/O帶寬資源分配。該類方法在CPU資源分配、網絡帶寬資源分配、存儲系統I/O調度和服務質量(quality of service,QoS)保證等方面已獲應用。但是,該類方法僅可用于單一資源的分配,無法有效應對多種資源的分配。另外,由于成比例公平性的限制,其資源利用率也不高。
●基于成比例公平性的多種資源分配方法[80-86]:該類方法基于應用的全局系統瓶頸資源,進行I/O帶寬資源分配,所有應用的全局系統瓶頸資源的共享比例相同。該類方法能夠有效應對多種資源的分配,但由于成比例公平性屬性的限制,其資源利用率不高,并且該類方法把所有服務器看成一個資源池,無法為用戶確定每臺服務 器上的I/O帶寬分配額。
●基于不成比例公平性多種資源分配方法[87]:該類方法基于應用的局部瓶頸資源進行I/O帶寬資源分配,位于同一瓶頸資源分組的所有應用對該瓶頸資源的分配比例相同。該類方法可同時分配多種資源,并且其資源利用率相當高,但無法應對多異構服務器環境,無法為用戶確定每臺服務器上的I/O帶寬分配額。
●多服務器環境中多種資源分配方法[88,89]:該類方法基于應用的全局或局部瓶頸資源進行I/O帶寬資源分配。設置應用在單臺服務器中的未知分配參數,基于公平性的限制條件,獲得相應的線性規劃求解模型。在多服務器環境中,可同時分配多種資源,還可確定應用在每臺服務器上的I/O帶寬分配額。
4.7 數據I/O的客戶端緩存技術
緩存技術作為一種改善訪問性能的常用方法被應用于眾多領域[90-94],客戶端數據緩存是提高大數據存儲系統I/O性能的有效技術之一,然而,當前客戶端緩存存在資源利用率低的問題,不利于有效提升存儲系統數據I/O性能。
在高性能計算環境中,大數據應用會產生大量的并發I/O訪問請求。隨著計算機軟硬件技術的發展,客戶端緩存面臨著越來越密集的并發訪問請求。按照目前的處理器發展速度,很快會出現具有數百個核的多核/眾核處理器。因此,即使存儲系統的單個節點客戶端也會面臨高I/O并發的問題。為了充分利用硬件的并行性,采用并行操作語言或庫函數(如 Pthread 、消息傳遞接口/消息傳遞接口-I/O(MPI/MPI-I/O)、OpenMP)編程的多線程/多進程應用成為多個領域(如科學計算、圖像處理等)的研究主流。同時,很多這類應用產生的并發、突發的I/O請求具有小于1 ms的到達間隔。
面對大量的I/O高并發訪問,客戶端緩存的設計面臨著諸多挑戰。一方面原因是I/O負載具有多樣性的訪問模式和不同的負載特征。例如,研究表明,很多負載具有大量小于1 MB的小文件,小文件的典型實例包括網站小圖片、文本文件和科學實驗生成的輸出文件。另一方面,對小文件的大部分訪問以只讀操作為主。目前存儲系統中的客戶端緩存主要使用基于數據塊的索引結構管理緩存數據,雖然這種方法對于緩存大文件數據簡單有效,但對于高并發環境中的小文件來說性能卻很差。
圍繞數據I/O客戶端緩存優化方面的研究主要可分為如下兩類。
●緩存數據的組織結構優化方法[95-98]:該類方法采用基于數據塊索引的結構,即文件的數據被切分成相同大小的數據塊放入緩存空間中,并根據緩存替換算法管理緩存中的數據,以提高緩存資源利用率。
●緩存數據的管理優化方法[99-102]:該類方法在不影響緩存性能的前提下力圖減小緩存容量,大致可有兩種思路:一種是通過減少緩存塊的數量以節省空間,即通過確定最少的緩存存儲塊個數,達到提高緩存利用率的目的;另一類是通過對緩存塊內容的壓縮以節省空間,即通過數據壓縮技術或內容解析存儲技術減少實際的數據塊規模。
針對大數據存儲系統中因數據量激增造成的數據I/O性能瓶頸問題,學術界和工業界在文件分條、負載均衡、I/O帶寬分配、客戶端緩存等方面開展了大量的性能優化工作,以提高數據I/O性能。然而,隨著大數據應用的發展,數據積累速度進一步加快、新的數據I/O負載特征不斷出現、新型存儲介質的發展和應用,都將給存儲系統的數據I/O帶來新的挑戰和機遇。因此,數據I/O的性能優化仍會是未來一段時間的研究熱點。
5 ?未來研究方向
圍繞大數據存儲系統I/O性能問題,學術界和工業界在存儲系統架構、元數據I/O、數據I/O優化方面已有大量研究工作。但是,大數據應用和存儲技術的發展將為大數據存儲系統I/O性能優化帶來更多新的挑戰和機遇,未來可能的研究方向主要包括以下幾個方面。
(1)基于DRAM的存儲系統
當前大數據計算模式發展迅速,批量計算、流式計算、圖計算等計算模式提高了大數據應用的計算性能,高效計算模式需要快速讀寫大量數據,因此,下層存儲系統必須大幅提高I/O性能,以滿足上層計算模式的需求。然而,現有基于HDD的存儲系統對計算模式的支持已達極限。相比傳統的HDD,DRAM是一種更為快速的存儲介質,且其容量不斷提升,成本持續下降,這為大幅提升存儲系統I/O性能以有效支撐高效計算模式提供了可能。因此,基于DRAM的存儲系統成為一個重要的研究方向,在此方向上當前已有不少研究工作正在開展。其中,存儲系統架構及其資源管理方法直接影響DRAM資源利用率,從而影響對上層應用計算模式的高效支持。因此,基于DRAM的存儲系統架構及其資源管理方法會是未來一段時期的研究重點。
(2)基于多介質的混合存儲系統
新型存儲介質的出現為存儲系統更好地滿足大數據應用的需求提供了機遇,因此,基于多介質的混合存儲系統是一個重要的研究方向。其中,在多介質混合存儲系統架構及其一體化管理方面,基于不同類型和不同性能的存儲介質構建多介質混合存儲系統,需從理論模型和實驗驗證兩方面研究不同的混合存儲策略,并建立不同混合存儲策略下的存儲分配模型和代價模型;在存儲結構感知的數據管理方面,對于更為復雜的異構存儲環境,如何實現存儲介質用量的自適應動態分配,將是一個極具挑戰性的問題;在大數據分布式協同存儲方面,大數據應用I/O負載具有多樣性和復雜性,基于新的粒度模型的熱點數據識別和數據遷移將會是一個重要的問題;在高性能可擴展大數據存儲結構方面,隨著PCM等新型存儲介質的快速發展和產品化,需研究和建立一個高性能可擴展的基于多介質的混合存儲系統架構,在系統中可同時配置HDD、Flash、PCM、隨機存取存儲器(random access memory,RAM)等多種存儲介質,并且能夠發揮各種存儲介質各自的優勢,使得整個存儲系統獲得更優的整體性價比。
(3)元數據I/O性能優化
當前主流的存儲系統仍采用目錄樹結構組織和管理元數據,在大數據應用環境中,目錄樹空間日益龐大,因此,元數據I/O仍會是影響存儲系統性能的瓶頸之一。盡管學術界和工業界開展了大量研究以優化元數據I/O的性能,但是隨著元數據規模的進一步擴大,元數據搜索、查找、創建等關鍵操作的性能預期會進一步降低。例如,隨著目錄樹空間的增大,基于采樣的元數據搜索方法的準確率會下降,而基于輕量級索引結構的元數據搜索方法,其存儲負載和額外I/O開銷會進一步加大,因此,存儲系統的元數據I/O優化技術仍然會是未來的一個重要研究方向。
(4)數據I/O寫性能優化
數據寫I/O請求在整個I/O活動中占比較高,寫操作性能易成為影響存儲系統性能的關鍵瓶頸。盡管學術界和工業界圍繞寫操作性能優化開展了大量的研究工作,但隨著用戶數量的持續增長和數據規模的日益擴大,寫操作負載會被進一步放大。一方面,由于當前存儲系統的主要存儲介質仍然是HDD,其低下的隨機寫性能嚴重影響寫操作性能。具有良好隨機讀寫性能的新型Flash存儲介質是提高寫操作性能的一個有效手段,但Flash存儲介質壽命有限且價格較高。因此,需要針對不同的寫負載特征,研究建立相應的寫操作存儲模型,在延長Flash壽命和降低開銷的前提下,提高寫操作性能。另一方面,當前寫操作性能優化方法在提高寫操作性能的同時,會降低其他I/O操作(如讀操作、更新操作等)的性能,因此需要研究在保障其他I/O操作性能前提下有效提升寫操作性能的優化技術。
6 ?結束語
大數據存儲是大數據整個生命周期中不可或缺的基礎環節,大數據存儲系統I/O性能直接決定大數據存儲效率,是影響大數據應用整體性能的關鍵因素。因此,針對當前存儲系統中元數據I/O和數據I/O面臨的性能瓶頸問題,學術界和工業界主要從存儲系統架構優化、元數據I/O性能優化、數據I/O性能優化3個方面開展了大量的存儲系統I/O性能優化工作,緩解了大數據存儲系統I/O性能瓶頸,支撐了大數據應用的發展。然而,大數據應用的日益普及和存儲技術的持續發展,為大數據存儲系統I/O性能優化帶來更多新的挑戰和機遇,未來還需要在基于多介質的存儲系統架構優化、元數據I/O性能優化、數據I/O寫性能優化等方面持續開展進一步的研究工作。
點擊下方?閱讀原文?即可獲取全文
作 者 簡 介
肖利民(1970-),男,北京航空航天大學教授、博士生導師,計算機科學技術系主任,計算機系統結構研究所副所長。中國計算機學會大數據專家委員會委員、高性能計算專業委員會常務委員、容錯計算專業委員會委員,中國電子學會云計算專家委員會委員。主要研究方向為大數據存儲與文件系統、系統虛擬化與云計算、高性能計算機和服務器系統、計算機系統安全等。
?
霍志勝(1983-),男,北京航空航天大學計算機學院博士生,主要研究方向為大數據存儲與分布式文件系統。
?
《大數據》期刊
《大數據(Big?Data?Research,BDR)》雙月刊是由中華人民共和國工業和信息化部主管,人民郵電出版社主辦,中國計算機學會大數據專家委員會學術指導,北京信通傳媒有限責任公司出版的科技期刊。
關注《大數據》期刊微信公眾號,獲取更多內容
總結
以上是生活随笔為你收集整理的大数据存储系统I/O性能优化技术研究进展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++成员函数中的const修饰符
- 下一篇: 2015年《大数据》高被引论文Top10