肖利民,宋堯,秦廣軍,周漢杰,王超波,韋冰,魏巍,霍志勝
1. 北京航空航天大學計算機學院,北京 100191;2. 軟件開發(fā)環(huán)境國家重點實驗室,北京 100191;3. 北京聯(lián)合大學智慧城市學院,北京 100101;4. 西安理工大學計算機科學與工程學院,陜西 西安 710048
國家高性能計算環(huán)境擁有大量的計算與存儲資源。根據(jù)中國國家網(wǎng)格(CNGrid)發(fā)布的《國家高性能計算環(huán)境發(fā)展報告(2002—2017年)》,截至2017年年底,我國國家網(wǎng)格節(jié)點單位達到19家,聚合計算資源超過200 PFlops,總存儲資源超過178 PB。然而這些節(jié)點地理位置分散,如何發(fā)揮資源聚合效應并統(tǒng)籌使用這些廣域資源一直是國家高性能計算環(huán)境發(fā)展面臨的一個挑戰(zhàn)性問題。網(wǎng)格技術[1]常被用于解決此類廣域資源聚合問題。網(wǎng)格技術能夠將網(wǎng)絡上松散的計算與存儲資源聚合起來,隱藏資源的異構性,并最終向用戶呈現(xiàn)一個虛擬的超級計算機。當前CNGrid[2-3]中的計算資源已可做到全局調度使用,然而存儲資源仍處于廣域分散且隔離自治的狀態(tài),未能實現(xiàn)統(tǒng)一管理和共享訪問。當研究人員需要跨機構協(xié)同工作以及分享大規(guī)模的數(shù)據(jù)文件時,通常需要通過網(wǎng)格的數(shù)據(jù)傳輸工具將與計算任務相關的輸入文件傳輸?shù)接嬎阒行膬炔康拇鎯褐小T谟嬎闳蝿請?zhí)行完成后,超算用戶需要顯式指定計算任務的輸出文件來完成計算結果的回傳。因此,現(xiàn)存的基礎設施依然無法提供簡單有效的數(shù)據(jù)訪問與共享模式。
科學計算應用通常需要依賴外部數(shù)據(jù)文件,而其輸入數(shù)據(jù)時常來源于多個超級計算中心(以下簡稱為超算中心)。以全基因組關聯(lián)分析應用為例,其不同機構的基因庫位于不同的超算中心,主應用位于某一個超算中心,當執(zhí)行全基因組關聯(lián)分析任務時,主應用需要訪問多個超算中心的基因庫,并劃分出多個作業(yè)。每個作業(yè)都只需要訪問基因庫中所有文件的某一個文件片段,并進行關聯(lián)分析。這種情況下,數(shù)據(jù)跨域分散且隔離自治未得到有效匯聚,難以實現(xiàn)對該應用數(shù)據(jù)的有效管理和共享,無法充分發(fā)揮多個超算中心并發(fā)處理海量數(shù)據(jù)的能力,導致各超算中心數(shù)據(jù)的重復存儲以及較低的數(shù)據(jù)處理效率。此外,現(xiàn)有的跨域存儲系統(tǒng)和訪問方法不適用于廣域高性能計算環(huán)境。因此,當前國家高性能計算環(huán)境亟須聚合廣域分散的存儲資源,以形成全局統(tǒng)一的數(shù)據(jù)空間,在此基礎上,針對用戶和應用對數(shù)據(jù)空間的多樣化訪問需求進行分區(qū)管理、共享和隔離,并在廣域環(huán)境中提供數(shù)據(jù)空間的高效訪問??山y(tǒng)一管理和高效訪問的全局數(shù)據(jù)空間的形成主要面臨如下挑戰(zhàn):
● 當前國家高性能計算環(huán)境存儲資源廣域分散且隔離自治,缺乏適用于廣域高性能計算環(huán)境,能屏蔽底層文件系統(tǒng)異構性,并支持統(tǒng)一管理、分區(qū)共享及視圖隔離的全局數(shù)據(jù)空間;
● 在帶寬受限且高時延的廣域環(huán)境下,難以實現(xiàn)高效的遠程數(shù)據(jù)訪問,難以滿足廣域分布數(shù)據(jù)訪問需求。
針對上述挑戰(zhàn),本文提出了虛擬數(shù)據(jù)空間構建方法及數(shù)據(jù)訪問性能優(yōu)化方法,并實現(xiàn)了一個面向廣域高性能計算環(huán)境的、訪問模式統(tǒng)一且高效的全局虛擬數(shù)據(jù)空間(global virtual data space,GVDS)。GVDS是一個跨域分布式存儲系統(tǒng),單個GVDS實例可以直接部署到超算中心,并且通過與其他超算中心中的GVDS實例協(xié)作來實現(xiàn)存儲資源的聚合。用戶或計算節(jié)點通過運行在用戶空間的GVDS實例,可以以POSIX文件訪問接口的模式訪問由跨域分散的異構存儲資源聚合而成的數(shù)據(jù)空間。GVDS隱藏了數(shù)據(jù)傳輸過程,簡化了多超算中心間數(shù)據(jù)訪問與調度的模式。
本文的主要貢獻包括以下兩個方面。
● 設計了一個面向廣域高性能計算環(huán)境的全局虛擬數(shù)據(jù)空間系統(tǒng)——GVDS。GVDS隱藏了底層存儲訪問接口、廣域網(wǎng)鏈路、數(shù)據(jù)副本等的差異與復雜性,提供統(tǒng)一接口,以輕松管理、共享和訪問跨域分散在多個超算中心的存儲資源。
● 設計了高效的廣域網(wǎng)遠程數(shù)據(jù)訪問機制,通過通信優(yōu)化、數(shù)據(jù)預讀與緩存、數(shù)據(jù)副本等技術有效提升了數(shù)據(jù)文件的實時訪問速度。
Lustre[4]、Ceph[5]和GPFS[6]等文件系統(tǒng)能夠在本地數(shù)據(jù)中心內實現(xiàn)統(tǒng)一訪問和數(shù)據(jù)共享,其向上隱藏了分布式存儲系統(tǒng)數(shù)據(jù)調度的復雜性,使得數(shù)據(jù)訪問和共享就像使用本地文件系統(tǒng)一樣容易。但是在廣域高性能計算環(huán)境中,此類問題變得更加復雜,系統(tǒng)的用戶往往來自不同的地域和機構,因此需要整合跨域分散的異構存儲資源,并對其進行統(tǒng)一管理和訪問。
針對跨域異構資源聚合和統(tǒng)一管理及訪問問題,目前已有許多關于廣域存儲系統(tǒng)的研究工作。點對點技術在網(wǎng)絡存儲系統(tǒng)[7-12]解決廣域數(shù)據(jù)訪問和共享問題上發(fā)揮了重要作用。這些存儲系統(tǒng)通常基于一致性哈希進行數(shù)據(jù)分區(qū)[13],在分區(qū)節(jié)點內采用鍵值結構組織目錄樹。此類系統(tǒng)去中心化的架構設計使其避免了單點瓶頸,并且還具有較小的集群擴容代價與縮容代價。不過此類架構難以被直接應用于廣域高性能計算環(huán)境,因其采用一致性哈希隨機地決定文件的放置位置,而忽視了文件之間的關聯(lián)性以及用戶的訪問成本。WAS(Windows Azure storage)[14]是一種兼具高可用、安全、可伸縮性和可靠性的云存儲系統(tǒng)。其基于共享口令的文件訪問授權使用戶之間極易共享數(shù)據(jù)。然而WAS不支持差量更新,即使僅覆寫了文件的一小部分,也需要將整個文件全量上傳到遠程數(shù)據(jù)中心,因此會導致巨大的網(wǎng)絡和磁盤開銷。近年來,部分研究人員提出了關于面向分布式計算和高性能計算的廣域文件系統(tǒng)的構想。Lustre-WAN[15]是嘗試將并行文件系統(tǒng)部署到廣域的方案。實驗結果表明,它可以在100 Gbit/s專線網(wǎng)絡上提供較高的聚合訪問性能。然而其局限在于要求所有數(shù)據(jù)中心部署相同的文件系統(tǒng),即Lustre。Gfarm[16]是一個廣域分布式文件系統(tǒng),由一個元數(shù)據(jù)節(jié)點、多個數(shù)據(jù)節(jié)點組成,同樣提供了易用的廣域數(shù)據(jù)訪問接口。然而Gfarm存在單點故障問題,即元數(shù)據(jù)節(jié)點出現(xiàn)的網(wǎng)絡故障會導致整個系統(tǒng)崩潰。CalvinFS[17]是一種基于廣域副本的高可用廣域分布式文件系統(tǒng)。CalvinFS利用分布式數(shù)據(jù)庫系統(tǒng)進行元數(shù)據(jù)管理,并以數(shù)據(jù)塊為建立副本的基本單元。但CalvinFS使用鍵值的方式組織元數(shù)據(jù),并將文件或目錄的絕對路徑作為鍵,因此遞歸的目錄操作可能會導致性能顯著下降。OneData[18]是一種用于全局數(shù)據(jù)存儲和共享的解決方案,它是PL-Grid Plus[19]項目的一部分。OneData引入了Space和Provider的概念,以隱藏數(shù)據(jù)廣域分布的復雜性。Space是用戶數(shù)據(jù)存儲的載體,Provider是提供存儲資源的組織機構,每個Space可以由一個或多個Provider保存。然而OneData的目錄樹操作會被映射為大量的NoSQL操作,導致其數(shù)據(jù)庫面臨極大的負載壓力,從而成為性能瓶頸。全局聯(lián)合文件系統(tǒng)(global federated file system,GFFS)[20]是美國國家科學基金會的極限科學與工程發(fā)現(xiàn)環(huán)境(extreme science and engineering discovery environment,XSEDE)項目中用于聚合廣域分散自治存儲資源的全局聯(lián)合文件系統(tǒng)。與OneData緊密的元數(shù)據(jù)管理不同,GFFS通過一種松散的頂層元數(shù)據(jù)組織實現(xiàn)了異構存儲資源的聚合,這種資源聚合形式支持個人計算機、大學校園存儲集群、云存儲等多種來源的存儲資源便捷地接入GFFS。GFFS的元數(shù)據(jù)分多級管理,即頂層元數(shù)據(jù)集中式管理,存儲集群上的元數(shù)據(jù)分散自治管理。因此,GFFS訪問流程中單一的頂層元數(shù)據(jù)服務器可能會成為瓶頸,導致訪問性能受限。
針對大數(shù)據(jù)稀疏問題,參考文獻[21]在基于異構眾核的超級計算機上,從主存儲器訪問、進程間/節(jié)點間通信、并行化和負載均衡等方向開展了對存儲資源訪問性能的優(yōu)化方法研究,但廣域環(huán)境因其受限的網(wǎng)絡帶寬和高訪問時延為數(shù)據(jù)訪問性能帶來了挑戰(zhàn)。為了提升對廣域環(huán)境中存儲資源的訪問能力,歐洲數(shù)據(jù)網(wǎng)格(EU data grid,EUDG)[22]、開放網(wǎng)格服務基礎設施(open grid services infrastructure,OGSI)[23]等網(wǎng)格計算系統(tǒng)中應用了大量I/O優(yōu)化手段。遺憾的是,它們最終都沒有實現(xiàn)從用戶本地環(huán)境到網(wǎng)格環(huán)境的完全無縫和透明。Globus項目中提供了副本定位服務(replica location service,RLS)[24]、網(wǎng)格文件傳輸協(xié)議(grid file transfer protocol,GridFTP)[25]以及遠程I/O庫(remote I/O,RIO)[26]等工具供用戶高效使用網(wǎng)絡資源,然而用戶需要通過GridFTP顯式地管理和檢查文件狀態(tài)、來回復制文件,便捷性較低。作為廣域存儲系統(tǒng)中的常見技術,預取和緩存是提升元數(shù)據(jù)和數(shù)據(jù)訪問性能的重要手段。網(wǎng)絡文件系統(tǒng)4.1版本(network file system v4.1,vNFS)[27]以數(shù)據(jù)塊為粒度對數(shù)據(jù)進行預取,當應用請求的數(shù)據(jù)量小于一個數(shù)據(jù)塊時,系統(tǒng)預取整個數(shù)據(jù)塊,以減少后續(xù)訪問的網(wǎng)絡開銷。但在帶寬受限且時延高的廣域網(wǎng)環(huán)境中,vNFS小粒度地預取數(shù)據(jù)塊會導致較大的訪問時延。參考文獻[28]在密集型I/O環(huán)境中提出了一種面向突發(fā)負載的預取性能優(yōu)化方法,對突發(fā)I/O進行在線識別以進行數(shù)據(jù)預取,從而有效地節(jié)省維護數(shù)據(jù)關聯(lián)性所需的資源。但此類方法大多面向單一類型的訪問負載,在混合負載中無法有效地識別訪問特征。數(shù)據(jù)副本也是廣域存儲系統(tǒng)中一種常用的訪問性能優(yōu)化手段。SPANStore[29]鍵值存儲系統(tǒng)通過其定位服務器根據(jù)每個云平臺的存儲價格和負載狀態(tài)決定文件及其副本存放地址,客戶端通過本地云存儲平臺的元數(shù)據(jù)索引到最近的目標副本地址,然后訪問該副本,以提升訪問性能。然而SPANStore的解決方案是面向云環(huán)境的,其面向云存儲成本的副本策略無法直接用于高性能計算環(huán)境。參考文獻[30]針對邊緣計算與云計算協(xié)作場景提出了一種數(shù)據(jù)副本布局策略,在存儲空間有限及最長數(shù)據(jù)訪問時間約束等限制條件下,通過啟發(fā)式算法計算副本放置位置,以降低數(shù)據(jù)訪問時延。但是其中心化、全信息感知的靜態(tài)副本放置策略會帶來較大的信息采集開銷。而參考文獻[31]采用了一種局部信息感知的副本策略,其中WARP算法基于對副本一致性維護開銷的分析,通過感知副本的數(shù)據(jù)寫入操作,決定副本的最優(yōu)數(shù)量與位置。但只針對寫操作的感知導致該副本動態(tài)布局在讀性能優(yōu)化方面仍存在提升空間。
綜上所述,在廣域高性能計算場景中,現(xiàn)有系統(tǒng)都無法完全滿足對廣域分布數(shù)據(jù)的統(tǒng)一管理和高效訪問需求,因此筆者設計并實現(xiàn)了全局虛擬數(shù)據(jù)空間,以聚合廣域分散異構存儲資源,并支持統(tǒng)一且高效的訪問模式。
為了構建適用于廣域高性能計算環(huán)境的全局數(shù)據(jù)空間,并實現(xiàn)對廣域分布數(shù)據(jù)的統(tǒng)一管理和高效訪問,本文針對存儲資源廣域分散且隔離自治的國家高性能計算環(huán)境中全局虛擬數(shù)據(jù)空間構建問題,研究了一套適用于廣域高性能計算環(huán)境的虛擬數(shù)據(jù)空間構建方法,以實現(xiàn)跨域異構存儲資源的統(tǒng)一管理。此外,本文針對帶寬受限且時延高的廣域網(wǎng)環(huán)境下的數(shù)據(jù)高效訪問問題,提出了一套數(shù)據(jù)訪問性能優(yōu)化方法,以實現(xiàn)對廣域分布數(shù)據(jù)的高效訪問。
為了構建適用于廣域高性能計算環(huán)境,能屏蔽底層文件系統(tǒng)異構性,并支持統(tǒng)一管理、分區(qū)共享及視圖隔離的全局數(shù)據(jù)空間,本節(jié)提出了基于廣域分散自治存儲資源的虛擬數(shù)據(jù)空間構建方法。該方法需聚合已部署在多個超算中心中的異構存儲資源,形成數(shù)據(jù)空間,并根據(jù)高性能計算環(huán)境用戶及應用對數(shù)據(jù)空間的多樣化訪問需求進行分區(qū)管理、共享和隔離。因此,針對廣域分散存儲資源聚合問題、數(shù)據(jù)的多樣化共享問題及用戶訪問控制問題3個子問題,研究并建立了一套虛擬數(shù)據(jù)空間構建方法。通過分散自治存儲資源的聚合方法,實現(xiàn)存儲資源的全局統(tǒng)一邏輯視圖;通過可定制數(shù)據(jù)區(qū)域劃分和空間分配方法,實現(xiàn)區(qū)域虛擬視圖,以隱藏數(shù)據(jù)分布的復雜性,并提供統(tǒng)一的數(shù)據(jù)分區(qū)管理;通過視圖隔離和訪問控制機制,實現(xiàn)用戶及用戶組之間的數(shù)據(jù)共享和隔離。
3.1.1 分散自治存儲資源聚合方法
針對高性能計算環(huán)境存儲資源廣域分散、無法充分發(fā)揮廣域資源聚合效應的問題,GVDS使用基于全局路徑的名字空間,以實現(xiàn)廣域分散、自治異構存儲資源的聚合。
GV DS對廣域分散的存儲資源從本地、局域、廣域3個層級進行逐層聚合,形成全局統(tǒng)一的名字空間,以支撐分散異構存儲資源的聚合管理和統(tǒng)一訪問。GVDS基于單機文件系統(tǒng)和并行文件系統(tǒng)對存儲資源進行本地聚合和局域聚合,并將所有超算中心的存儲資源以存儲集群的粒度映射到管理節(jié)點維護的存儲資源名字空間中,以進行廣域層級資源聚合。如圖1(a)所示,每個并行文件系統(tǒng)的根目錄都鏈接到全局管理節(jié)點維護的全局名字空間中的邏輯節(jié)點,邏輯節(jié)點的信息和組織關系被管理節(jié)點記錄在數(shù)據(jù)庫中,底層存儲集群的幾個重要屬性,包括資源的通用唯一識別碼(universally unique identifier,UUID)、超算中心的UUID、已分配容量、已使用容量、可用容量和資源狀態(tài)等,進而聚合所有存儲資源,形成全局數(shù)據(jù)空間。
GVDS被部署在多個超算中心內,并聚合了Lustre、Gluster、MooseFS等多種并行或分布式文件系統(tǒng)。如圖1(b)所示,GVDS的3層資源聚合方法表現(xiàn)出了良好的聚合性能,以較低的性能損失聚合了廣域分散且自治異構的存儲資源,實現(xiàn)了GVDS的聚合資源管理和統(tǒng)一訪問接口。
圖1 分散自治存儲資源聚合方法
3.1.2 可定制數(shù)據(jù)區(qū)域劃分和空間分配方法
廣域分散存儲資源聚合后,針對數(shù)據(jù)的便捷管理和共享問題,GVDS引入了“區(qū)域”與“空間”的概念,以隱藏數(shù)據(jù)分布的復雜性,并實現(xiàn)數(shù)據(jù)的統(tǒng)一管理和共享。區(qū)域是對分散數(shù)據(jù)進行統(tǒng)一管理和共享的平臺,空間是承載數(shù)據(jù)文件的邏輯實體,是存儲空間分配、集群映射等的基礎控制單元。一個區(qū)域通常由多個空間組成。GVDS區(qū)域劃分和空間分配如圖2所示,GVDS中可構建個人私有區(qū)域、群組共享區(qū)域、全局共享區(qū)域等不同類型的區(qū)域,以作為定制化數(shù)據(jù)存儲和共享的基礎,而作為分散數(shù)據(jù)的集合體,每個區(qū)域下設多個空間,這些空間被分配至不同超算中心內的存儲集群上,作為承載分散數(shù)據(jù)的實體。例如圖2中,用戶1可訪問個人私有區(qū)域“用戶1”、群組共享區(qū)域“高能物理”以及全局共享區(qū)域,而其個人私有區(qū)域“用戶1”內的數(shù)據(jù)則被分散存儲于超算中心1內的存儲集群1-1和超算中心m內的存儲集群m-1上的不同空間內。
GVDS通過構建區(qū)域,讓用戶視圖在區(qū)域粒度實現(xiàn)隔離,從而隱藏全局數(shù)據(jù)空間的管理復雜性,而空間創(chuàng)建時的資源分配被映射為邏輯節(jié)點創(chuàng)建子節(jié)點的操作,進而被映射為不同類型底層存儲集群的具體操作。如圖2所示,用戶可以根據(jù)需要自定義多個區(qū)域,不同科研領域的數(shù)據(jù)集、用戶的私有數(shù)據(jù)集等均可以存儲至不同區(qū)域中。同時,GVDS允許用戶將新創(chuàng)建的空間映射到存儲集群的基礎存儲容器中,例如并行文件系統(tǒng)的數(shù)據(jù)目錄。如果用戶在創(chuàng)建空間時未指定映射的目錄路徑,則系統(tǒng)會自動根據(jù)存儲集群剩余容量、區(qū)域關聯(lián)度、用戶關聯(lián)度等信息選擇合適的存儲集群節(jié)點,并創(chuàng)建一個新的映射目錄。
圖2 區(qū)域劃分和空間分配
GVDS能較好地支持相同類型的數(shù)據(jù)存儲在不同的超算中心的場景。例如在氣象預測場景中,異地站點收集的測量數(shù)據(jù)需要被存儲于就近的超算中心,并且進行預處理,因此相同類型的數(shù)據(jù)需要被分配到不同的超算中心。區(qū)域和空間的引入可以有效地管理這些地理分布的數(shù)據(jù),如圖2中,用戶可以為氣象預測數(shù)據(jù)創(chuàng)建一個區(qū)域,然后在該區(qū)域中創(chuàng)建多個空間,并將空間各自映射到距離站點較近的超算中心,以存儲相關數(shù)據(jù)。
GVDS可定制化的數(shù)據(jù)區(qū)域劃分和空間分配滿足了用戶對數(shù)據(jù)管理和共享的多樣化需求,可支撐個人、群組、全局等不同層級的數(shù)據(jù)管理和共享。此外,GVDS以拓展屬性接口形式提供了擴展應用程序接口(application programming interface,API),用于獲取空間實際映射位置信息。這允許高性能計算環(huán)境中的作業(yè)調度程序有感知地將作業(yè)調度到數(shù)據(jù)文件所在的計算中心,以最大化數(shù)據(jù)局部性,從而降低遠程數(shù)據(jù)訪問或遷移的開銷。
3.1.3 視圖隔離與訪問控制機制
為了支持GVDS中數(shù)據(jù)的安全共享和隔離,針對用戶訪問控制問題,本節(jié)研究了GVDS中視圖隔離和訪問控制機制。如第3.1.2節(jié)所述,GVDS中的區(qū)域可以在多用戶之間共享。創(chuàng)建區(qū)域后,該區(qū)域的所有者可以將區(qū)域的訪問權限授予其他用戶或用戶組。例如,用戶可以創(chuàng)建一個區(qū)域,并向一個用戶組授予其對該區(qū)域的只讀權限,然后該用戶組的成員將繼承用戶組的只讀權限,并且能夠訪問該用戶的區(qū)域。
GVDS管理節(jié)點的數(shù)據(jù)庫中記錄了每個區(qū)域對用戶和用戶組的訪問控制列表權限。當用戶登錄GVDS客戶端時,將獲取其可訪問的區(qū)域列表,管理節(jié)點將使用N1QL在數(shù)據(jù)庫中搜尋所有該用戶可見的區(qū)域。并且客戶端會定期向管理節(jié)點發(fā)送區(qū)域請求,以獲取最新的區(qū)域信息。
GVDS使用一對多映射模型來控制訪問權限,一個GVDS賬號將會被映射到多個超算中心的專屬本地賬號或者GVDS統(tǒng)一賬號。如果用戶賬號被映射到超算中心專屬本地賬號,則該賬號名下的所有映射到該超算中心的空間在存儲集群中的所有者等信息都會變更為專屬賬戶用戶,基于此,本地超算中心計算節(jié)點上的GVDS客戶端即可繞過I/O代理直接訪問空間中的文件。如果用戶賬戶被映射到GVDS統(tǒng)一賬戶,則其權限將采用GVDS的區(qū)域空間權限管理機制,通過管理節(jié)點鑒權產(chǎn)生的憑證經(jīng)由I/O代理訪問相應數(shù)據(jù)空間。
基于視圖隔離和訪問控制機制,GVDS建立了全局一站式權限控制和認證體系,實現(xiàn)了廣域分散存儲資源的共享和隔離訪問。
GVDS聚合了跨域分散且異構的存儲資源,形成了統(tǒng)一的虛擬數(shù)據(jù)空間,并面向用戶和應用提供統(tǒng)一的訪問接口及便捷的管理和共享。然而,仍需進行大量的性能優(yōu)化工作才能滿足用戶對廣域分布數(shù)據(jù)高性能、低時延的訪問需求。因此,本節(jié)研究了虛擬數(shù)據(jù)空間中的數(shù)據(jù)訪問性能優(yōu)化方法。針對帶寬受限且時延高的廣域網(wǎng)環(huán)境下的高效數(shù)據(jù)讀、寫及數(shù)據(jù)優(yōu)化布局3個子問題,通過基于負載特征的數(shù)據(jù)預讀方法,實現(xiàn)高效的數(shù)據(jù)讀??;通過基于請求合并的回寫緩存方法,有效提升數(shù)據(jù)寫性能;通過副本布局及一致性同步方法,實現(xiàn)數(shù)據(jù)塊副本的廣域優(yōu)化布局及低開銷同步。在本節(jié)中,筆者將詳細描述這些性能優(yōu)化措施。
3.2.1 基于負載特征的數(shù)據(jù)預讀方法
針對廣域帶寬受限且數(shù)據(jù)廣域分布場景下的數(shù)據(jù)高效讀取需求,GVDS實現(xiàn)了基于負載特征的自適應增量預讀方法,通過感知訪問的帶寬負載、文件I/O等特征,基于緩存的命中概率動態(tài)調整預讀塊的長度,實現(xiàn)了廣域環(huán)境下多文件海量數(shù)據(jù)的高效訪問。
在讀取數(shù)據(jù)時,如果在客戶端緩存中找到請求的數(shù)據(jù),即可確認讀取完成。而當發(fā)生緩存未命中時,則需要通過與I/O代理聯(lián)系來讀取請求的數(shù)據(jù)。如圖3(a)所示,GVDS使用文件緩存控制塊來記錄文件訪問特征,并決定是否需要進行預讀以及確定預讀的步長。當用戶提交文件讀請求時,文件緩存控制塊會記錄該文件的歷史訪問信息,并根據(jù)其訪問的數(shù)據(jù)塊大小、存儲區(qū)地址、歷史預讀塊及其命中率等信息分析其訪問特征。文件訪問的隨機讀和順序讀特征是GVDS預讀機制是否發(fā)揮作用的關鍵,當GVDS的預讀機制發(fā)現(xiàn)當前文件的歷史順序訪問數(shù)據(jù)量已經(jīng)超過預設的啟動閾值之后,將會啟動預讀機制,分配預讀緩存,并行預讀若干個數(shù)據(jù)塊。在預讀機制啟動后,GVDS預讀機制則會根據(jù)預讀緩存的命中率進行增量預讀,即在判定預讀緩存被訪問后,自適應地增加預讀數(shù)據(jù)量。此外,預讀的數(shù)據(jù)量與預讀步長正相關,而預讀步長則由帶寬壓力和文件I/O特征等負載特征綜合決定,以平衡系統(tǒng)負載和數(shù)據(jù)訪問性能。其中,帶寬壓力由I/O請求調度器提供,其與I/O請求調度器中等待隊列中的請求數(shù)量成正比,較大的帶寬壓力意味著較大的I/O負載,此時預讀步長會自適應地減小,以減輕負載;文件I/O特征則包括文件的預讀命中率、I/O請求最大吞吐量等,較高的預讀命中率和較大的I/O請求吞吐量都會增加預讀步長,以提升訪問性能。
如圖3(b)、圖3(c)所示,GVDS的數(shù)據(jù)預讀方法可有效地提升順序讀時的數(shù)據(jù)訪問性能,而隨機讀取時,面對讀放大問題,GVDS通過動態(tài)訪問模式檢測動態(tài)調整預讀機制,從而獲取較低的性能損失。綜上所述,GVDS通過基于負載特征的數(shù)據(jù)預讀方法實現(xiàn)了廣域環(huán)境中的數(shù)據(jù)高效讀取。
圖3 基于負載特征的數(shù)據(jù)預讀方法
3.2.2 基于請求合并的回寫緩存方法
在數(shù)據(jù)寫入方面,針對廣域環(huán)境中的數(shù)據(jù)高效寫入需求,GVDS實現(xiàn)了基于請求合并的回寫緩存方法。GVDS客戶端聚合可亂序執(zhí)行的數(shù)據(jù)I/O請求,并通過回寫緩存將虛擬數(shù)據(jù)空間客戶端提交的數(shù)據(jù)暫時緩存在本地,由后臺線程異步提交,進而提升遠程數(shù)據(jù)的寫入性能。
數(shù)據(jù)寫入請求將數(shù)據(jù)寫入客戶端緩存而非數(shù)據(jù)源,客戶端不斷將緩存數(shù)據(jù)刷新回數(shù)據(jù)源。由于可同時將多個寫入請求發(fā)送到遠程超算中心內部署的I/O代理上,因此GVDS采用異步寫方式顯著提高寫性能。此外,每個請求都需要通過高時延廣域網(wǎng)絡通信,這會帶來較大的網(wǎng)絡開銷,并且對文件的多個不連續(xù)部分的訪問請求經(jīng)常被交叉提交,因此如圖4(a)所示,在將寫請求發(fā)送到I/O代理之前,用戶級別的守護程序會合并這些請求,以提高I/O性能。
為了提高并發(fā)請求處理的性能,GVDS客戶端允許存在多個線程,以便每個線程可以獨立選擇和處理隊列中的并發(fā)請求。當從I/O代理接收到響應時,用戶級別的守護程序會將其寫回到用戶空間文件系統(tǒng)(filesystem in userspace,F(xiàn)USE)[32]的內核模塊,然后驅動程序將請求標記為已完成,并喚醒用戶進程。
如圖4(b)所示,GVDS請求合并方法能有效地提升小數(shù)據(jù)訪問塊時的寫入性能,因為其對請求的合并能有效地降低高時延網(wǎng)絡通信開銷。但是受到FUSE請求切割機制的約束,在數(shù)據(jù)訪問塊大于64 KB時,請求合并方法將無明顯的性能優(yōu)化。此外,GVDS基于請求合并的回寫緩存方法能從整體上保持較高的遠程數(shù)據(jù)寫入性能。
圖4 基于請求合并的回寫緩存方法
3.2.3 副本布局及一致性同步方法
除了對數(shù)據(jù)讀取和寫入進行優(yōu)化外,數(shù)據(jù)布局也是提升系統(tǒng)跨域訪問性能的重要方法之一。針對廣域環(huán)境中的數(shù)據(jù)優(yōu)化布局問題,GVDS中設計并實現(xiàn)了一種數(shù)據(jù)塊粒度的多副本機制及副本間的一致性同步方法,以優(yōu)化數(shù)據(jù)在廣域環(huán)境中的布局,并實現(xiàn)低開銷的副本同步。
首先,GVDS基于負載特征感知實現(xiàn)副本的動態(tài)布局。如圖5(a)所示,GVDS基于本地超算采集的I/O負載特征來預估并構建以訪問時延為收益的計算模型,并結合對副本異地更新I/O負載的感知來決策副本的創(chuàng)建與布局。為了避免負載特征的采集給I/O代理帶來過大的開銷,客戶端維護其本地打開的遠程文件的歷史訪問請求統(tǒng)計信息,并周期性地提交給I/O代理的負載特征度量子系統(tǒng)。GVDS副本動態(tài)布局策略能夠憑借有限時間窗口內的局部數(shù)據(jù)訪問信息、歷史積累的目錄及文件訪問模式統(tǒng)計量對文件的負載特征進行識別,并根據(jù)識別到的數(shù)據(jù)負載特征實現(xiàn)副本動態(tài)布局。圖5(b)表明,GVDS中的副本布局方法能有效地提升廣域環(huán)境中的文件訪問性能。
數(shù)據(jù)布局執(zhí)行后,如何以較低的同步開銷保證副本數(shù)據(jù)間的一致性是GVDS面臨的重要挑戰(zhàn)之一。GVDS針對廣域環(huán)境中副本空間的目錄樹同步問題和并發(fā)寫的一致性問題,分別采用了漸進一致性保證的目錄樹同步方法和因果一致的副本數(shù)據(jù)索引同步方法。
圖5 負載特征感知的副本動態(tài)布局方法
副本空間內目錄樹的一致性是存儲系統(tǒng)需要滿足的基本屬性和首要保證。如圖6(a)所示,GVDS采用了一種適用于廣域網(wǎng)環(huán)境的副本空間目錄樹同步架構。其通過沖突檢測識別或預判廣域網(wǎng)絡中目錄樹節(jié)點的并行沖突狀態(tài),通過為節(jié)點消息同步選擇漸進一致性保證的同步模型中強一致或者弱一致的同步信道,最終達成了較強的一致性以及高性能訪問的目的。GVDS中目錄樹的漸進一致性同步模型將I/O代理劃分到兩種不同一致性強度的共識組,將單中心內的I/O代理節(jié)點劃分為域內共識組,負責中心內的目錄樹副本狀態(tài)同步。域內共識組中的一個特殊節(jié)點會被指派為邊緣I/O代理,參與到GVDS系統(tǒng)的跨域共識組中。跨域共識組負責維護跨廣域網(wǎng)多個超算中心的副本空間內的目錄樹的一致性,所有對跨域副本空間的目錄樹修改操作都會由域內共識組的邊緣節(jié)點發(fā)起并提交。
圖6 副本空間一致性保證
對于數(shù)據(jù)并發(fā)寫的一致性問題,GVDS采用一種因果一致的副本數(shù)據(jù)索引同步方法。如圖6(b)所示,GVDS通過I/O請求邏輯時間戳對訪問請求進行定序,并基于多版本區(qū)段樹的數(shù)據(jù)索引方法解決索引更新請求亂序到達的沖突問題,實現(xiàn)了副本數(shù)據(jù)并發(fā)寫的因果一致性。保證因果一致的I/O請求邏輯時間戳主要由版本矢量、機器時間戳以及源超算中心3個值構成。其中,版本矢量用于標記請求之間的因果依賴關系,機器時間戳以及源超算中心的ID號用于為I/O請求提供全序關系,以在因果一致性模型的并行更新時解決沖突。此外,I/O代理節(jié)點會為目標副本文件構建多版本區(qū)段樹,并通過樹的版本回滾來解決網(wǎng)絡包亂序到達導致的并發(fā)沖突。
如圖7所示,相對于訪問廣域中的數(shù)據(jù)空間,在應用副本布局及一致性同步方法時,GVDS能實現(xiàn)低時延的副本空間訪問。綜上所述,GVDS通過優(yōu)化的副本布局實現(xiàn)了廣域數(shù)據(jù)的高效訪問,并在多副本之間形成了低開銷的有效同步。
GVDS中引入了用戶、用戶組、區(qū)域、空間等實體,以實現(xiàn)對廣域分散存儲資源的聚合、共享與隔離。GVDS實體關系如圖8所示。
每個GV DS用戶都對應一個包含基本權限信息、組關系和區(qū)域空間列表的GVDS賬戶,例如在圖8中,用戶3與區(qū)域1和區(qū)域2關聯(lián),即區(qū)域1、區(qū)域2對用戶3可見。用戶組由多個用戶組成,用于進行批量的數(shù)據(jù)共享和訪問權限控制,組的權限將被其成員用戶繼承,例如在圖8中,用戶1和用戶2是同一用戶組的成員,因此用戶1和用戶2將繼承用戶組對區(qū)域1的訪問權限。區(qū)域可以隱藏數(shù)據(jù)訪問的復雜性,并簡化數(shù)據(jù)共享過程,用戶數(shù)據(jù)在區(qū)域級別共享,用戶通過加入?yún)^(qū)域來獲取某些領域或者科研機構所共享的數(shù)據(jù)集??臻g用于隱藏數(shù)據(jù)位置映射的復雜性,并簡化對數(shù)據(jù)的訪問,是保存用戶數(shù)據(jù)的邏輯容器及數(shù)據(jù)調度和副本控制的一級單位。創(chuàng)建空間時,調度程序會根據(jù)存儲集群剩余容量、區(qū)域關聯(lián)度、用戶關聯(lián)度等信息將空間映射到合理的超算中心??臻g的存儲資源由超算中心的I/O代理提供。如在圖8中,區(qū)域1中含有空間1和空間2兩個空間,空間1和空間2分別存儲于超算中心1和超算中心2中,并分別由部署于兩個超算中心的I/O代理1和I/O代理2提供訪問支持,同時I/O代理2還支持區(qū)域2下的空間3。
圖7 副本空間與廣域空間的訪問性能對比
圖8 GVDS 實體關系
圖9 GVDS 軟件體系結構
GV D S 軟件體系結構如圖9 所示。GVDS管理節(jié)點中的模塊提供對存儲資源的管理功能,并使用分布式數(shù)據(jù)庫維護控制信息,包括存儲資源狀態(tài)、用戶與組成員信息、區(qū)域信息與空間信息、I/O代理拓撲圖等信息,該數(shù)據(jù)庫部署在每個超算中心,并且彼此同步。I/O 代理節(jié)點向廣域網(wǎng)暴露存儲資源的訪問接口。GV DS客戶端從GV DS入口點獲取超算中心的拓撲圖,并且以網(wǎng)絡連接質量為標準,對所有超算中心進行排序。GVDS客戶端會優(yōu)先選擇同一超算中心的GVDS管理節(jié)點實例,其次選擇網(wǎng)絡距離最近的超算中心管理節(jié)點實例。GVDS客戶端向管理節(jié)點拉取用戶身份認證、用戶可訪問的區(qū)域及空間等信息。經(jīng)由管理節(jié)點身份驗證的客戶端有權訪問GVDS廣域環(huán)境中的所有I/O代理節(jié)點,并且從其名下的空間讀寫文件數(shù)據(jù)。在數(shù)據(jù)訪問過程中,客戶端會將客戶端視圖的邏輯文件路徑轉換為GVDS全局資源路徑,該全局資源路徑最終在I/O代理中被轉化為實際資源存儲路徑。GVDS 客戶端基于FUSE 構建POSIX訪問接口,將P O S I X 語義的請求轉換為GV D S 語義的請求,并發(fā)送到I/O 代理端數(shù)據(jù)訪問模塊處理,實現(xiàn)統(tǒng)一訪問接口。此外,GVDS客戶端的預讀和緩存機制及I/O代理節(jié)點中的副本機制將優(yōu)化廣域環(huán)境中的數(shù)據(jù)訪問性能,以實現(xiàn)高效數(shù)據(jù)訪問。
GVDS系統(tǒng)架構如圖10所示,GVDS系統(tǒng)可以部署在多個超算中心內,基于每個超算中心內的存儲資源構建若干個管理節(jié)點和I/O代理節(jié)點。GVDS客戶端通常被部署于超算中心內的計算節(jié)點上,也可以被部署在超算中心之外,并通過廣域網(wǎng)訪問超算中心的存儲資源。
4.2.1 管理節(jié)點
單個超算中心需要至少一個管理節(jié)點,管理節(jié)點通過使用全局知識構建的全局名字空間,極大地簡化了存儲資源聚合、空間放置決策和I/O代理管理。為了降低管理節(jié)點的負載,避免管理節(jié)點成為文件訪問性能瓶頸,盡量避免其參與到主I/O路徑中。GVDS管理節(jié)點僅維護用戶視圖中第一級區(qū)域和第二級空間的元數(shù)據(jù)信息,空間下文件的元數(shù)據(jù)全部由空間所映射超算中心的I/O代理維護。GVDS客戶端僅在初次訪問或者區(qū)域空間的元數(shù)據(jù)緩存超時時,才會向管理節(jié)點發(fā)起數(shù)據(jù)訪問請求。
圖10 GVDS 系統(tǒng)架構
客戶端在訪問文件時,會與管理節(jié)點和I/O代理節(jié)點產(chǎn)生交互??蛻舳苏埱笥晒芾砉?jié)點維護的區(qū)域和空間信息,獲取與當前登錄用戶關聯(lián)的區(qū)域和空間信息、集群拓撲圖等。基于從管理節(jié)點獲取的信息,客戶端將構建一個由區(qū)域邏輯節(jié)點和空間邏輯節(jié)點組成的兩級目錄樹。進入?yún)^(qū)域目錄時,客戶端需要向管理節(jié)點發(fā)送帶有區(qū)域ID的請求,以獲取有關區(qū)域內的空間信息。空間信息則包含空間全局映射統(tǒng)一資源標識符(uniform resource identifier,URI)、空間權限信息等,其中空間全局映射URI是存儲用戶文件的I/O代理入口點。管理節(jié)點動態(tài)采集I/O代理的負載信息,監(jiān)控其健康狀態(tài),并且向客戶端反饋I/O代理的負載信息,不可用的I/O代理將會被管理節(jié)點屏蔽,避免客戶端數(shù)據(jù)訪問超時對計算任務產(chǎn)生影響??蛻舳丝梢曰诰彺婢植啃浴⒆畹拓撦d等策略選擇同一超算中心內的任意一個I/O代理訪問其空間。
為了提高可靠性與自治性,GVDS環(huán)境中的每個超算中心均部署了一個分布式數(shù)據(jù)庫實例。主機使用Couchbase[33]數(shù)據(jù)庫系統(tǒng)存儲用戶、區(qū)域、空間、I/O代理和存儲資源等信息,并且依賴其跨數(shù)據(jù)中心復制機制實現(xiàn)超算中心間跨域的最終一致的控制信息復制??蛻舳撕虸/O代理通常與位于同一超算中心的管理節(jié)點聯(lián)系,以避免廣域網(wǎng)通信的開銷。當同一超算中心中的管理節(jié)點發(fā)生故障時,客戶端和I/O代理會聯(lián)系較近的超算中心的管理節(jié)點。
4.2.2 I/O代理節(jié)點
I/O代理節(jié)點為客戶端提供空間分配的存儲資源的訪問接口。I/O代理節(jié)點的挑戰(zhàn)在于保證實際應用的文件操作與客戶端POSIX語義請求的一致性。例如當客戶端打開文件時,需要獲取文件句柄,以進行后續(xù)的文件讀取/寫入。如果選擇讓I/O代理節(jié)點執(zhí)行同樣的打開文件操作、返回文件句柄,并且讓客戶端在隨后的文件讀寫中使用文件句柄作為文件訪問入口點,這種操作的一一對應反而將造成與實際效果的不一致。例如,當I/O代理負載平衡、I/O代理句柄過多自動刪除、句柄號長時間未用被回收并被其他客戶端使用時,都會發(fā)生因句柄失效而產(chǎn)生的不一致操作。
而生成GVDS環(huán)境中全局唯一句柄號的開銷過于龐大,因此I/O代理使用文件路徑打開文件,然后執(zhí)行實際的讀寫操作,最后關閉文件。并且,為了減少文件打開帶來的開銷以及文件關閉引發(fā)的不必要的緩存沖刷操作,I/O代理將文件路徑作為鍵來緩存文件句柄,采用最近最少使用(least recently used,LRU)策略驅逐長期未訪問的句柄,并實際關閉該文件。
4.2.3 GVDS客戶端
用戶應用程序使用GVDS客戶端訪問文件。GVDS客戶端基于FUSE向用戶應用程序提供POSIX文件訪問接口。它一般被安裝在超算中心內的計算節(jié)點上,用于獲取執(zhí)行計算時所需的數(shù)據(jù);或者被安裝在用戶PC上,用于上傳輸入文件或者瀏覽計算結果。GVDS客戶端在用戶空間中提供訪問服務,與大多數(shù)本地文件系統(tǒng)相似,GVDS提供讀取、寫入、刪除文件的操作,以及創(chuàng)建、移動和刪除目錄的操作。用戶應用程序使用客戶端文件視圖中的邏輯文件路徑來訪問文件數(shù)據(jù),而無須知道文件實際所處的超算中心。訪問文件時,客戶端將邏輯文件路徑轉換為GVDS全局資源路徑,并且根據(jù)文件的全局資源路徑從GVDS環(huán)境拓撲圖中尋找適合的I/O代理,將POSIX語義的文件訪問請求翻譯為GVDS文件訪問請求格式,并最終向I/O代理入口點提交請求。
為了從各個方面評估本文提出的系統(tǒng),筆者在國家高性能計算環(huán)境以及阿里云環(huán)境中對GVDS進行了實驗驗證。在國家高性能計算環(huán)境中廣域分布的5個超算節(jié)點部署了GVDS,并測試了GVDS的功能及性能。此外,在阿里云中的5個跨域分布的數(shù)據(jù)中心中部署了GVDS以及流行的網(wǎng)絡存儲系統(tǒng),以進行性能對比測試,并驗證了GVDS系統(tǒng)在不同環(huán)境中的適用性。
在GVDS功能驗證方面,在部署的實驗平臺中開展了GVDS典型使用場景測試驗證工作。通過數(shù)據(jù)區(qū)域的定制化共享、遠程大數(shù)據(jù)集的按需實時訪問、廣域分布數(shù)據(jù)的多中心協(xié)同處理等GVDS使用場景,驗證GVDS系統(tǒng)全局統(tǒng)一視圖、廣域數(shù)據(jù)共享、遠程數(shù)據(jù)按需訪問、跨域數(shù)據(jù)協(xié)同處理等重要功能。
(1)典型使用場景1:數(shù)據(jù)區(qū)域的定制化共享
當前高性能計算環(huán)境中,在數(shù)據(jù)廣域分散、各中心隔離自治的情況下,GVDS提供了一種能滿足用戶多樣化共享需求的靈活數(shù)據(jù)共享模式。如圖11(a)所示,利用GVDS數(shù)據(jù)區(qū)域管理和權限管理等功能,可將數(shù)據(jù)區(qū)域定制化共享給個體用戶、群組用戶、全部用戶等多層級,獲得可靠安全且靈活的數(shù)據(jù)分區(qū)能力。驗證情況如圖11(b)所示。
(2)典型使用場景2:遠程大數(shù)據(jù)集的按需實時訪問
針對國家高性能計算環(huán)境中用戶對遠程大規(guī)模數(shù)據(jù)集的訪問需求,現(xiàn)有的訪問模式在進行跨域訪問和管理時較為困難,甚至需要遠程遷移整個數(shù)據(jù)集。GVDS系統(tǒng)可通過統(tǒng)一文件虛擬視圖,以標準文件訪問接口直接跨域訪問大數(shù)據(jù)集中的任何數(shù)據(jù),如圖12(a)所示。GVDS系統(tǒng)可按需實時訪問所需數(shù)據(jù)塊,而不必傳輸整個大數(shù)據(jù)集。驗證情況如圖12(b)所示。
(3)典型使用場景3:廣域分布數(shù)據(jù)的多中心協(xié)同處理
隨著科學和工程問題的復雜化,對跨域分布數(shù)據(jù)的多中心協(xié)同處理已成為未來大型應用重要的發(fā)展趨勢。為了滿足上述需求,如圖13所示,GVDS系統(tǒng)基于廣域分布數(shù)據(jù)的全局統(tǒng)一視圖支撐數(shù)據(jù)多中心協(xié)同處理。計算任務可以分布于不同的超算中心,并可直接訪問分布于不同地點的數(shù)據(jù),數(shù)據(jù)的分布和遷移由GVDS透明地完成。
圖11 數(shù)據(jù)區(qū)域的定制化共享
圖12 遠程大數(shù)據(jù)集的按需實時訪問
圖13 廣域分布數(shù)據(jù)的多中心協(xié)同處理
筆者在國家高性能計算環(huán)境中進行了GVDS系統(tǒng)訪問性能和網(wǎng)絡傳輸帶寬的對比測試,采用了4種不同平均帶寬的跨超算中心鏈路進行文件讀寫壓力測試,并記錄了GVDS的文件讀寫吞吐速率與網(wǎng)絡傳輸帶寬比值。各超算節(jié)點間的平均網(wǎng)絡傳輸帶寬分別為中國科學院超級計算中心(簡稱中科院超算中心)到國家超級計算濟南中心(簡稱濟南超算中心)112 125 KB/s、中科院超算中心到上海超級計算中心(簡稱上海超算中心)82 083 KB/s、國家超級計算長沙中心(簡稱長沙超算中心)到國家超級計算廣州中心(簡稱廣州超算中心)3 887 KB/s、長沙超算中心到上海超算中心118 KB/s。圖14表明,在多種廣域網(wǎng)絡鏈路條件下,GVDS文件寫入性能平均能達到約80%的最大網(wǎng)絡傳輸速率,讀取性能平均能達到約50%的最大網(wǎng)絡傳輸帶寬速率。
此外,在阿里云的5個數(shù)據(jù)中心進行了GVDS與3個網(wǎng)絡存儲系統(tǒng)的性能對比測試。5個數(shù)據(jù)中心分別位于北京、上海、青島、深圳和成都,每個中心各創(chuàng)建3~4臺2xLarge的云服務器(elastic compute service,ECS)實例,每臺實例擁有廣域網(wǎng)的32 Mbit/s帶寬。將GVDS與以下3個存儲系統(tǒng)進行比較:安全外殼協(xié)議文件系統(tǒng)(secure shell file system,SSHFS)[34]、網(wǎng)絡文件系統(tǒng)(network file system,NFS)[35]、OneData[19]。筆者使用Fio[36]生成所需類型的I/O操作,以評估所有系統(tǒng)的數(shù)據(jù)訪問性能。
圖15展示了多種存儲系統(tǒng)在廣域環(huán)境中的元數(shù)據(jù)訪問性能對比。可以看出,基于GVDS在元數(shù)據(jù)訪問方面的優(yōu)化工作,GVDS的文件創(chuàng)建速度僅次于NFS,且文件刪除速度快于其他網(wǎng)絡文件系統(tǒng)。此外,GVDS為了優(yōu)化元數(shù)據(jù)訪問性能,對目錄項元數(shù)據(jù)進行了預讀優(yōu)化。這種優(yōu)化在創(chuàng)建或刪除文件等元數(shù)據(jù)操作時會有較好的優(yōu)化效果,在列文件目錄操作時會導致不必要的開銷,同時OneData實現(xiàn)了元數(shù)據(jù)的自管理推送更新且SSHFS對目錄項有緩存優(yōu)化,因此GVDS的性能略低于OneData和SSHFS。
圖14 不同數(shù)據(jù)訪問塊大小下的數(shù)據(jù)訪問性能
圖15 不同數(shù)據(jù)訪問塊大小下的數(shù)據(jù)順序訪問性能
對于順序讀、寫壓力測試,單個壓力器線程以不同的數(shù)據(jù)塊大小順序刷入10 GB的數(shù)據(jù),而單次實驗中,壓力器讀取或寫入的數(shù)據(jù)塊的大小是相同的。如圖16(a)所示,對于數(shù)據(jù)順序寫入,當單次寫入數(shù)據(jù)塊小于256 KB時,GVDS、SSHFS、OneData的吞吐量要遠遠高于NFS。原因在于,寫入請求在NFS中串行提交、同步寫入,數(shù)據(jù)塊越小時,相同I/O量的網(wǎng)絡請求數(shù)量越多,而每次寫入都需要串行通過高時延的廣域網(wǎng)通信,從而導致了NFC較差的寫入性能。SSHFS、GVDS和OneData均選擇了回寫機制刷寫緩存到遠程數(shù)據(jù)中心,這有益于提升性能,但是違背了客戶端同步寫入的語義,引入了數(shù)據(jù)丟失的風險。為了解決這個風險,GVDS只對遠程數(shù)據(jù)中心或者訪問數(shù)據(jù)塊大小小于“帶寬×時延÷2”的請求進行回寫緩存,并且當應用程序開啟同步標志時,還會優(yōu)先選擇磁盤文件作為持久緩存,盡量保證數(shù)據(jù)持久性。與此同時,在塊大小從512 KB增加到4 096 KB的過程中,NFS的吞吐量顯著增加,并且基本達到網(wǎng)絡帶寬瓶頸。從實驗結果可以看到,GVDS基本具有最佳的寫入性能,相比SSHFS和OneData,分別平均高9.94%和49.18%。
圖16(b)顯示了順序讀取數(shù)據(jù)的實驗結果。GVDS順序讀性能相比SSHFS、OneData和NFS,分別平均高131.22%、52.84%和35.89%。當單次讀取數(shù)據(jù)塊小于256 KB時,GVDS的文件讀取性能一直有較高的優(yōu)勢,這是因為GVDS針對廣域網(wǎng)環(huán)境特性設計了鏈式預讀機制。GVDS依賴文件的歷史訪問負載特征進行預讀判斷,相比SSHFS以及OneData的固定塊預讀機制,能更早地觸發(fā)預讀,并且兩次預讀之間沒有明顯的停頓時間。當塊大小超過256 KB時,NFS展現(xiàn)出比所有基于FUSE接口的網(wǎng)絡存儲系統(tǒng)更高的吞吐量。這是由于FUSE會將大塊數(shù)據(jù)讀過程切分為對多個128 KB大小固定塊的串行子過程,成倍提高了請求的總響應時間以及請求總數(shù)。而NFS的大塊數(shù)據(jù)讀子過程為并行執(zhí)行,沒有該缺陷。
對于隨機讀、寫壓力測試,單個壓力器將1 GB數(shù)據(jù)隨機寫入具有不同塊大小的文件中,或從具有不同塊大小的文件中隨機讀取數(shù)據(jù)。如圖17(a)所示,隨著塊大小的增加,GVDS、SSHFS與OneData的隨機寫性能沒有明顯變化,其瓶頸均在于廣域網(wǎng)鏈路帶寬。其原因與順序寫入相同,三者均采用了回寫緩存以加速寫入過程,并且GVDS提供了更強的數(shù)據(jù)持久性。塊大小增加到512 KB后,NFS與其他網(wǎng)絡存儲系統(tǒng)的寫入性能基本持平,達到廣域網(wǎng)鏈路瓶頸。在隨機寫過程中,由于數(shù)據(jù)塊相互覆蓋的情況以及緩存導致的誤差,GVDS的寫入性能在部分測試項中略微超過了鏈路最大帶寬。
圖16 不同數(shù)據(jù)訪問塊大小下的數(shù)據(jù)順序訪問性能
圖17 不同數(shù)據(jù)訪問塊大小下的數(shù)據(jù)隨機訪問性能
如圖17(b)所示,當數(shù)據(jù)訪問塊大小在128 KB以下時,NFS性能與SSHFS相差不大,訪問塊大小超過128 KB以后,由于FUSE的串行子過程機制,基于FUSE訪問接口的3個網(wǎng)絡存儲系統(tǒng)(SSHFS、OneData以及GVDS)表現(xiàn)均劣于NFS。并且在隨機讀負載下,預讀機制并沒有發(fā)揮作用,反而擠占了OneData以及GVDS的正常訪問流量,導致這兩者的隨機讀訪問性能低于同類型的SSHFS。
綜上所述,在對廣域分布數(shù)據(jù)的訪問性能方面,GVDS在順序讀寫和隨機寫性能上優(yōu)于其他主流網(wǎng)絡文件系統(tǒng),而在隨機讀性能方面仍存在進一步的優(yōu)化空間。
GVDS是為了滿足國家高性能計算環(huán)境中對廣域分布數(shù)據(jù)的統(tǒng)一管理和高效訪問需求而設計并實現(xiàn)的跨域分布式存儲系統(tǒng)。GVDS不僅是國家高性能計算環(huán)境中提供基礎存儲服務的工具,還能與CNGrid基礎架構進行結合,進而豐富其數(shù)據(jù)層面的跨域協(xié)作與資源共享。
GVDS具有以下優(yōu)點。
● 位于異地超算中心的異構存儲資源可以被統(tǒng)一管理、共享和訪問。由抽象的區(qū)域、空間以及空間內部實際目錄與文件所構建的文件系統(tǒng)視圖可以提供透明的跨域數(shù)據(jù)共享與隔離。
● 支持文件數(shù)據(jù)按需加載。通過數(shù)據(jù)塊粒度的數(shù)據(jù)遷移可以從遠程超算中心加載文件的任意數(shù)據(jù)片段,而不必下載整個文件,大大減少了通過網(wǎng)絡傳輸?shù)臄?shù)據(jù)量。
● 支持高效的數(shù)據(jù)訪問。通過預讀、副本等數(shù)據(jù)訪問性能優(yōu)化方法可以支撐高效的遠程數(shù)據(jù)訪問,而且簡化了現(xiàn)有的顯式數(shù)據(jù)遷移和部署過程。
今后筆者將進一步優(yōu)化GVDS的廣域數(shù)據(jù)訪問性能,針對隨機讀方面存在的問題開展相關的優(yōu)化方法研究工作,進而使GVDS系統(tǒng)能有效地支撐大型計算應用的高效訪問和跨域協(xié)作。