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