基于nvram的高效文件系統(tǒng)構(gòu)建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)系統(tǒng)技術(shù)領(lǐng)域,特別涉及一種基于NVRAM的高效文件系統(tǒng)構(gòu)建方法。
【背景技術(shù)】
[0002]新型NVRAM(Non-Volatile Random Access Memory,非易失性隨機(jī)訪問存儲器)具有以下特性:(1).其具有非易失特性;(2).相比傳統(tǒng)DRAM (Dynamic Random AccessMemory,動(dòng)態(tài)隨機(jī)存取存儲器),其存儲密度更大;(3).在讀寫性能方面,比傳統(tǒng)閃存和硬盤要高出若干數(shù)量級,讀寫性能接近DRAM; (4).其相比閃存具有更高的寫壽命。這些優(yōu)點(diǎn)使得系統(tǒng)設(shè)計(jì)者可以在NVRAM之上構(gòu)建高效的持久性存儲系統(tǒng)。
[0003]因?yàn)镹VRAM具有高效的讀寫性能,近些年來的研究者們發(fā)現(xiàn),傳統(tǒng)基于磁盤和閃存的文件系統(tǒng)不再適用于NVRAM,因?yàn)?(1).操作系統(tǒng)中傳統(tǒng)塊設(shè)備層的軟件開銷遠(yuǎn)遠(yuǎn)大于實(shí)際讀寫NVRAM設(shè)備的開銷;(2).由于NVRAM存儲設(shè)備和DRAM性能接近,內(nèi)存緩存不但不能提高性能,反而產(chǎn)生了額外的數(shù)據(jù)拷貝,導(dǎo)致文件系統(tǒng)性能下降。因此,已有的基于NVRAM而優(yōu)化的新興文件系統(tǒng)(例如PMFS和EXT4-DAX)直接去除了內(nèi)存緩存,取而代之的是直接在用戶緩存和存儲設(shè)備之間拷貝文件數(shù)據(jù)。
[0004]然而,已有NVRAM存儲器件的一個(gè)主要缺點(diǎn)是:讀寫性能不對稱,且寫操作性能要比讀操作性能慢一個(gè)數(shù)量級。因此,直接在用戶緩存和存儲設(shè)備之間拷貝文件數(shù)據(jù)將降低文件系統(tǒng)的寫性能,從而也將導(dǎo)致次優(yōu)的文件系統(tǒng)性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明旨在至少在一定程度上解決上述相關(guān)技術(shù)中的技術(shù)問題之一。
[0006]為此,本發(fā)明的目的在于提出一種基于NVRAM的高效文件系統(tǒng)構(gòu)建方法,該方法既能避免額外的拷貝和傳統(tǒng)軟件層的開銷,又能充分利用DRAM的寫性能高特性來提高NVRAM文件系統(tǒng)的寫性能,從而提升系統(tǒng)的整體性能。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例提出了一種基于NVRAM的高效文件系統(tǒng)構(gòu)建方法,包括以下步驟:S1:判斷所述文件系統(tǒng)的文件操作的類型,其中,所述文件操作的類型包括:文件讀操作、非持久文件寫操作及持久文件寫操作;S2:如果所述文件操作的類型為非持久文件寫操作,則所述文件系統(tǒng)將所述非持久文件寫操作的內(nèi)容寫入動(dòng)態(tài)隨機(jī)存取存儲器DRAM,并更新相應(yīng)的DRAM緩存塊索引,并在預(yù)設(shè)時(shí)間點(diǎn)將所述非持久文件寫操作的內(nèi)容異步刷回至非易失性隨機(jī)訪問存儲器NVRAM中,否則所述文件系統(tǒng)直接在所述NVRAM/DRAM和用戶緩存之間拷貝相關(guān)數(shù)據(jù)。
[0008]根據(jù)本發(fā)明實(shí)施例的基于NVRAM的高效文件系統(tǒng)構(gòu)建方法,首先判斷文件系統(tǒng)的文件操作的類型,如果文件操作的類型為非持久文件寫操作,則文件系統(tǒng)將非持久文件寫操作的內(nèi)容寫入動(dòng)態(tài)隨機(jī)存取存儲器DRAM,并更新相應(yīng)的DRAM緩存塊索引,并在預(yù)設(shè)時(shí)間點(diǎn)將非持久文件寫操作的內(nèi)容異步刷回至非易失性隨機(jī)訪問存儲器NVRAM中,以避免高額的NVRAM寫延遲開銷,否則文件系統(tǒng)直接在NVRAM/DRAM和用戶緩存之間拷貝相關(guān)數(shù)據(jù),以避免雙重拷貝開銷。因此,該方法既能避免額外的拷貝和傳統(tǒng)軟件層的開銷,又能充分利用DRAM的寫性能高特性來提高NVRAM文件系統(tǒng)的寫性能,從而提升系統(tǒng)的整體性能。
[0009]另外,根據(jù)本發(fā)明上述實(shí)施例的基于NVRAM的高效文件系統(tǒng)構(gòu)建方法還可以具有如下附加的技術(shù)特征:
[0010]在一些示例中,其中,所述文件系統(tǒng)根據(jù)持久寫檢查機(jī)制判斷所述文件操作是否為持久寫操作。
[0011]在一些示例中,所述步驟S2進(jìn)一步包括:如果所述文件操作為持久寫操作,則直接將所述持久寫操作的內(nèi)容寫入所述NVRAM中。
[0012]在一些示例中,所述S2進(jìn)一步包括:如果所述文件操作為讀操作,則所述文件系統(tǒng)通過DRAM塊索引判斷所述讀操作所關(guān)聯(lián)的文件塊是否在所述DRAM中;如果所述文件塊不在所述DRAM中,則所述文件系統(tǒng)進(jìn)一步通過文件系統(tǒng)塊索引機(jī)制查找所述文件塊在所述NVRAM上對應(yīng)的地址,并直接將地址對應(yīng)的數(shù)據(jù)讀入用戶緩存。
[0013]在一些示例中,還包括:如果所述文件塊在所述DRAM中,則所述文件系統(tǒng)分別獲取所述文件塊存儲在所述DRAM塊和NVRAM塊中cacheline的最新數(shù)據(jù),并將所述cacheline的最新數(shù)據(jù)拷貝到所述用戶緩存中。
[0014]在一些示例中,所述持久文件寫操作包括同步寫操作及異步寫操作,其中,所述異步寫操作在文件同步操作之前。
[0015]在一些示例中,所述持久寫檢查機(jī)制包括:如果所述文件系統(tǒng)的超級塊包含同步選項(xiàng),則判定所有發(fā)送至所述文件系統(tǒng)的寫操作均為持久寫操作;和/或如果和寫操作相關(guān)聯(lián)的索引節(jié)點(diǎn)結(jié)構(gòu)包含了 0_SYNC標(biāo)識,則判定所述寫操作為持久寫操作;和/或如果一個(gè)文件處于持久狀態(tài),則判定后續(xù)所有關(guān)于該文件的異步寫操作均為持久寫操作,反之,如果一個(gè)文件處于非持久狀態(tài),則判定后續(xù)所有關(guān)于該文件的異步寫操作均為非持久寫操作,其中,每個(gè)文件被加入一種新的狀態(tài),稱為持久狀態(tài)。
[0016]在一些示例中,其中,所述文件系統(tǒng)使用細(xì)粒度機(jī)制來管理所述DRAM的寫緩存。
[0017]在一些示例中,通過Cacheline Bitmap模塊分別獲取所述文件塊存儲在所述DRAM塊和NVRAM塊中cacheline的最新數(shù)據(jù),其中,所述Cacheline為CPU和內(nèi)存的交互粒度。
[0018]在一些不例中,所述Cacheline為MByte。
[0019]本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【附圖說明】
[0020]本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
[0021 ]圖1是本發(fā)明一個(gè)實(shí)施例的基于NVRAM的高效文件系統(tǒng)構(gòu)建方法的流程圖;
[0022]圖2是本發(fā)明一個(gè)實(shí)施例的文件系統(tǒng)與現(xiàn)有的文件系統(tǒng)的架構(gòu)對比圖;
[0023]圖3是本發(fā)明一個(gè)實(shí)施例的文件系統(tǒng)的架構(gòu)圖;以及
[0024]圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的內(nèi)存緩存的塊索引結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0025]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0026]以下結(jié)合附圖描述根據(jù)本發(fā)明實(shí)施例的基于NVRAM的高效文件系統(tǒng)構(gòu)建方法。
[0027]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的基于NVRAM的高效文件系統(tǒng)構(gòu)建方法的流程圖。如圖1所示,該方法包括以下步驟:
[0028]步驟S1:判斷文件系統(tǒng)的文件操作的類型,其中,文件操作的類型包括:文件讀操作、非持久文件寫操作及持久文件寫操作。
[0029]步驟S2:如果文件操作的類型為非持久文件寫操作,則文件系統(tǒng)將非持久文件寫操作的內(nèi)容寫入動(dòng)態(tài)隨機(jī)存取存儲器DRAM,并更新相應(yīng)的DRAM緩存塊索引,并在預(yù)設(shè)時(shí)間點(diǎn)將非持久文件寫操作的內(nèi)容異步刷回至非易失性隨機(jī)訪問存儲器NVRAM中,以避免高額的NVRAM寫延遲開銷,否則文件系統(tǒng)直接在NVRAM/DRAM和用戶緩存之間拷貝相關(guān)數(shù)據(jù),以避免雙重拷貝開銷。
[0030]其中,在本發(fā)明一個(gè)的實(shí)施例中,對于步驟S1中的寫操作,文件系統(tǒng)例如通過持久寫檢查機(jī)制判斷文件操作的類型是否為持久寫操作。則步驟S2進(jìn)一步包括:如果該文件操作為持久寫操作,則直接將該持久寫操作的內(nèi)容寫入NVRAM中,以避免雙重拷貝。進(jìn)一步地,如步驟S2中所述,如果該文件系統(tǒng)屬于非持久寫操作,則將該非持久寫操作寫入DRAM緩存,并更新相應(yīng)的DRAM緩存塊索引,并在之后的某個(gè)合適時(shí)間點(diǎn)(預(yù)設(shè)時(shí)間點(diǎn))將該非持久寫操作的內(nèi)容異步刷入NVRAM,以避免高的NVRAM寫延遲。
[0031]