大数据环境下的存储系统构建:挑战、方法和趋势
大數據環境下的存儲系統構建:挑戰、方法和趨勢
陳游旻, 李飛, 舒繼武
清華大學計算機科學與技術系,北京 100084
摘要:互聯網規模的迅速擴展促使全球數據總量呈現爆炸式的增長。物聯網、電子商務等新的應用對數據存儲及處理的實時性提出了更高的要求,迫切需要結合新型存儲介質,以構建大規模、高性能存儲系統。分別從閃存存儲、持久性內存存儲兩種存儲系統構建方案出發,詳細闡述了其各自面臨的挑戰,并總結了現有的解決方案。最后,展望了未來數據中心及存儲系統構建的若干發展趨勢。
關鍵詞:存儲系統 ; 閃存 ; 非易失內存
論文引用格式:
陳游旻, 李飛, 舒繼武. 大數據環境下的存儲系統構建:挑戰、方法和趨勢. 大數據[J], 2019, 5(4):27-40
CHEN Y M, LI F, SHU J W.Building storage systems in big data era:challenges, methods and trends. Big Data Research[J], 2019, 5(4): 27-40
1 引言
互聯網規模的迅速擴張促使全球數據呈現爆炸式增長、海量聚集的特點,大數據逐步走向信息化發展的新階段。近年來,社交媒體、物聯網等技術的迅速發展導致了大量非結構化數據的出現,從海量數據中提取有價值信息的難度越來越大。因此,大數據不止更“大”,還要更“快”。基于傳統磁盤的大數據平臺已經難以應對新應用日益增長的數據存儲與處理需求,大數據技術正在發生著以下變化。
閃存(flash memory)逐漸替代磁盤,用于構建大規模存儲系統。在存儲系統中,磁盤自1956年被發明以來,長期居于外存的主導地位。近年來,隨著閃存制造與加工工藝的逐漸成熟,閃存設備已經開始在個人電腦與移動設備上得到普及,并將在數據中心得到大規模的應用。據標準性能評估組織(Standard Performance Evaluation Corporation,SPEC)調查,閃存設備在數據中心的使用比例從2012年的8%增長到了2017年的27%,預計到2020年,閃存設備的使用比例將達到47%。2018年,英特爾公司推出了基于4層單元(quad-level cell,QLC)和三維堆疊技術的消費級固態盤(solid state drive, SSD),在實現高性能、高可靠性的同時,進一步降低了固態盤的價格,提供了更大的存儲容量。與磁盤相比,閃存具有體積小、能耗低、帶寬高、時延低、抗震性強、可靠性高等特點。正因為如此,研究人員著力于構建大規模閃存存儲系統,以充分發揮閃存優勢,適應大數據環境的發展,如清華大學提出構建開放通道閃存系統等。閃存存儲正發生著巨大變革。
隨著內存價格的日益低廉,內存計算逐步成為人們關注的熱點。電子商務、物聯網、自動駕駛等應用對數據管理的時效性提出了新的需求。例如,一個典型的網頁服務需要在數毫秒之內訪問數據倉庫數千次,用于響應單個用戶請求。內存計算依靠大容量內存,將待處理數據盡可能地全部放入內存中,從而實現高吞吐、高時效的數據存儲與處理。然而,動態隨機存取存儲器(dynamic random access memory, DRAM)價格昂貴、能耗高、性能不穩定等缺陷,限制了內存計算被更廣泛地應用。近年來出現了大量的新型非易失性隨機存儲介質(non-volatile memory, NVM),例如相變存儲器(phase change memory,PCM)、阻變存儲器(resistive ramdom-access memory,ReRAM)等,它們具有價格低廉、容量大、能耗低、性能與DRAM相當等特點,更重要的是,在系統發生斷電故障時,其存儲的數據不會丟失。這些優良的特性正推動著研究人員構建基于持久性內存的內存計算平臺,如惠普實驗室推出的The Machine、加州大學伯克利分校的FireBox等,內存存儲與計算正面臨著巨大變革。
針對大數據存儲技術面臨的巨大變革,本文將從閃存存儲、持久性內存存儲兩種存儲系統構建方案出發,詳細闡述其各自面臨的挑戰以及解決方案,最后,展望未來數據中心及存儲系統構建的若干發展趨勢。
2 告別硬盤:閃存存儲系統的構建
存儲設備從機械式部件發展至電子式部件是計算機發展中的重大變革,也是計算機發展的趨勢。表1比較了當前磁盤設備與閃存設備的存儲性能。與磁盤設備相比,閃存設備帶寬提高了1個數量級,時延降低了2個數量級,每秒的輸入輸出次數(input/output operations per second, IOPS)提高了近3個數量級。當前存儲系統多基于磁盤特性進行設計,極少考慮其他存儲介質的特性。隨著閃存技術的廣泛應用,如何在大數據環境下高效利用閃存并構建適合于閃存的存儲系統,值得關注與深入思考。
2.1 閃存與固態盤
閃存是一種電子式、可擦除、可編程、非易失的存儲器件。與機械式的磁盤相比,閃存具有體積小、能耗低、帶寬高、時延低、抗震性強、可靠性高等特點。在大容量固態盤中,NAND閃存是主要的存儲介質,分為單層單元(single-level cell,SLC)、多層單元(multi-level cell, MLC)、3層單元(triple-level cell,TLC)與QLC,分別表示每個閃存單元記錄1個、2個、3個和4個比特數。相比于傳統磁盤介質,閃存主要具有以下幾個獨特性質。
● 寫前擦除。閃存單元具有單向可編程的特性,對于閃存頁的寫入操作,閃存需要將數據寫入已擦除的頁面中,這被稱為寫前擦除,也被稱為不可覆蓋寫。
● 讀寫擦粒度不同。在閃存設備中,閃存頁是執行讀寫操作的基本單位,閃存塊是執行擦除操作的基本單位。一個閃存頁的容量一般為512 B~16 KB,一個閃存塊中一般包含64~512個閃存頁。此外,閃存設備的讀、寫、擦除操作的性能不同,閃存頁的讀操作平均時延為25 ms、寫操作平均時延為200 ms,閃存塊的擦除操作平均時延為1.5 ms。
● 磨損壽命有限(耐久性)。閃存單元能承受的擦寫操作次數有限。經過一定數量的擦寫操作后,閃存單元不能可靠地存儲數據狀態,這一過程被稱為單元磨損。閃存單元經歷的擦寫次數用于衡量閃存的擦寫壽命,也被稱為耐久性(endurance)。隨著閃存單元中比特位的增加(從SLC到QLC),閃存設備的每比特價格在降低,耐久性問題更加嚴峻。
固態盤是由閃存存儲單元組成的閃存存儲設備,其內部存在不同級別的I/O并發訪問能力,被稱為內部并發特性。SSD采用閃存轉換層(flash translation layer, FTL)對閃存的讀寫擦操作進行管理,并向軟件系統提供與傳統磁盤相同的讀寫接口,其主要功能包括地址映射、垃圾回收、磨損均衡、ECC校驗、壞塊管理等。地址映射機制維護了一個地址映射表,用于將主機端I/O請求的邏輯地址映射到閃存設備中的物理地址。由于閃存具有“寫前擦除”的特性,FTL采用“異地更新”的方式對數據進行更新。FTL將新版本的數據通過地址映射寫入空閑的閃存頁中,并將存有舊版本數據的閃存頁標記為無效。當SSD中的空閑閃存塊數量低于預定義的閾值時,FTL會對SSD進行垃圾回收操作。在FTL的垃圾回收過程中,有效數據的移動引入了額外的寫入量,占用了閃存設備的有效帶寬,加快了設備的磨損,這一問題被稱為閃存設備的寫放大問題。為了延長閃存設備的使用壽命,FTL采用動態或靜態的磨損均衡策略,盡量使擦寫操作均勻地分布在所有的閃存塊上。在SSD中,每個閃存頁除了數據區外,還保留一塊帶外空間(out of band,OOB),利用OOB對閃存頁中存儲的數據進行錯誤檢查與糾正(error correcting code,ECC)。當某個閃存塊無法可靠地保存數據時,FTL會將該塊標記為壞塊,不再使用。
2.2 閃存固態盤存儲系統的問題
在FTL的幫助下,現有的存儲系統可以無縫地運行在具有FTL的SSD之上,無須進行軟件的修改。基于閃存固態盤的存儲系統架構如圖1所示。
圖1???基于閃存固態盤的存儲系統架構
SSD通過串行高級技術附件(serial advanced technology attachment, SATA)、高速串行計算機擴展總線標準(peripheral component interconnect express,PCIe)或非易失性內存主機控制器接口規范(non-volatile memory express,NVMe)硬件接口與主機端連接,將自身抽象成通用塊設備供上層存儲軟件使用;內核中的文件系統運行在抽象出的塊設備之上,并向用戶態的應用程序(例如數據庫)提供文件訪問接口;FTL負責對閃存設備的特性進行管理,并將上層存儲軟件的I/O請求轉換成對閃存頁的讀、寫操作。FTL的應用加速了閃存設備的普及與推廣,但也阻礙了現有存儲系統發揮閃存設備在性能、壽命上的潛力,主要體現在以下幾個方面。
● 層次間功能存在重疊與干擾。如圖1所示,閃存固態盤存儲系統中不同層次間存在功能冗余的問題,例如,在 FTL、文件系統與上層數據庫中都存在存儲空間管理、數據地址映射或索引、垃圾回收等類似功能。這些冗余功能不僅會導致I/O處理上的低效,還會互相干擾,影響系統的性能和閃存設備的使用壽命。
● 系統軟件無法感知閃存特性。FTL將閃存設備抽象成通用塊設備,導出到主機端,屏蔽了上層存儲軟件對閃存設備特性的感知,阻礙了存儲軟件的定向優化。現有的存儲軟件是基于磁盤設備進行設計與優化的,不能充分發揮閃存設備的優勢,也無法彌補閃存設備的劣勢。
● 硬件管理缺乏軟件語義。上層存儲軟件通過FTL導出到塊設備接口,將I/O請求發送到SSD上。塊設備接口屏蔽了上層存儲軟件的語義信息,導致FTL在請求處理上效率低、產生額外的垃圾回收開銷與寫放大。例如,FTL在為寫請求分配閃存物理空間時,由于缺乏寫入數據的屬性(如元數據或文件數據)與熱度信息,無法有效地對寫入數據進行布局優化。冷熱數據可能會被分配到同一個物理閃存塊中,導致垃圾回收的開銷增大。
2.3 基于開放通道閃存設備的存儲系統構建方法
近年來,一種新型閃存架構——開放通道(open channel)閃存架構得到了工業界與學術界的廣泛關注,為解決閃存固態盤存儲系統面臨的問題提供了思路。如圖2所示,開放通道閃存架構在SSD的基礎上,移除了設備端FTL,消除了閃存固態盤存儲系統中的功能冗余。開放通道閃存架構將閃存設備的內部信息(如設備的硬件拓撲結構、閃存通道數量、閃存塊大小、閃存頁長度等)與控制接口(如讀操作、寫操作、擦除操作等)全部導出到主機端,由存儲軟件直接對閃存設備進行管理,打破了原有的感知屏蔽與語義隔離。存儲軟件能夠根據自身的I/O特征與閃存特性進行軟硬件協同設計與優化,充分發揮閃存設備的性能潛力,降低了設備的磨損。
圖2???閃存設備架構比較
開放通道閃存架構對云計算與數據中心具有重要意義。通過使用開放通道閃存設備,上層軟件能夠實現閃存通道級別的I/O隔離與并發控制,能夠對設備內的垃圾回收時機進行控制,能夠對閃存通道中的I/O請求按照語義優先級進行調度。開放通道閃存架構的這些優勢能夠幫助存儲系統實現可預測的I/O時延,降低分布式系統中的尾延遲(tail latency),優化云計算環境中的服務質量(quality of service,QoS)。目前,百度公司已經在其存儲系統中部署了超過3 000塊的開放通道SSD,用于網頁和圖像的存儲服務;阿里巴巴公司發布了自研的開放通道閃存設備AliFlash V3,并已經上線運行;谷歌、微軟、臉書以及亞馬遜都開始在數據中心應用開放通道閃存設備,以降低I/O時延,提高服務質量。
雖然開放通道閃存架構具有上述優點,但是它也給存儲系統的設計帶來了挑戰。首先,開放通道閃存設備的接口與塊設備不同,它不兼容現有的基于塊設備設計的存儲軟件與內核I/O棧(如緩存機制、I/O調度機制等);其次,因為開放通道閃存設備移除了設備端的FTL,所以上層的存儲軟件需要對閃存設備的底層功能進行管理,例如壞塊管理、磨損均衡、ECC校驗等,這在一定程度上增加了存儲軟件的設計復雜度;最后,開放通道閃存設備導出的硬件信息與控制接口為存儲系統的設計與優化帶來了新的思考維度,例如,如何降低閃存設備的軟件管理開銷、如何充分發揮閃存設備的內部并發性能、如何將軟件的I/O特征與閃存的特性結合、如何利用閃存的特性對現有的存儲機制進行優化等。下面分別從閃存管理架構、文件系統、鍵值存儲系統、分布式對象存儲系統等方面介紹開放通道閃存存儲系統的構建方法。
(1)閃存管理架構
由于開放通道閃存設備移除了設備端的FTL,主機端軟件需要對閃存設備的內部特性進行管理,例如磨損均衡、壞塊管理等,這增加了存儲軟件的設計復雜度。現有的主機端閃存管理架構存在著接口功能單一、適用場景受限、不兼容現有的存儲軟件棧等問題,限制了軟件的優化空間與開放通道閃存設備的應用范圍。針對上述問題,可以在主機端對閃存設備的管理功能進行分解,提供對開放通道閃存設備的底層管理與設備抽象,以降低上層存儲系統的設計復雜度;設計細粒度(如頁粒度)的閃存控制接口,以擴大存儲軟件的優化空間和設備的適用場景。除此之外,還可以在該架構的基礎上設計實現主機端閃存轉換層,為開放通道閃存設備提供塊存儲的支持。
(2)文件系統
由于FTL的屏蔽,基于固態盤的文件系統無法感知底層閃存設備的耐久性、內部并發特性等,不僅不能針對閃存特性進行定向優化,功能上的冗余與沖突甚至會導致額外的垃圾回收開銷和寫放大問題。針對上述問題,基于開放通道架構,移除設備內FTL,將原有FTL功能集成到文件系統的存儲管理部分,由文件系統直接管理閃存介質,消除功能上的冗余和沖突。考慮到閃存耐久性,根據對象語義與閃存特性重新設計存儲機制,包括:利用閃存頁的OOB記錄反向索引等額外信息,以延緩索引與日志的刷寫;利用閃存塊/頁狀態轉換的特性設計空閑空間管理機制;對不對齊的寫操作采用拼接緊湊寫的機制等。這樣的設計能大幅降低由文件系統自身機制引入的額外元數據寫入,相比于傳統文件系統,能顯著降低文件系統寫放大系數,提升系統性能,延長閃存壽命。針對發揮閃存內部并發特性與文件系統管理機制存在沖突的問題,采用日志式結構將文件系統中的數據分段與閃存物理塊對應。在空間分配上采用二維分配機制,綜合考慮設備的并發特性和數據冷熱程度,在發揮閃存設備并發特性的同時保證冷熱程度不同的數據相互隔離。另外,利用文件系統的語義信息直接對閃存塊進行垃圾回收,在文件系統層為每個閃存通道的I/O請求進行優化調度。這樣的設計能充分發揮閃存的內部并發特性,顯著提升系統的整體性能,并且能較好地控制系統的性能抖動問題。
(3)鍵值存儲系統
在閃存固態盤上,采用日志合并樹(log-structured merge tree,LSM-tree)的鍵值存儲系統存在三重的功能冗余,這不僅降低了系統的I/O處理效率,影響系統性能,冗余功能間的相互干擾還會導致嚴重的寫放大問題。同時,閃存設備與LSM-tree的特性沒有得到充分的利用與針對性的優化,阻礙了閃存與LSMtree性能的發揮。針對上述問題,基于開放通道閃存架構,利用LSM-tree日志式更新的特征,在用戶態直接對開放通道閃存設備進行管理,繞過文件系統與FTL,消除原有架構中的多重功能冗余與語義隔離。在此基礎上,根據閃存設備的硬件特性與LSM-tree的讀寫特征,對鍵值存儲系統的存儲機制進行軟硬件的協同設計與定向優化。采用基于“超級塊”的空間管理機制,降低文件索引的開銷;采用可重建的靜態數據布局機制,在發揮閃存內部并發性能的同時,保證了系統故障后的一致性;采用動態并發的壓縮機制,通過限制后臺寫請求的并發度以降低對前臺讀請求的干擾。進一步地,根據軟件的語義信息對用戶態I/O棧機制(如緩存機制、I/O調度機制等)進行定向優化。
(4)分布式對象存儲系統
在基于閃存固態盤的分布式對象存儲系統中,對象存儲需要使用日志機制保證數據更新的一致性,這種“兩遍寫”的一致性保障機制不僅影響了系統的性能,還增加了系統的寫放大系數。閃存設備的異地更新特性天然地保存了數據的多副本,但是現有的閃存事務機制在對象事務的一致性更新時會產生很大的開銷,不適用于分布式對象存儲的場景。針對上述問題,基于開放通道閃存架構,根據對象和事務的語義與閃存異地更新的特性,設計適用于分布式對象存儲特性的高效閃存事務機制,利用閃存設備的異地更新特性與帶外存儲空間,可為對象數據及其相關元數據提供低開銷的一致性更新保障。在此基礎上,使用多線程將沒有依賴關系的事務并行提交到物理隔離的閃存塊中,在發揮閃存設備內部并發性能的同時,降低事務間的干擾。通過感知事務的語義,對各個閃存通道上的I/O請求執行順序進行協調,將屬于同一個事務的I/O請求在同一時段進行處理,降低系統的平均響應時延。
2.4 小結
隨著大數據環境下海量數據存取對容量與實時性要求的不斷提高,研究者也不斷地尋求機會突破外存帶來的性能瓶頸。從磁盤到閃存固態盤,實現了從機械式到電子式的跨越;從閃存固態盤設備到開放通道閃存設備,則從軟硬件協同設計的存儲架構的角度,創造性地提出了閃存存儲系統構建的新思路。上述系統構建的經驗表明,基于開放通道閃存設備的存儲系統能夠結合閃存設備的物理特性消除傳統固態盤層次間的功能冗余,打破了語義隔離,在提高系統性能的同時增加閃存使用壽命。
3 不止更快:持久性內存存儲系統構建
本節首先以英特爾公司推出的Optane持久性內存(Optane DC persistent memory)為例,介紹NVM的相關特性,然后闡述基于非易失內存構建存儲系統時面臨的問題,最后介紹基于非易失內存構建本地和分布式存儲系統的設計方法。
3.1 非易失內存
英特爾公司于2019年4月正式發布Optane持久性內存,這是一款大規模量產的非易失內存設備。Optane持久性內存可以像DRAM一樣,直接通過內存接口與CPU互連,并被CPU以字節粒度訪問。目前,英特爾公司已經推出3款相關產品,其單條容量分別為128 GB、256 GB和512 GB。Optane持久性內存有兩種操作模式,分別為內存模式(memory mode)和應用直訪模式(application direct mode)。用戶可以靈活地將Optane持久性內存設置為不同的操作模式,以滿足不同應用程序的性能需求。在內存模式下,將DRAM用作Optane持久性內存的緩存,從而大幅擴展了內存容量。上述緩存管理模式完全由內存控制器接管,因此,內存模式對操作系統完全透明,上層應用程序在不做出任何修改的情況下可以享受大容量內存帶來的性能優勢。在應用直訪模式下,操作系統將DRAM和Optane持久性內存看作兩個彼此獨立的內存池,應用程序具有直接管理Optane的能力。該模式精簡了軟硬件棧的復雜度,應用程序可以按照各自的需求優化持久性內存的使用方法,以獲取更優的性能,與此同時,也為相應的系統軟件開發帶來了更大的難度。據英特爾公司稱, SAP HANA引入Optane持久性內存后,能夠將系統重啟速度提升13倍,并節省39%的成本。
加利福尼亞大學圣地亞哥分校也在Optane持久性內存發布的第一時間公布了其詳細的測試報告。該測試報告列舉了Optane持久性內存的基礎性能參數以及在內存模式和應用直訪模式下的性能測試結果。該報告顯示,Optane持久性內存的隨機讀時延為305 ns,這相比于傳統的SSD具有兩個數量級的改觀,但時延仍比DRAM長3倍。同時,Optane對訪問模式較敏感,在順序訪問時,讀時延僅比DRAM長兩倍。另外,Optane具有不對稱的讀寫帶寬:其最大讀帶寬可以達到39.4 GB/s,并能隨著線程數量的增加而擴展,然而,其最大寫帶寬僅為13.9 GB/s, 4個線程就能占滿Optane持久性內存的寫帶寬。
3.2 非易失內存在實際應用中面臨的挑戰
現有的計算機體系結構均包含了多種存儲介質,例如CPU中的寄存器和多級緩存、DRAM主存、固態硬盤、磁盤等,這些存儲介質的特點是容量越大,速度越慢,距離CPU越遠,這種存儲結構被稱為“金字塔”存儲。Optane持久性內存作為一種全新的存儲介質,其性能接近于DRAM,且提供了持久性數據存儲,因此,Optane不屬于現有的金字塔存儲的任何一個層級。Optane持久性內存硬件上的變化為存儲系統軟件的設計帶來了一系列新的問題。
(1)一致性管理開銷高
非易失內存提供了主存層次的數據持久性,而處理器的片上緩存系統依舊是易失性的,系統故障可能導致非易失主存上的數據處于不一致的中間狀態。目前的64位機器僅支持8 byte的數據原子寫入操作,系統設計者需要額外的日志機制保證數據的一致性,即在修改某數據之前,先將新版本或舊版本的數據寫到日志區,作為備份用于故障后的數據恢復。然而,非易失內存具有讀寫不對稱的特性,寫操作帶寬嚴重受限,因此日志機制會引入極高的持久化開銷。此外,處理器緩存由硬件管理控制,大多數現代處理器會對主存寫操作進行重排序以提升性能,這些優化手段會打亂數據持久化到非易失內存的順序,在系統故障時可能導致數據不一致的問題。因此,系統設計者需要通過額外的硬件刷寫指令(如clflush、clflushopt等)按順序強制實現數據的持久化。然而,這些硬件刷寫指令開銷極高。參考文獻指出,隨著NVM的發展,預計存儲系統的軟件開銷占比將高達94.09%。
(2)低效的操作系統抽象
操作系統將應用程序進行隔離,運行在用戶態,而讓內核服務程序運行在具有更高權限的內核態,用于硬件管理和抽象。應用程序通過系統調用訪問內核服務程序(如文件系統等),進而與硬件設備進行交互,通過這種抽象機制,不同的應用程序彼此隔離,從而提供了更高的安全性。然而,系統調用過程將會引發一系列的現場保存與恢復、緩存逐出等額外開銷,這使得在內核態管理持久性內存的開銷變得更多。另外,通過內核態文件系統管理持久性內存空間時,Linux內核還在文件系統之上統一抽象了一層虛擬文件系統(virtual file system,VFS),在該層次,操作系統增加了粗粒度的鎖管理機制和DRAM緩存系統。由于持久性內存和DRAM具有非常接近的性能,因此DRAM緩存不能再像在傳統外存中一樣發揮作用,進而在性能和擴展性上對文件系統的高效性產生極大的制約。
(3)分布式軟件棧臃腫
為兼顧兼容性,現有的大多數分布式系統軟件采用了模塊化的設計,將分布式軟件部署在本地文件系統之上。這種架構方式會引入一系列的冗余復制操作。例如,在應用程序讀取數據時,數據需要從本地文件系統鏡像分別復制到內核頁緩存、網絡軟件棧、用戶態緩沖區等位置。另外,現有的軟件系統大多采用傳統的中斷機制,以響應用戶請求,這種方式的時延一般在微秒甚至毫秒級,過于低效。
綜上,簡單地將現有的存儲軟件部署到持久性內存上,并不能充分發揮其硬件特性,甚至有可能導致軟件錯誤、數據不可恢復等新的問題。因此,系統設計者必須充分了解持久性內存的性能和硬件特性,針對性地設計適合于持久性內存的存儲系統軟件。
3.3 持久性內存的存儲系統構建方法
本節將分別從持久性內存的數據一致性管理機制、持久性內存文件系統、持久性內存的分布式存儲系統構建3個方面闡述存儲系統構建中的設計方法以及如何應對這3個方面的挑戰。
3.3.1 新型數據一致性管理機制
為避免傳統日志機制引入的額外開銷,需要設計全新的面向非易失內存的數據管理方式。本節主要從軟件和硬件的角度,分別闡述降低順序性和一致性開銷的優化策略。其中,順序性開銷是指處理器數據根據數據依賴關系有序地持久化到非易失內存中的開銷,而持久性開銷指的是數據從多級易失性處理器緩存替換到非易失內存過程中可能存在的冗余持久化開銷。
(1)降低順序性開銷的方法
大量研究工作通過在處理器緩存中以硬件的方式提供順序性的支持,從而降低軟件顯式順序性的開銷。微軟研究院在處理器緩存中增加新的原語指令,該方法可以將程序劃分成多個執行單元,這種機制保證了不同執行單元之間依舊遵循持久化順序約束,而每個執行單元內部可以對寫操作進行重排序,從而提升性能。英特爾公司于2014年設計了新的擴展指令,其中,clwb指令既能避免持久化指令之間的依賴關系,又可以避免寫回的緩存行數據失效,從而使得持久化的數據依舊供后續訪問繼續使用,減少緩存缺失操作帶來的性能影響。當上層應用需要保證持久化操作的順序時,它們可以通過內存屏障指令(例如mfence)控制持久化操作的順序。
(2)降低持久性開銷的方法
部分做法是設想處理器緩存的部分或所有層次采用非易失性存儲器,從而縮短持久化路徑,降低持久化開銷。微軟研究院提出了全系統持久化(whole system persistence,WSP)技術,使所有處理器緩存均采用非易失存儲器,并采用后備電源的方式保證在系統掉電后總線上的數據傳輸。在軟件方面,清華大學設計了BPPM,由于日志保證了已經提交的數據的持久性,因此在將數據寫回數據區的過程中,數據無須立即持久化,只有當日志空間不足時,才將緩存在DRAM中的數據持久化到非易失內存中,從而減少了持久化帶來的時延。
3.3.2 更精簡的持久性內存文件系統
文件系統是操作系統中最基礎的模塊,也是存儲系統中應用較廣泛的抽象模式。它將設備存儲空間以文件的形式組織為可索引的文件目錄樹,從而方便用戶存取數據。為兼顧現有的應用程序,將非易失內存通過文件系統進行組織。一種便捷的方式是直接使用現有的外存文件系統管理持久性內存空間。例如,通過虛擬內存盤(RAMDISK)將非易失內存抽象成塊設備,這樣現有的外存文件系統(如EXT4、XFS、BtrFS等)均可直接部署在該塊設備上。這種途徑無須對文件系統做出任何修改,這使得傳統文件系統可以快速獲取大幅的性能提升。
然而,上述方法的缺陷是軟件層次開銷大,無法充分利用非易失內存的優勢。近年來,已經有大量的工作專門針對持久性內存設計新的文件系統。本節將從移除DRAM緩存、構建用戶態文件系統兩個方面闡述對文件系統進行的相關優化。
(1)移除DRAM緩存
Linux內核中現有的文件系統模塊均為外存設計,為了提升性能,VFS專門管理了一部分DRAM空間,用于緩存最近訪問的文件數據。然而,NVM具有與DRAM接近的性能,因此,DRAM緩存不再具有緩存效果,相反地,還引入了額外的內存復制,嚴重影響性能。針對這個問題,EXT4、BtrFS等傳統的文件系統均兼容了直接訪問(direct access,DAX)模式。通過這種方法,應用程序可以直接訪問非易失內存中存儲的文件數據,而不需要將數據復制到DRAM緩存空間中。針對非易失內存重新設計的PMFS、NOVA、BPFS等文件系統,則通過內存映射的方式繞開了文件系統頁緩存,從而避免了數據的冗余復制。
(2)構建用戶態文件系統
雖然大多數持久性內存文件系統均引入了DAX模式,以消除DRAM緩存帶來的額外開銷,但是將文件系統構建在內核態依舊無法避免現場切換以及VFS帶來的開銷。因此,一種可行的方案是將文件系統直接部署到用戶態,例如Aerie、Strata等文件系統。它們將持久性內存空間直接映射到用戶態,并通過一個用戶庫封裝了文件系統訪問接口,因此,應用程序可以直接在用戶態訪問文件數據,從而消除了操作系統引入的額外開銷。
3.3.3 基于RDMA的持久性內存的分布式存儲系統
為滿足大規模數據處理對存儲容量的需求,還需要將集群中各機器的持久性內存統一組織起來,構建大規模的分布式持久性內存存儲系統。遠程直接內存訪問(remote direct memory access, RDMA)能夠在遠端處理器不參與的情況下直接讀寫遠端內存,從而提供零復制的數據傳輸能力。邁洛斯公司最新發布的ConnectX-6系列網卡已經支持200 Gbit/s的數據傳輸帶寬和亞微級秒的傳輸時延。
持久性內存和RDMA分別在存儲和網絡上提供了極高的硬件性能。然而,現有的分布式軟件系統設計復雜、層次冗余,引入了極高的軟件開銷。清華大學于2017年提出的分布式持久性內存文件系統Octopus正是為了解決這個問題,重新設計了文件系統軟件棧。Octopus將各存儲節點的NVM通過RDMA統一互連起來,構建成一個統一尋址的持久性共享內存池(如圖3所示),通過這樣的抽象,客戶端可以直接通過RDMA網絡讀寫內存池中的文件數據,極大精簡了軟件邏輯,降低了冗余復制。
圖3???Octopus文件系統架構
3.4 小結
非易失內存具有不同于現有任何存儲介質的硬件屬性,這為系統設計人員構建存儲系統帶來了一致性數據管理、操作系統架構、分布式軟件設計等方面的挑戰。現有的工作已經從持久性內存的空間管理、編程模型設計、索引結構、文件系統、分布式存儲系統等方面展開了深入的研究,有效地解決了非易失內存中存在的若干問題。
4 未來存儲系統發展的若干思考
高并發、低時延、細粒度等將是未來大規模應用對數據中心存儲系統的主流訪問特征,這對存儲系統的任務調度、數據索引與管理、數據中心架構等方面都帶來了極大的挑戰。為應對這些問題,本文從異構系統下的存儲計算融合架構以及新型數據中心架構角度展望了存儲系統的發展趨勢。
(1)存儲計算融合的閃存存儲架構
在本地存儲中,閃存設備具有極高的內部并發能力,內部的傳輸帶寬大于主機與設備之間的傳輸帶寬。為了減少主機與設備之間的數據傳輸,一種思路是將主機端的部分計算卸載到數據所在的設備上,這樣還可以達到充分利用設備內帶寬資源的目的。在分布式存儲中,通信、分布式協議存在較大開銷,一種思路是在網絡硬件上進行一些通用計算,從而實現系統功能優化,降低分布式協議開銷。上述方法的核心是將計算處理單元部署到離數據存儲更近的地方,縮短I/O處理路徑,減少服務器帶寬占用,即近數據處理。當前閃存固態盤架構中,設備內控制器具有計算能力,進行閃存控制、主機交互和FTL的運行。除此之外,設備內還可以增加現場可編程門陣列(field programmable gate array, FPGA)硬件來加速部件或通用處理單元,提供更強的計算處理能力。另外,以可編程網卡(programmable NIC)和可編程交換機(programmable switch)為代表的可編程網絡硬件近年來也得到了飛速發展,為分布式存儲的設計提供了新的機遇,為實現低時延的分布式系統提供了硬件支持。目前,開放通道閃存提供了一種軟件與硬件協同設計的思路,如何進一步結合可編程硬件和存儲計算融合的思想,從構建大規模閃存存儲系統的角度,實現存儲計算功能的全局(存儲級、節點級和網絡級)合理分布,是值得關注和研究的問題。
(2)Rack-Scale的數據中心架構
傳統數據中心是由單個的服務器節點組建起來的,每個服務器節點內部包含了外存設備、內存、CPU等硬件資源,這些服務器通過多層網絡互連,構成大規模分布式集群。如果想對集群進行擴容,只能購置更多的服務器節點,必要時,還得額外購買機架和交換機。這種數據中心架構方式具有資源利用率低、數據中心部署靈活性差、難以擴展等問題。一種新的途徑是將服務器內部的各種硬件資源拆分開,將不同類的硬件資源構建成硬件資源池,并通過高速網絡進行互聯。通過這種方式,數據中心的擴展不再以“服務器”為粒度,而是直接以機架為單位進行擴展,這種數據中心的構建模式叫作Rack-Scale架構,它具有部署容易、升級容易、資源管理更靈活等優點。因此,如何基于這種全新的數據中心架構設計存儲系統,是未來考慮的重點。目前Rack-Scale的發展依舊處于初級階段,其中最大的阻礙就是新一代網絡互聯系統還沒有成熟。這是因為將內存和CPU拆分開之后,所有的內存訪問都要通過網絡傳輸,這給高速網絡的設計帶來了極大的挑戰。
5 結束語
大數據存儲系統日益難以滿足全球快速增長的數據存儲需求,“存儲墻”問題凸顯,大數據不止更“大”,還要更“快”。從傳統磁盤到閃存固態盤,實現了從機械式到電子式的跨越,開放通道閃存設備則從軟硬件協同設計的角度,提出了閃存存儲系統構建的新思路。非易失內存作為新的存儲層級,同時提供了內存級訪問性能及持久性存儲特性,針對非易失內存設計更快的存儲系統,得到了研究人員廣泛關注。本文從閃存存儲、持久性內存存儲兩種存儲系統構建方案出發,詳細闡述了其各自面臨的挑戰以及相應的解決方案,最后,展望了未來數據中心及存儲系統構建的若干發展趨勢。
作者簡介
陳游旻(1993- ),男,清華大學計算機科學與技術系博士生,主要研究方向為文件系統、分布式系統。
李飛(1993- ),男,清華大學計算機科學與技術系碩士生,主要研究方向為閃存存儲系統。
舒繼武(1968- ),男,博士,清華大學計算機科學與技術系教授,教育部長江學者特聘教授,IEEEFellow,博士生導師。近年來主要從事基于非易失存儲器件的新型存儲系統與技術、基于Flash器件的固態存儲系統與技術、網絡(云/大數據)存儲系統與關鍵技術、數據存儲可靠性等方面的研究工作。
《大數據》期刊
《大數據(Big Data Research,BDR)》雙月刊是由中華人民共和國工業和信息化部主管,人民郵電出版社主辦,中國計算機學會大數據專家委員會學術指導,北京信通傳媒有限責任公司出版的中文科技核心期刊。
關注《大數據》期刊微信公眾號,獲取更多內容
往期文章回顧
邊緣智能:現狀和展望
我國地方大數據政策的擴散模式與轉移特征研究
知識圖譜中的關系方向與強度研究
面向大數據的索引結構研究進展
基于圖查詢系統的圖計算引擎
總結
以上是生活随笔為你收集整理的大数据环境下的存储系统构建:挑战、方法和趋势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级C语言教程-C语言函数setjmp(
- 下一篇: 作者:高晨旭(1990-),男,北京系