两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種用于內(nèi)存文件系統(tǒng)的文件數(shù)據(jù)一致性更新方法

文檔序號(hào):9646600閱讀:908來源:國知局
一種用于內(nèi)存文件系統(tǒng)的文件數(shù)據(jù)一致性更新方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)系統(tǒng)軟件領(lǐng)域,具體涉及一種保證內(nèi)存文件系統(tǒng)文件數(shù)據(jù)更新一致性的方法。
【背景技術(shù)】
[0002]內(nèi)存文件系統(tǒng)
隨著新型非易失性存儲(chǔ)器的出現(xiàn),企業(yè)界和學(xué)術(shù)界提出將存儲(chǔ)密度大、讀寫速度快、可按字節(jié)尋址和抗震動(dòng)的非易失性內(nèi)存制作為持久性的數(shù)據(jù)存儲(chǔ)設(shè)備,稱為存儲(chǔ)級(jí)內(nèi)存(Storage Class Memory,簡稱SCM)。為了管理這種存儲(chǔ)級(jí)內(nèi)存,已經(jīng)設(shè)計(jì)出多種內(nèi)存文件系統(tǒng)。例如 IBM 設(shè)計(jì)的 PMFS, “System software for persistent memory,” in Proc.9thACM Eur0.Conf.Comput.Syst., pp 15:1—15:15,2014,ISBN: 978-1-4503-2704-6。(“面向持久性內(nèi)存的系統(tǒng)軟件”,第9屆美國計(jì)算機(jī)學(xué)會(huì)歐洲計(jì)算機(jī)系統(tǒng)會(huì)議,第15篇1到 15 頁,2014 年,ISBN: 978-1-4503-2704-6),重慶大學(xué)自主研發(fā)的 SMFS,“Designingan Efficient Persistent In-Memory File System”,2015 IEEE Non-VolatileMemory System and Applicat1ns Symposium, pp 1-6,2015,D01: 10.1109/NVMSA.2015.7304365。(“高效持續(xù)性內(nèi)存文件系統(tǒng)設(shè)計(jì)”,2015年電氣和電子工程師協(xié)會(huì)非易失性內(nèi)存系統(tǒng)及應(yīng)用研討會(huì),第1-6頁,D01: 10.1109/NVMSA.2015.7304365)。
[0003]在內(nèi)存文件系統(tǒng)S頂FS中,文件的數(shù)據(jù)都存放在物理內(nèi)存頁面上。這種存放文件數(shù)據(jù)的物理內(nèi)存頁面稱為“數(shù)據(jù)頁”。所有文件都使用類似系統(tǒng)頁表的數(shù)據(jù)結(jié)構(gòu)組織其數(shù)據(jù)頁,該數(shù)據(jù)結(jié)構(gòu)稱為“文件頁表”。每當(dāng)進(jìn)程打開內(nèi)存文件系統(tǒng)SIMFS中的一個(gè)文件時(shí),文件系統(tǒng)通過以下三步將文件映射到系統(tǒng)的虛擬地址空間中:
1)給文件分配一段足夠大的空閑系統(tǒng)虛擬地址空間;
2)找到這段虛擬地址空間對(duì)應(yīng)的系統(tǒng)頁表項(xiàng);
3)把文件的文件頁表插入到第2步中的系統(tǒng)頁表項(xiàng)。
[0004]此后,文件所管理的物理內(nèi)存就直接映射到系統(tǒng)的虛擬地址空間,進(jìn)程可以通過系統(tǒng)虛擬地址空間連續(xù)訪問文件的數(shù)據(jù)頁。傳輸數(shù)據(jù)的過程只需要一次數(shù)據(jù)拷貝,從而獲得較高的文件系統(tǒng)性能。
[0005]數(shù)據(jù)一致性更新技術(shù)
在文件系統(tǒng)中更新數(shù)據(jù)時(shí),例如用寫操作向文件中寫數(shù)據(jù)時(shí),需要保證數(shù)據(jù)的一致性,即文件的元數(shù)據(jù)中引用的數(shù)據(jù)頁必須屬于該文件,而不是垃圾數(shù)據(jù),或者其他文件的數(shù)據(jù)頁。文件數(shù)據(jù)的一致性對(duì)文件系統(tǒng)的正確運(yùn)行至關(guān)重要。然而,對(duì)內(nèi)存文件系統(tǒng)而言,不僅需要保證文件數(shù)據(jù)更新的一致性,還需要利用內(nèi)存文件系統(tǒng)的特點(diǎn),盡可能地減少維持?jǐn)?shù)據(jù)一致性導(dǎo)致的性能損耗。
[0006]目前,內(nèi)存文件系統(tǒng)中使用的數(shù)據(jù)一致性更新技術(shù)主要有兩種:
1.現(xiàn)有技術(shù)一:寫時(shí)復(fù)制(Copy-on-write)技術(shù)在使用寫時(shí)復(fù)制技術(shù)更新文件數(shù)據(jù)時(shí),內(nèi)存文件系統(tǒng)首先將新數(shù)據(jù)寫到空閑的物理內(nèi)存,然后使用原子操作將原文件的元數(shù)據(jù)指向新的數(shù)據(jù)頁。具體而言,使用寫時(shí)復(fù)制技術(shù)時(shí),假設(shè)要更新個(gè)數(shù)據(jù)頁,內(nèi)存文件系統(tǒng)需要重復(fù)以下步驟Λ次:
1)分配一個(gè)空閑物理頁;
2)調(diào)用一次數(shù)據(jù)拷貝函數(shù),將新數(shù)據(jù)寫入步驟1)分配的空閑物理頁;
3)使用一次原子操作,修改原文件的數(shù)據(jù)索引結(jié)構(gòu)中相應(yīng)指針,指向步驟2)中的數(shù)據(jù)頁。
[0007]可見使用寫時(shí)復(fù)制技術(shù)更新文件數(shù)據(jù)時(shí),內(nèi)存文件系統(tǒng)需要調(diào)用/7次空閑頁分配函數(shù)、Λ次數(shù)據(jù)拷貝函數(shù),以及Λ次原子操作。
[0008]每一次分配空閑頁和調(diào)用原子操作都需要使用CPU指令對(duì)文件系統(tǒng)代碼中的競爭區(qū)域加鎖、解鎖,每一次調(diào)用數(shù)據(jù)拷貝函數(shù)都需要檢查地址范圍、頁面權(quán)限等操作。因此,這種操作會(huì)產(chǎn)生較大的開銷,降低內(nèi)存文件系統(tǒng)的性能。
[0009]此外,傳統(tǒng)的寫時(shí)復(fù)制技術(shù)不只對(duì)當(dāng)前更新的數(shù)據(jù)頁進(jìn)行更新,還必須向上傳播,對(duì)新數(shù)據(jù)所影響到的文件元數(shù)據(jù)、文件系統(tǒng)元數(shù)據(jù)進(jìn)行寫時(shí)復(fù)制。最終可能導(dǎo)致從待更新文件數(shù)據(jù)到文件系統(tǒng)根目錄整條路徑上的所有頁面全部執(zhí)行寫時(shí)復(fù)制。因此,寫時(shí)復(fù)制技術(shù)會(huì)造成極大的性能損耗。
[0010]2.現(xiàn)有技術(shù)二:簡短影子分頁(Short-circuit shadow paging)技術(shù) “Better I/O through byte-addressable, persistent memory.,,Jeremy Condit,
Edmund B.Nightingale, Christopher Frost, Engin Ipek, Benjamin Lee, DougBurger, and Derrick Coetzee.1n Proceedings of the ACM SIGOPS 22nd symposiumon Opera ting systems principles (S0SP ’09),Pages 133-146,2009, ISBN:978-1-60558-752-3.( “可字節(jié)尋址持久化內(nèi)存上的先進(jìn) 1/0”,Jeremy Condit, EdmundB.Nightingale, Christopher Frost, Engin Ipek, Benjamin Lee, Doug Burger, andDerrick Coetzee,第22屆美國計(jì)算機(jī)學(xué)會(huì)操作系統(tǒng)原理研討會(huì),第133-146頁,2009年,ISBN: 978-1-60558-752-3)
簡短影子分頁技術(shù)是微軟在他們的內(nèi)存文件系統(tǒng)BPFS中所使用的數(shù)據(jù)一致性更新技術(shù)。該技術(shù)類似于寫時(shí)復(fù)制技術(shù),即首先將新數(shù)據(jù)寫到空閑的物理內(nèi)存,然后使用原子操作將原文件的元數(shù)據(jù)指向新的數(shù)據(jù)頁。不同之處在于,簡短影子分頁技術(shù)只更新直接受影響的數(shù)據(jù)頁和文件元數(shù)據(jù),更新操作不會(huì)傳播到文件系統(tǒng)的其他文件或元數(shù)據(jù)。
[0011]然而,簡短影子分頁技術(shù)和寫時(shí)復(fù)制技術(shù)有同樣的缺點(diǎn),也就是在更新個(gè)數(shù)據(jù)頁時(shí),要重復(fù)現(xiàn)有技術(shù)一中的3個(gè)步驟次。由此產(chǎn)生較大的開銷,降低內(nèi)存文件系統(tǒng)的性會(huì)泛。

【發(fā)明內(nèi)容】

[0012]針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明所要解決的技術(shù)問題是提供一種用于內(nèi)存文件系統(tǒng)的文件數(shù)據(jù)一致性更新方法,減少數(shù)據(jù)一致性更新操作的開銷,提高內(nèi)存文件系統(tǒng)的性能。
[0013]要解決的上述技術(shù)問題,
本發(fā)明提供的一種用于內(nèi)存文件系統(tǒng)的文件數(shù)據(jù)一致性更新方法,包括以下步驟: 步驟1,在進(jìn)程初始化時(shí),系統(tǒng)在內(nèi)核空間為進(jìn)程打開一個(gè)偽文件;
步驟2,進(jìn)程請(qǐng)求更新“目標(biāo)文件”,內(nèi)存文件系統(tǒng)按照需要更新的數(shù)據(jù)量,一次性分配全部所需的物理內(nèi)存給偽文件;
步驟3,構(gòu)建偽文件中索引數(shù)據(jù)頁的數(shù)據(jù)結(jié)構(gòu),稱為“數(shù)據(jù)索引”;
步驟4,調(diào)用一次數(shù)據(jù)拷貝函數(shù),把新數(shù)據(jù)一次性全部寫入偽文件;
步驟5,使用一個(gè)原子操作,把偽文件的數(shù)據(jù)索引插入目標(biāo)文件的數(shù)據(jù)索引中相應(yīng)的位置;
步驟6,進(jìn)程結(jié)束,刪除該進(jìn)程對(duì)應(yīng)的偽文件。
[0014]由于新數(shù)據(jù)首先寫在偽文件中,如果在寫的過程中系統(tǒng)崩潰或丟失電源,目標(biāo)文件的數(shù)據(jù)不會(huì)受到影響。將新數(shù)據(jù)更新到目標(biāo)文件中是由修改目標(biāo)文件中的一個(gè)指針完成,整個(gè)操作僅需要一個(gè)由硬件保證完成的原子操作。因此,文件的數(shù)據(jù)不會(huì)出現(xiàn)一致性問題。此外,整個(gè)更新操作中只需要調(diào)用一次數(shù)據(jù)分配、數(shù)據(jù)拷貝函數(shù)和原子操作。所以,本發(fā)明具有如下的優(yōu)點(diǎn):對(duì)于數(shù)據(jù)量較大的更新操作,避免了大量數(shù)據(jù)拷貝函數(shù)調(diào)用以及原子操作,可以在保證文件數(shù)據(jù)更新一致性的情況達(dá)到較高的性能。
【附圖說明】
[0015]本發(fā)明的【附圖說明】如下:
圖1為本發(fā)明的流程圖;
圖2為實(shí)施例的數(shù)據(jù)一致性更新的示意圖。
【具體實(shí)施方式】
[0016]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明:
本發(fā)明的構(gòu)思是:首先在創(chuàng)建進(jìn)程的時(shí)候,給進(jìn)程創(chuàng)建一個(gè)專有的偽文件;然后在進(jìn)程運(yùn)行的過程中,每當(dāng)進(jìn)程要更新文件數(shù)據(jù)時(shí),都通過該偽文件作數(shù)據(jù)一致性更新;最后,當(dāng)進(jìn)程結(jié)束時(shí),刪除該進(jìn)程對(duì)應(yīng)的偽文件。
[0017]本發(fā)明包括以下步驟:
步驟1,在進(jìn)程初始化時(shí),系統(tǒng)在內(nèi)核空間為進(jìn)程打開一個(gè)偽文件;
偽文件和常規(guī)文件一樣,有索引節(jié)點(diǎn)和內(nèi)核虛擬地址空間等元數(shù)據(jù)信息,但是該文件的文件描述符并沒有提供給進(jìn)程,所以這種文件稱為“偽文件”。
[0018]步驟2,進(jìn)程發(fā)出更新文件數(shù)據(jù)的請(qǐng)求,進(jìn)程所請(qǐng)求更新的文件稱為“目標(biāo)文件”,此時(shí),內(nèi)存文件系統(tǒng)按照需要更新的數(shù)據(jù)量,一次性分配全部所需的物理內(nèi)存給偽文件。
[0019]步驟3,構(gòu)建偽文件中索引數(shù)據(jù)頁的數(shù)據(jù)結(jié)構(gòu),稱為“數(shù)據(jù)索引”;
索引數(shù)據(jù)結(jié)構(gòu)的形式與系統(tǒng)頁表的形式相同,可以是單級(jí)索引,也可以是多級(jí)索引,每一級(jí)索引包含一塊或多塊物理內(nèi)存,每一塊物理內(nèi)存分成多個(gè)相同長度的條目,每一個(gè)條目都可以存放下一級(jí)索引的一塊物理內(nèi)存的起始物理地址;
在偽文件的索引節(jié)點(diǎn)中,存有一個(gè)指針指向偽文件的數(shù)據(jù)索引,稱為“索引指針”。索引指針可以指向存放偽文件的最高級(jí)數(shù)據(jù)索引的第一物理頁,也就是說,索引指針可以是第一物理頁的起始物理地址;
假設(shè)數(shù)據(jù)索引由高到底分級(jí),編號(hào)由小到大,即一級(jí)索引指向二級(jí)索引,二級(jí)索引指向三級(jí)索引。如果修改的數(shù)據(jù)頁只涉
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
荣成市| 南城县| 灌云县| 苍南县| 鄯善县| 曲水县| 遂川县| 龙州县| 大丰市| 友谊县| 三门峡市| 渭南市| 靖西县| 察雅县| 江华| 江源县| 千阳县| 天气| 开封市| 隆安县| 阿尔山市| 鞍山市| 正定县| 铜川市| 积石山| 雷波县| 阳城县| 莎车县| 青阳县| 都匀市| 奈曼旗| 克东县| 阳曲县| 贺兰县| 沽源县| 东莞市| 古交市| 察隅县| 麦盖提县| 安福县| 承德市|