本文摘要:摘要:新型非易失存儲(NVM)可字節尋址,具有近似內存的低延遲特性以及外存的非易失性,受限于軟硬件技術成熟度,目前首先被用于了外存。討論了NVM用于持久性外存所面臨的一系列問題以及管理上的一些挑戰。接著對現有的典型NVM文件系統及其主要特性進行了梳理
摘要:新型非易失存儲(NVM)可字節尋址,具有近似內存的低延遲特性以及外存的非易失性,受限于軟硬件技術成熟度,目前首先被用于了外存。討論了NVM用于持久性外存所面臨的一系列問題以及管理上的一些挑戰。接著對現有的典型NVM文件系統及其主要特性進行了梳理,歸納起來,這些特性主要圍繞降低一致性開銷、降低軟件棧開銷、內存與外存的融合、分布式文件系統、NVM文件系統安全、容錯、空間管理等幾個方面展開。最后,展望了NVM文件系統仍然有待探討的幾個研究方向,包括擴展性問題、虛擬內存與文件系統的有機融合,以及分布式文件系統等。
關鍵詞:非易失存儲;文件系統;虛擬內存;持久性外存;遠程直接內存訪問
0引言
存儲和計算是計算機系統的兩大子系統。在搜索引擎、社交網絡、電子商務等主流應用中,I/O和訪存已經占據了很大比重。一些數據密集型應用中,無論是內存容量還是外存帶寬和延遲,已經難以滿足計算需求,成為制約計算機系統性能提升的主要瓶頸。近年來,各種新型非易失存儲(NonvolatileMemory,NVM)器件相繼出現,如相變存儲器(PCM)、自旋轉移力矩隨機存儲器(STT-RAM)、電阻隨機存儲器(RRAM)等,給存儲系統的設計帶來前所未有的機遇。它們可字節尋址,且同時具有現有內存相當的性能和外存的非易失性,因此不僅可用做工作內存(workingmemory),以緩解現有內存容量擴展能力不足的問題,也可用做持久性外存(persistentstorage)。
計算機評職知識:可快速投稿的計算機核心期刊
因為NVM同時具有內存的字節可尋址和外存的非易失等兩類存儲介質的雙重特性,因此也稱之為持久性內存(persistentmemory)或新型NVM。所謂新型NVM,是為了與早期文獻中提到的閃存區別開來,后者也歸為NVM,但屬于塊設備。理論上,新型NVM可用于計算機系統的所有存儲層次。但從產品而言,目前已量產的只有Intel的傲騰持久性內存和固態SSD盤兩種,由于NVM存在寫延遲和功耗高、寫入次數有限等問題,以及價格因素,短期內還很難作為商用的工作內存使用,而固態盤與傳統硬盤相比,優勢明顯,因此,在電商、金融等延遲敏感的I/O密集型應用中有很大的市場潛力。
因此,本文重點討論NVM用做持久性外存(即外存)時面臨的諸多挑戰、研究現狀及未來的方向。眾所周知,現有的操作系統都是針對二級存儲模型設計的,即工作內存和持久性外存,通過虛擬內存和文件系統兩個子模塊分別對它們進行管理。與傳統的硬盤相比,NVM有兩個根本的變化,一是可字節尋址,二是延遲有幾個數量級的下降。因此,盡管可以沿用現有的面向塊設備的文件系統,但軟件棧開銷所占比重太大,難以發揮NVM的低延遲優勢。圍繞如何使用NVM的持久性,學術界和工業界已進行了大量探索,大致有兩個方向,一是使用持久性堆[41,43]的內存管理模式,二是使用文件系統[6,8,16,17,23,26,34]的外存管理模式。
持久性堆的管理模式涉及到編程模型、編譯器、操作系統等整個軟件生態的重構,工程浩大,因此,短期來看,在兼容傳統文件系統編程接口的基礎上構建輕量級的NVM文件系統是較為現實的選擇。因此,最近幾年,面向NVM的文件系統研究得到了極大關注[32,33]。 隨著器件技術的不斷成熟,應用單一NVM構建統一的單級存儲結構,實現內存與外存的最終融合已理論上可行。單級存儲結構徹底消除了數據在內存與外存之間的流動,從而顯著降低了傳輸延遲和功耗[1]。內外存融合之后,現在的操作系統中分別管理內存和外存的內存管理和文件系統兩個功能模塊將合二為一,現在的內存和外存兩個完全不同物理存儲介質也合二為一。
然而,要實現內存與外存的真正融合,需要重構整個軟件棧,是系統性工程,學術界有很多設想,但由于缺少工業界的參與,進展緩慢,但毫無疑問,內外存融合是終極目標。因此,本文著重探討NVM出現以后文件系統如何設計。NVM的出現給文件系統安全、分布式存儲系統也帶來了變革和挑戰,為了內容完整也略做了闡述,但由于篇幅所限無法詳細展開,讀者可參考其他綜述文獻,本文重點聚焦NVM文件系統中最核心部分“如何降低一致性開銷”和“如何降低軟件棧開銷”等內容上。本文的思路如下:首先介紹持久性外存由傳統的塊設備(機械硬盤或固態硬盤)替換為字節尋址設備NVM后計算機存儲系統發生的變化,接著介紹當NVM用于持久性外存時如何對其進行管理;隨后針對NVM文件系統的幾個關鍵問題,闡述了研究現狀,最后對可能的研究方向進行了展望。
1NVM作為持久性外存帶來的變化
1.1極低的訪問延遲NVM具有接近內存的極低訪問延遲,即便與flash固態盤相比,訪問延遲也有幾個數量級的下降。由于傳統的持久性外存的訪問延遲高,使得現有的文件系統的軟件棧開銷所占比重可以基本忽略,而由于NVM的讀寫延遲極低,使得這些軟件開銷被放大成百上千倍,不僅忽略不了反而成了影響性能的主要瓶頸,這就要求專門設計面向NVM的文件系統。
1.2可掛在內存總線上與傳統的持久性外存相比,NVM最大的特點就是字節可尋址特性,使得它可以像內存一樣直接掛在內存總線上,并使用Load/Store接口對其進行訪問。傳統的機械硬盤或flash固態硬盤是塊設備,只能通過文件系統的方式進行管理,而塊設備文件系統IO路徑長,其中的很多層次對NVM而言都是多余的,使得軟件開銷比重過大,難以發揮NVM的低延遲優勢,需要大幅精簡。更重要的是,當NVM作為持久性外存直接掛在內存總線上時,CPU高速緩存將可以直接與持久性外存交互,為了保證持久化數據的一致性,需要不斷地將數據從緩存刷到NVM,頻繁的刷新操作帶來很大的開銷,這是一個新問題,也是NVM文件系統的一個研究重點。
1.3存儲層次的深刻變化
傳統的計算機系統都是二級存儲模型,即內存和外存。NVM的字節尋址和非易失性,使它具有了內存和外存的雙重特性,因此學術界一直在探索能否基于NVM實現內外存的真正融合,即,不僅物理上不需要提前將NVM的空間劃分工作內存和持久性外存,而且邏輯上也不再加以區分,操作系統的內存管理和文件系統兩個子模塊也合并為一個模塊,這種結構目前稱之為單級存儲結構(single-levelstore)。
研究表明[1],即使所有的存儲介質均使用NVM,二級存儲結構的延遲和功耗也要高出單級存儲結構四倍,原因在于單級存儲結構消除了數據在兩級存儲介質之間的傳輸,降低了傳輸的開銷和功耗。然而,要實現這種真正融合,系統軟件棧面臨巨大挑戰[3],因為現有的操作系統是通過完全不同的機制來管理內存和外存的,并且,程序的執行、空間的管理、存儲的格式、以及系統的啟動也都是基于二級存儲模型設計的。內外存融合需要重構現有的功能模塊及重新設計編程模型。目前相關研究甚少,且基本處于停滯階段,但內外存融合的趨勢不可逆轉。
2NVM作為持久性外存的管理模式經過以上的分析可以發現,NVM與塊設備有很大差異,因此,簡單地沿用塊設備的管理模式無法發揮NVM的性能優勢。如何對NVM進行更細粒度更高效的管理也因此成為研究的熱點。從目前來看,針對NVM作為持久性外存的管理模式大致分為兩大方向:一是像內存一樣采取虛擬內存的方式管理NVM;二是像硬盤一樣采取文件系統的方式管理NVM。
2.1虛擬內存管理模式
既然NVM字節可尋址,就可以像內存一樣使用內存接口(如Load/Store指令)去訪問,此時可以借助MMU快速遍歷操作系統管理的頁表,使用TLB緩存部分頁表以加快尋址速度。因此,有學者認為文件系統中的一些功能可以被替換或擯棄,比如,定位文件索引節點的方法、用于管理文件的元數據(如文件描述符)等等。確實,采取內存管理方式可以發揮硬件優勢,相比純軟件的文件系統管理方式要高效很多。然而,NVM作為持久性外存使用時,與傳統易失性內存有著很大不同,最大的區別在于持久性外存要求提供數據的持久性和一致性。
為此,學術界提出了各種編程模型或專門針對NVM的編程接口,如NV-heaps[43]、Mnemosyne[42]、HEAPO[41],NV-tree[44],CDDS[45]等等,主要思想是在NVM上開辟一個持久性堆(persistentheap),需要持久化的數據一律寫到持久性堆里,從而保證數據的非易失性,寫到NVM的其他區域不保證數據的非易失性,其實更重要的是不保證數據的一致性。對于持久性外存而言,數據的非易失性只是基本要求,更重要的是保證數據的一致性[25,35]。
如果缺乏數據的一致性保證,將無法確定從持久性外存上讀取的數據是否是完整的、原子性的,繼而影響程序執行的正確性。因此,數據一致性是持久化存儲編程模型必須考慮的要素之一。現有的持久化存儲編程模型在保證數據一致性方面均引入了不小的開銷,很大程度上影響了編程模型的實用性,到目前為止,雖然已經有多種NVM持久化編程模型被提出,但都沒有得到業界認可和普及。
當然,除了開銷外,另一個重要原因是面向NVM的整個軟件生態的不成熟,要使用新的編程模型,就必須大修現有的應用程序及優化運行時環境,是一項龐大的系統工程。雖然虛擬內存的管理模式I/O路徑短,內存訪問接口簡單高效,但由于需要對數據一致性的支持,引入了比較大的開銷,且包括編程模型、編程接口、編譯器在內的整個軟件生態需要重構,應用程序也需要重新改寫。目前,國際存儲組織SNIA針對NVM的編程模型還在制定過程中,由于商用的NVM器件還很少,相關工作推進緩慢,因此,短期來看,沿用標準的POSIX文件系統接口是現實可行的方案[4,26],現有的應用程序無須任何修改就可直接使用NVM。
2.2文件系統管理方式
作為一個良好的過度,采取文件系統的方式管理NVM仍然是一個不錯的選擇,從功能上來講,現有的應用程序無須修改就可以運行。然而,性能上卻有很大的瓶頸。
原因是,現有的主要文件系統,如Ext4,在當初設計時是以內存-外存二級存儲結構為模型、以硬盤等慢速塊設備為研究對象而設計的,軟件棧開銷大,不適用具有極低延遲且可字節尋址的NVM器件。提高持久性外存訪問性能通常有兩種做法,一是將慢速存儲介質事先讀入快速存儲介質,二是優化文件系統盡可能減少軟件棧開銷。首先說改變存儲介質。由于硬盤的訪問速度慢,內存的訪問速度快,可以將一部分內存模擬為硬盤,構建Ramdisk。讀寫內存顯然要比硬盤快很多,雖然與硬盤相比性能得到了大幅提升,但Ramdisk仍然基于的是傳統文件系統(如ext4),性能的提升主要源于硬盤內存化。
作為文件系統本身而言,仍然是基于塊設備的傳統文件系統,I/O路徑長、層次深,相對NVM而言軟件棧的開銷仍然很大。為此,學術界開始嘗試改造傳統文件系統[52],比如,移除頁緩存(pagecache)中同步數據更新機制,改用異步I/O隱藏頁緩存刷新帶來的開銷;將頁緩存作為多版本區域,優化文件系統一致性機制;采用輕量級的VFS層的元數據日志MeLo@V等。然而,改造傳統文件系統始終無法從根本上改善面向NVM的文件系統的性能,原因在于NVM除了具有非易失特性外,其更像內存,只有緊密結合內存特性重新構建文件系統才能充分挖掘NVM的性能。近年來,學術界相繼提出各種NVM文件系統,包括BPFS[6]、SCMFS[16]、SIMFS[17]、PMFS[8]、NOVA[23]、HiNFS[20]、FCFS[10]、Octopus[34]等。它們從不同的角度對NVM文件系統進行了優化設計,后面將詳細闡述。
3NVM文件系統的幾個關鍵問題
問題1降低一致性保證開銷。數據一致性是文件系統的基本功能,也是核心功能。沒有數據的一致性保證,程序的正確性也得不到保證。持久性數據的一致性有兩層含義:一是持久性,即保證在掉電或系統失效前已經將數據從易失性存儲區域(如高速緩存)寫回到持久性外存中;二是順序性,即保證數據是按照程序語義確定的依賴關系先后有序寫入NVM中,不能亂序。傳統的文件系統主要采取寫前日志(WAL)或寫時拷貝(COW)等技術保證數據的一致性,但這些技術相對NVM而言同樣存在開銷過大的問題。此外,由于NVM直接掛在內存總線上,CPU可以直接通過訪存指令讀寫持久性外存,無須像傳統的二級存儲系統那樣必須先經過內存。為了保證一致性,需要及時將高速緩存中的數據刷回(flush)到NVM中,頻繁的flush操作對性能影響很大,是需要研究的新問題。
問題2降低軟件棧開銷。前文已多次提到,對NVM而言,傳統文件系統的軟件棧開銷過大,因此,降低軟件棧開銷也就成為了NVM文件系統研究的主要方向。比如,傳統文件系統中的塊設備層和驅動層對NVM而言就是多余的[4,26]。此外,減少持久性外存與工作內存、內核空間與用戶空間之間的拷貝也形成共識[23]。NVM可字節尋址,因此NVM文件系統可以不需要頁緩存(pagecaching)而使用DAX技術直接訪問NVM,從而減少了存儲棧中NVM與DRAM之間不必要的數據拷貝。
DAX的核心是零拷貝的內存映射機制(I/Omemorymapping,mmap)。與傳統文件系統中的mmap不同,DAX中的mmap是將持久化的數據直接映射到進程的虛擬地址空間,完全不需要頁緩存。而傳統文件系統中的mmap在將文件映射到用戶空間時,雖然減少了一次數據拷貝,但依然需要頁緩存。DAX已引入到Linux內核中,可有效挖掘NVM的低延遲特性[22]。DAX技術利用了NVM的字節尋址能力,但頻繁的映射迫使應用程序靜態預留部分存儲區域且自行管理,影響了存儲空間的利用率[36]。此外,由于NVM的寫性能差,如何揚長避短也是研究的方向之一。
4降低一致性開銷的主要方法在降低一致性方面,學術界主要提出了如下一些方法:一是盡可能利用NVM的字節尋址特性和原子性操作原語進行原位原子更新(in-placeupdate);二是盡量減少一致性保證中寫的數據量;三是優化傳統的日志技術;四是優化元數據的分配結構;五是延遲關鍵路徑寫操作。從本質上看,前四種都是通過減少寫操作降低一致性保證開銷,最后一種則是通過放松寫順序約束降低一致性保證開銷。
4.1原位原子更新傳統的一致性保證技術,如WAL和COW,要么在等新數據寫成功后再改寫原數據,要么在改寫原數據前先備份原數據,實際上都寫了兩次,原位原子更新是直接對數據進行改寫,并保證原子性。Condit等人[6]在2009年最早設計了第一個面向NVM的文件系統BPFS,使用短路影子分頁法來保證元數據和一般數據的一致性,其核心思想是對細粒度數據提供原子寫操作。具體是,對小于或等于8字節的數據利用硬件原語操作指令直接進行原位更新。
對于超過8字節的數據,則使用COW操作,但與完全拷貝不同,只拷貝那些未被更新的數據,因為即將被改寫的數據是沒有必要拷貝的。在基于樹結構的文件系統中,一個數據的更新可能涉及到父節點的遞歸更新,直到根節點,如圖5所示,所有的數據更新均采取以上規則。BPFS要求硬件提供原子性(atomicwrite)和順序性(epochbarrier)兩個原語的支持,且原位更新只適用于小粒度數據,如果某些操作涉及的數據更新較大,仍然需要開銷較大的COW保證一致性。盡管如此,BPFS仍在NVM一致性保證方面進行了積極探索,其中的epoch順序性保證機制影響深遠。
5降低軟件棧開銷的主要方法傳統的文件系統相對字節可尋址且延遲極低的NVM而言,軟件棧顯得臃腫。降低軟件棧開銷,主要的技術包括,旁路掉不必要的軟件存儲層次,減少拷貝;用戶應用程序直接訪問NVM;精細化I/O操作;kernel/user協同文件系統等等。
6內存管理與文件系統的融合NVM具有內存的字節尋址特性,可利用與內存相關的軟硬件特性加速文件系統的訪問。此外,在內存管理中增加對持久性的支持也是研究的方向之一,盡管后者跟文件系統關聯性不大,但相關探索為未來內外存真正融合奠定了基礎。
6.1利用MMU加速文件系統的訪問Wu等人[16]提出了第一個內外存融合管理的文件系統SCMFS,旨在利用操作系統中現有的內存管理模塊來輔助管理文件系統空間。SCMFS利用內存管理單元(MMU)將文件系統的邏輯地址空間映射到NVM的物理地址空間上,并盡可能為每一個文件分配連續的地址空間,以加速文件系統對連續數據塊的訪問。
此外,還采取了空間預分配機制及相應的垃圾回收機制以減少內存管理開銷。Sha等人[17,26]也基于類似的思想提出了一個真正的用戶空間NVM文件系統SIMFS。與傳統的用戶空間文件(如FUSE)不同,SIMFS不需要依附內核級文件系統來處理用戶請求,因此對文件的訪問更高效。SIMFS仍沿用標準的POSIX接口,文件能夠以O(1)的時間復雜度暴露給用戶空間,與文件大小無關。每個打開的文件都有一塊連續的虛擬地址空間,由一個稱之為“文件頁表”的分級頁表來管理,該頁表保存文件中每個數據頁的地址映射信息,利用MMU地址轉換硬件可以快速定位文件中的數據。SIMFS以頁表的形式訪問元數據,而其他文件系統(如PMFS)的元數據是以B-tree的形式存放的,前者的查找速度要快很多。
7基于NVM的分布式文件系統假如沒有RDMA(remotedirectmemoryaccess)在數據中心的廣泛應用,NVM對分布式文件系統的設計可能不會帶來太大的影響。與傳統的TCP/IP協議相比,RDMA的傳輸延遲低至微秒級[2],僅略高于NVM的本地訪問延遲。面對NVM和RDMA等兩種延遲極低的新型硬件,傳統分布式文件系統暴露出很大弊端[54],最根本的設計缺陷在于將存儲與網絡分為兩個軟件層次,這種松耦合的設計導致重復的元數據、過量的拷貝、不必要的事件處理,以及將用戶空間的保護柵欄置于關鍵路徑上等等[2]。
8安全、容錯等其他與NVM相關的文件系統研究NVM支持的XIP特性會增加不經意寫操作的風險。NVM的寫次數有限,也要防止惡意的磨損攻擊。還需要提供一定的容錯機制,提高文件系統的魯棒性。本節還闡述了從文件系統角度提高NVM存儲空間利用率以及利用NVM加速元數據和日志數據的相關努力。
9結束語
存儲與計算、網絡共同組成計算機系統的三要素。數據密集型應用的大量涌現,使存儲面臨前所未有的壓力。NVM的出現給存儲系統帶來巨大機遇,同時也帶來諸多挑戰。簡單的器件替換無法挖掘NVM的性能優勢,軟件棧的重構也需要同步跟上。采取虛擬內存的方式管理持久性外存涉及到整個軟件生態系統的革新,是一項龐大且耗時的工程。短期來看,隨著3DXPoint芯片推向市場,仍然采取文件系統管理持久性外存的方式是現實可行的,過去十余年學術界開展了大量研究,一些技術已趨于成熟。本文梳理了近年來針對NVM文件系統的相關研究成果,通過梳理發現這些工作主要集中在以下幾個方面:(1)降低一致性開銷;(2)降低軟件棧開銷;(3)內存管理與文件系統融合;(4)分布式文件系統;(5)文件系統的安全、容錯和空間管理等。
作者:徐遠超
轉載請注明來自發表學術論文網:http://www.zpfmc.com/dzlw/25688.html