国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種文件管理方法及文件系統(tǒng)與流程

      文檔序號:11864711閱讀:602來源:國知局
      一種文件管理方法及文件系統(tǒng)與流程

      本發(fā)明涉及系統(tǒng)管理領(lǐng)域,具體地,涉及一種文件管理方法及文件系統(tǒng)。



      背景技術(shù):

      文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在存儲(chǔ)設(shè)備上組織文件的方法。從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取,當(dāng)用戶不再使用時(shí)刪除文件等。

      對于傳統(tǒng)的Linux文件系統(tǒng),由于上層應(yīng)用程序的呼叫需要經(jīng)由內(nèi)核的內(nèi)核緩沖層和內(nèi)核級接口發(fā)送給大容量文件系統(tǒng),因此對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提供一種文件管理方法及文件系統(tǒng),能夠用于實(shí)時(shí)操作系統(tǒng),且結(jié)構(gòu)簡單。

      一方面,本發(fā)明實(shí)施例提供一種文件管理方法,包括:S10、通過預(yù)設(shè)外部接口接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求;S11、當(dāng)所述數(shù)據(jù)請求為寫入請求時(shí),通過預(yù)設(shè)目錄訪問模塊根據(jù)所述寫入請求解析寫入文件路徑,得到寫入文件ID;S12、通過預(yù)設(shè)文件訪問模塊以所述寫入文件ID作為物理塊號獲取寫入文件頭信息;S13、通過所述文件訪問模塊根據(jù)所述寫入請求獲取寫入數(shù)據(jù)邏輯塊號;S14、當(dāng)所述寫入數(shù)據(jù)邏輯塊號大于當(dāng)前文件最大邏輯塊號時(shí),通過預(yù)設(shè)B+樹算法模塊分配物理塊;S15、如果分配成功,通過所述B+樹算法模塊將分配的物理塊添加到所述寫入文件頭信息對應(yīng)的寫入文件B+樹中;S16、通過所述B+樹算法模塊根據(jù)所述寫入文件頭信息獲取寫入數(shù)據(jù)物理塊號;S17、通過所述文件訪問模塊將所述寫入請求對應(yīng)的數(shù)據(jù)寫入所述寫入數(shù)據(jù)物理塊號對應(yīng)的物理塊;S18、通過所述文件訪問模塊根據(jù)所述寫入文件頭信息修改文件頭,得到寫入結(jié)果,并通過所述外部接口向所述上層應(yīng)用返回所述寫入結(jié)果。

      另一方面,本發(fā)明實(shí)施例提供一種文件管理系統(tǒng),包括:

      外部接口,用于接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求;

      目錄訪問模塊,與所述外部接口相連,用于當(dāng)所述數(shù)據(jù)請求為寫入請求時(shí),根據(jù)所述寫入請求解析寫入文件路徑,得到寫入文件ID;

      文件訪問模塊,與所述目錄訪問模塊相連,用于以所述寫入文件ID作為物理塊號獲取寫入文件頭信息;根據(jù)所述寫入請求獲取寫入數(shù)據(jù)邏輯塊號;

      B+樹算法模塊,與所述文件訪問模塊相連,用于當(dāng)所述寫入數(shù)據(jù)邏輯塊號大于當(dāng)前文件最大邏輯塊號時(shí),分配物理塊;如果分配成功,將分配的物理塊添加到所述寫入文件頭信息對應(yīng)的寫入文件B+樹中;根據(jù)所述寫入文件頭信息獲取寫入數(shù)據(jù)物理塊號;

      所述文件訪問模塊,還用于將所述寫入請求對應(yīng)的數(shù)據(jù)寫入所述寫入數(shù)據(jù)物理塊號對應(yīng)的物理塊;根據(jù)所述寫入文件頭信息修改文件頭,得到寫入結(jié)果;

      所述外部接口,還用于向所述上層應(yīng)用返回所述寫入結(jié)果。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      附圖說明

      圖1為本發(fā)明實(shí)施例1提供的文件管理方法的流程圖;

      圖2為本發(fā)明實(shí)施例2提供的文件管理方法的流程圖;

      圖3為本發(fā)明實(shí)施例3提供的文件管理方法的流程圖;

      圖4為本發(fā)明實(shí)施例4提供的文件管理方法的流程圖;

      圖5為本發(fā)明實(shí)施例5提供的文件管理方法的流程圖一;

      圖6為本發(fā)明實(shí)施例6提供的文件管理方法的流程圖二;

      圖7為本發(fā)明實(shí)施例7提供的文件管理方法的流程圖;

      圖8為本發(fā)明實(shí)施例8提供的文件管理裝置的結(jié)構(gòu)示意圖一;

      圖9為本發(fā)明實(shí)施例9提供的文件管理裝置的結(jié)構(gòu)示意圖二。

      具體實(shí)施方式

      下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)一步說明。但這些例舉性實(shí)施方式的用途和目的僅用來例舉本發(fā)明,并非對本發(fā)明的實(shí)際保護(hù)范圍構(gòu)成任何形式的任何限定,更非將本發(fā)明的保護(hù)范圍局限于此。

      實(shí)施例1

      如圖1所示,本發(fā)明實(shí)施例提供一種文件管理方法,包括:

      步驟101,通過預(yù)設(shè)外部接口接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求。

      在本實(shí)施例中,上層應(yīng)用需要進(jìn)行文件寫入、掛載、刪除、恢復(fù)等操作時(shí),可以向文件管理系統(tǒng)發(fā)送對應(yīng)的數(shù)據(jù)請求,使文件管理系統(tǒng)通過預(yù)設(shè)外部接口接收該數(shù)據(jù)請求。

      步驟102,當(dāng)該數(shù)據(jù)請求為寫入請求時(shí),通過預(yù)設(shè)目錄訪問模塊根據(jù)該寫入請求解析寫入文件路徑,得到寫入文件ID。

      在本實(shí)施例中,通過步驟102解析寫入文件路徑的過程包括:首先將寫入文件路徑以“\”或“/”分割為多個(gè)字符串,每個(gè)字符串代表一級目錄,然后從根目錄開始逐級目錄查找對應(yīng)文件名、取出文件ID并打開文件,直至所有字符串查找完成,得到最后的一個(gè)字符串所對應(yīng)的文件ID即為寫入文件ID。

      其中,目錄也是一種特殊的文件,只是目錄文件保存的是文件名到“文件ID”的對應(yīng)關(guān)系,目錄文件包含多個(gè)目錄項(xiàng),每個(gè)目錄項(xiàng)內(nèi)容包括:目錄項(xiàng)長度、文件ID和文件名。

      以文件路徑/aaa/bbb/ccc為例,該路徑以“/”字符分為三級。首先取出aaa,在根目錄文件中下查找“文件名”為aaa的目錄項(xiàng),獲取該項(xiàng)的“文件ID”,根據(jù)“文件ID”打開aaa目錄文件(讀取文件頭)。再在aaa目錄中查找bbb對應(yīng)的目錄項(xiàng)并打開目錄文件,以此類推,直至找到ccc的目錄項(xiàng),獲取到該目錄項(xiàng)的“文件ID”即“寫入文件ID”。

      步驟103,通過預(yù)設(shè)文件訪問模塊以該寫入文件ID作為物理塊號獲取寫入文件頭信息。

      在本實(shí)施例中,通過該步驟103獲取寫入文件頭信息的過程包括:讀取該物理塊號對應(yīng)物理塊的內(nèi)容到內(nèi)存中的文件頭結(jié)構(gòu)。文件ID即為文件頭塊的塊號,如文件ID為3,則讀取第3塊的內(nèi)容。

      步驟104,通過文件訪問模塊根據(jù)該寫入請求獲取寫入數(shù)據(jù)邏輯塊號。

      在本實(shí)施例中,寫入請求包括:寫入位置、寫入長度以及實(shí)際寫入數(shù)據(jù)邏輯塊號。其中,獲取寫入數(shù)據(jù)邏輯塊號的過程可以為將寫入位置除以預(yù)設(shè)塊大小。

      步驟105,當(dāng)該寫入數(shù)據(jù)邏輯塊號大于當(dāng)前文件最大邏輯塊號時(shí),通過預(yù)設(shè)B+樹算法分配物理塊。

      在本實(shí)施例中,通過步驟105分配的物理塊數(shù)量=(寫入位置+寫入長度)/塊大小–當(dāng)前文件最大邏輯塊號;其中,如果“(寫入位置+寫入長度)/塊大小”有余數(shù),則“物理塊數(shù)量”再加1。

      步驟106,如果分配成功,通過B+樹算法模塊將分配的物理塊添加到寫入文件頭信息對應(yīng)的寫入文件B+樹中。

      在本實(shí)施例中,為了能夠根據(jù)寫入文件頭信息獲取寫入數(shù)據(jù)物理塊號,首先要通過步驟106將分配的物理塊添加到寫入文件頭信息對應(yīng)的寫入文件B+樹中。

      步驟107,通過B+樹算法模塊根據(jù)寫入文件頭信息獲取寫入數(shù)據(jù)物理塊號。

      在本實(shí)施例中,通過步驟107獲取寫入數(shù)據(jù)物理塊號的過程包括:從文件頭信息中的B+樹根節(jié)點(diǎn)開始,執(zhí)行以下步驟:

      1、在節(jié)點(diǎn)中查找小于或等于“步驟104所獲取到的邏輯塊號”的最大key值。獲取該key所在項(xiàng)。

      2、如果該項(xiàng)“類型”為非葉子節(jié)點(diǎn),則根據(jù)“子節(jié)點(diǎn)物理塊號”讀取子節(jié)點(diǎn),回到第1步。

      3、如果該項(xiàng)“類型”為葉子節(jié)點(diǎn),則可計(jì)算得到物理塊號,計(jì)算公式如下:

      寫入數(shù)據(jù)物理塊號=起始物理塊號+(步驟104所獲取到的寫入數(shù)據(jù)邏輯塊號-key)。其中,葉子節(jié)點(diǎn)的結(jié)構(gòu)包含的字段為key、上述起始物理塊號和塊數(shù)量。

      步驟108,通過文件訪問模塊將寫入請求對應(yīng)的數(shù)據(jù)寫入該寫入數(shù)據(jù)物理塊號對應(yīng)的物理塊。

      步驟109,通過該文件訪問模塊根據(jù)寫入文件頭信息修改文件頭,得到寫入結(jié)果,并通過外部接口向上層應(yīng)用返回該寫入結(jié)果。

      在本實(shí)施例中,通過文件訪問模塊修改文件頭,具體包括修改文件頭中的“文件長度”和“文件修改時(shí)間”兩個(gè)字段。該寫入結(jié)果具體為實(shí)際寫入數(shù)據(jù)的長度。

      其中,“文件長度”的修改方式為將“文件長度”修改為文件寫入完成后的長度。如原文件長度為10,寫入請求為“偏移:9,長度:6,數(shù)據(jù):××××××”,則寫入完成后文件長度為15。而如果寫入請求為“偏移:2,長度:2,數(shù)據(jù):××”,則寫入完成后文件長度還是10,無需修改。當(dāng)“寫入偏移+寫入長度”大于當(dāng)前文件長度時(shí)才需要修改“文件長度”。

      “文件修改時(shí)間”的修改方式為將“文件修改時(shí)間”改為當(dāng)前時(shí)間(當(dāng)前時(shí)間通過操作系統(tǒng)接口獲取)。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例2

      如圖2所示,本發(fā)明實(shí)施例提供一種文件管理方法,包括:

      步驟201至步驟207,接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求,并獲取寫入數(shù)據(jù)物理塊號;該過程與圖1所示的步驟101至步驟107相似,在此不再一一贅述。

      步驟208,通過預(yù)設(shè)加密模塊對該寫入請求對應(yīng)的數(shù)據(jù)進(jìn)行加密,得到加密數(shù)據(jù)。

      步驟209,通過文件訪問模塊將該加密數(shù)據(jù)寫入該寫入數(shù)據(jù)物理塊號對應(yīng)的物理塊。該過程與圖1所示的步驟108相似,在此不再一一贅述。

      步驟210,修改文件頭,并返回寫入結(jié)果,該過程與圖1所示的步驟109相似,在此不再一一贅述。

      為了使本實(shí)施例提供的文件管理方法,支持文件系統(tǒng)層的數(shù)據(jù)加密,可以在數(shù)據(jù)寫入之前,首先通過步驟208進(jìn)行加密。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例3

      如圖3所示,本發(fā)明實(shí)施例提供一種文件管理方法,包括:

      步驟301,通過預(yù)設(shè)外部接口接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求。該過程與圖1所示的步驟101相似,在此不再一一贅述。

      步驟302,通過預(yù)設(shè)事務(wù)處理模塊分配事務(wù),得到寫入事務(wù)ID。

      步驟303至步驟306,當(dāng)數(shù)據(jù)請求為寫入請求時(shí),獲取寫入文件ID、寫入文件頭信息和寫入數(shù)據(jù)邏輯塊號,并分配物理塊。該過程與圖1所示的步驟102至步驟105相似,在此不再一一贅述。

      步驟307,通過事務(wù)處理模塊將該分配過程寫入事務(wù)。

      步驟308,如果分配成功,通過B+樹算法模塊將分配的物理塊添加到寫入文件頭信息對應(yīng)的寫入文件B+樹中。該過程與圖1所示的步驟106相似,在此不再一一贅述。

      步驟309,通過事務(wù)處理模塊將該添加過程寫入事務(wù)。

      步驟310至步驟311,獲取寫入數(shù)據(jù)物理塊號并將數(shù)據(jù)寫入物理塊。該過程與圖1所示的步驟107至步驟108相似,在此不再一一贅述。

      步驟312,通過文件訪問模塊修改文件頭,得到寫入結(jié)果,并通過事務(wù)處理模塊將該修改過程寫入事務(wù)。

      步驟313,通過事務(wù)處理模塊分別寫入事務(wù)頭和事務(wù)數(shù)據(jù)到預(yù)設(shè)事務(wù)log,并標(biāo)記事務(wù)為未完成狀態(tài)。

      步驟314,通過事務(wù)處理模塊寫入事務(wù)數(shù)據(jù)到事務(wù)頭對應(yīng)的扇區(qū)。

      步驟315,通過事務(wù)處理模塊標(biāo)記事務(wù)為一致態(tài),并通過外部接口向上層應(yīng)用返回寫入結(jié)果。

      在本實(shí)施例中,以修改文件頭為例子,如果文件系統(tǒng)將塊大小設(shè)置為4個(gè)扇區(qū),文件ID為3,文件頭長度為2個(gè)扇區(qū)。那么修改文件頭時(shí)會(huì)寫入第12(4×3)扇區(qū)開始的2個(gè)扇區(qū),即第12,13扇區(qū)。“寫入事務(wù)”即當(dāng)使用事務(wù)提交時(shí),數(shù)據(jù)不會(huì)立即寫入第12、13扇區(qū),而是在扇區(qū)列表中增加一個(gè)區(qū)間,假設(shè)當(dāng)前區(qū)間數(shù)為0,則區(qū)間數(shù)增加到1,同時(shí)設(shè)置“區(qū)間1起始扇區(qū)”為12,“區(qū)間1扇區(qū)數(shù)量”為2,再將2個(gè)扇區(qū)文件頭數(shù)據(jù)保存到“事務(wù)數(shù)據(jù)扇區(qū)1”和“事務(wù)數(shù)據(jù)扇區(qū)2”。這整個(gè)過程都是在操作事務(wù)的內(nèi)存結(jié)構(gòu),沒有磁盤操作。所有磁盤操作在事務(wù)提交過程中完成,具體過程為首先將整個(gè)事務(wù)內(nèi)存結(jié)構(gòu)寫入事務(wù)log磁盤區(qū)域(注意這里還是沒有寫入第12,13扇區(qū)),標(biāo)記事務(wù)為“未完成狀態(tài)”,再將文件頭寫入第12,13扇區(qū),最后標(biāo)記事務(wù)為“一致態(tài)”。

      在本實(shí)施例中,通過事務(wù)處理模塊能夠?qū)崿F(xiàn)文件系統(tǒng)的掉電保護(hù)。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例4

      如圖4所示,本發(fā)明實(shí)施例提供一種文件管理方法,該方法與圖1所示的相似,區(qū)別在于,還包括:

      步驟110,當(dāng)數(shù)據(jù)請求為掛載請求時(shí),根據(jù)掛載請求讀取預(yù)設(shè)超級塊,獲取事務(wù)頭log塊位置、大小以及磁盤空閑塊管理文件ID和根目錄文件ID。

      步驟111,通過預(yù)設(shè)事務(wù)處理模塊檢查事務(wù)完整性。

      在本實(shí)施例中,步驟111包括通過事務(wù)處理模塊根據(jù)事務(wù)頭log塊位置查找未完成的事務(wù),并將未完成的事務(wù)對應(yīng)的數(shù)據(jù)寫入到對應(yīng)的扇區(qū);通過事務(wù)處理模塊標(biāo)記事務(wù)為完成狀態(tài)。其中,寫入的扇區(qū)的位置記錄在事務(wù)的事務(wù)頭中。

      在本實(shí)施例中,檢查事務(wù)完整性是文件系統(tǒng)掉電保護(hù)最關(guān)鍵的一步。如果文件系統(tǒng)在寫入事務(wù)頭和事務(wù)數(shù)據(jù)之前意外斷電,則放棄(不處理)本次事務(wù),所有對文件元數(shù)據(jù)的改動(dòng)都不會(huì)發(fā)生;如果文件系統(tǒng)在寫入事務(wù)頭和事務(wù)數(shù)據(jù)之后且返回寫入結(jié)果之前意外斷電,則重做事務(wù),即重新將寫入事務(wù)數(shù)據(jù)到事務(wù)頭對應(yīng)的扇區(qū)并返回寫入結(jié)果。

      即事務(wù)檢查模塊只需要處理“在寫入事務(wù)頭和事務(wù)數(shù)據(jù)之后且返回寫入結(jié)果之前意外斷電”的事務(wù)。那么如何判斷事務(wù)是“在寫入事務(wù)頭和事務(wù)數(shù)據(jù)之后且返回寫入結(jié)果之前意外斷電”?判斷事務(wù)頭結(jié)構(gòu)中的“事務(wù)狀態(tài)”字段,如果為“未完成態(tài)”則表示事務(wù)“在寫入事務(wù)頭和事務(wù)數(shù)據(jù)之后且返回寫入結(jié)果之前意外斷電”。

      步驟112,如果事務(wù)完整,根據(jù)磁盤空閑塊管理文件ID通過文件訪問模塊讀取空閑文件管理頭。

      步驟113,根據(jù)根目錄文件ID通過文件訪問模塊讀取根目錄文件頭。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例5

      如圖5所示,本發(fā)明實(shí)施例提供一種文件管理方法,該方法與圖1所示的相似,區(qū)別在于,還包括:

      步驟114,當(dāng)數(shù)據(jù)請求為文件刪除請求時(shí),通過目錄訪問模塊根據(jù)文件刪除請求解析刪除文件路徑,查找刪除目錄項(xiàng),得到刪除文件ID。

      在本實(shí)施例中,通過步驟114獲取刪除文件ID的過程與通過步驟102獲取寫入文件ID的過程相似,在此不再一一贅述。

      步驟115,通過目錄訪問模塊刪除該刪除目錄項(xiàng)。

      步驟116,通過文件訪問模塊根據(jù)刪除文件ID獲取刪除文件頭信息。

      步驟117,通過文件訪問模塊對刪除請求對應(yīng)的文件進(jìn)行處理,得到刪除處理結(jié)果。

      在本實(shí)施例中,通過步驟117對刪除請求對應(yīng)的文件進(jìn)行處理的過程包括:通過文件訪問模塊判斷刪除請求對應(yīng)的B+樹層數(shù)是否大于2;如果大于2,通過文件訪問模塊將刪除請求對應(yīng)的文件鏈入預(yù)設(shè)已刪除隊(duì)列,得到刪除處理結(jié)果;否則,通過文件訪問模塊將刪除請求回收至預(yù)設(shè)B+樹空間,得到刪除處理結(jié)果。其中,刪除請求對應(yīng)的B+樹層數(shù)可以根據(jù)刪除請求對應(yīng)的B+樹節(jié)點(diǎn)中記錄的信息確定。

      在本實(shí)施例中,將刪除請求對應(yīng)的文件鏈入已刪除隊(duì)列,該過程與步驟105的分配物理塊的過程配合,能夠提高刪除效率。步驟105分配物理塊時(shí),優(yōu)先從已刪除隊(duì)列中的文件B+樹分配物理塊;如果已刪除隊(duì)列為空,則從空閑塊管理B+樹分配物理塊;文件系統(tǒng)格式化時(shí)將所有物理塊添加到空閑塊管理B+樹。

      步驟118,通過外部接口向上層應(yīng)用返回該刪除處理結(jié)果。

      進(jìn)一步的,如圖6所示,在步驟115之前,還包括:步驟119,通過預(yù)設(shè)事務(wù)處理模塊分配事務(wù),得到刪除事務(wù)ID。

      此時(shí),在步驟115之后,步驟116之前,還包括:步驟120,通過事務(wù)處理模塊將該刪除過程寫入事務(wù);

      在步驟117之后,步驟118之前,還包括:步驟121,通過事務(wù)處理模塊將該處理過程寫入事務(wù)。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例6

      如圖7所示,本發(fā)明實(shí)施例提供一種文件管理方法,該方法與圖1所示的相似,區(qū)別在于,還包括:

      步驟122,當(dāng)數(shù)據(jù)請求為恢復(fù)請求時(shí),通過預(yù)設(shè)數(shù)據(jù)恢復(fù)模塊將預(yù)設(shè)所有數(shù)據(jù)塊加入預(yù)設(shè)磁盤空閑塊B+樹。

      步驟123,通過數(shù)據(jù)恢復(fù)模塊建立文件頭節(jié)點(diǎn)塊鏈表以及B+樹葉子節(jié)點(diǎn)塊鏈表。

      在本實(shí)施例中,通過步驟121建立鏈表的過程包括:通過數(shù)據(jù)恢復(fù)模塊掃描所有物理塊,判斷是否存在塊標(biāo)識為文件頭節(jié)點(diǎn)類型且格式化ID為超級塊中的格式化ID且文件ID不是空閑塊管理文件ID的物理塊;如果存在,將該物理塊加入文件頭節(jié)點(diǎn)塊鏈表,并從磁盤空閑塊B+樹中刪除該物理塊;判斷是否存在塊標(biāo)識為B+樹葉子節(jié)點(diǎn)類型且格式化ID為超級塊中的格式化ID且文件ID不是空閑塊管理文件ID的物理塊;如果存在,將該數(shù)據(jù)塊加入B+樹葉子節(jié)點(diǎn)塊鏈表,從磁盤空閑塊B+樹刪除該物理塊,并將該葉子節(jié)點(diǎn)塊中記錄的所有物理塊區(qū)間均從磁盤空閑塊B+樹中刪除。

      步驟124,對于文件頭節(jié)點(diǎn)塊鏈表中每個(gè)文件頭節(jié)點(diǎn)塊,清除該文件頭節(jié)點(diǎn)塊的B+樹根節(jié)點(diǎn)字段。

      步驟125,從B+樹葉子節(jié)點(diǎn)塊鏈表中查找文件ID為當(dāng)前文件頭塊號的B+樹葉子節(jié)點(diǎn),并將該B+樹葉子節(jié)點(diǎn)根據(jù)第一個(gè)物理塊區(qū)間的key值插入當(dāng)前文件B+樹。

      在本實(shí)施例中,當(dāng)找到匹配的葉子節(jié)點(diǎn)塊時(shí),將其內(nèi)容讀取到對應(yīng)的內(nèi)存區(qū)域,被標(biāo)記的子節(jié)點(diǎn)1即為第一個(gè)物理塊區(qū)間。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      實(shí)施例7

      如圖8所示,本發(fā)明實(shí)施例提供一種文件管理系統(tǒng),包括:

      外部接口801,用于接收上層應(yīng)用發(fā)送的數(shù)據(jù)請求;

      目錄訪問模塊802,與所述外部接口相連,用于當(dāng)所述數(shù)據(jù)請求為寫入請求時(shí),根據(jù)所述寫入請求解析寫入文件路徑,得到寫入文件ID;

      文件訪問模塊803,與所述目錄訪問模塊相連,用于以所述寫入文件ID作為物理塊號獲取寫入文件頭信息;根據(jù)所述寫入請求獲取寫入數(shù)據(jù)邏輯塊號;

      B+樹算法模塊804,與所述文件訪問模塊相連,用于當(dāng)所述寫入數(shù)據(jù)邏輯塊號大于當(dāng)前文件最大邏輯塊號時(shí),分配物理塊;如果分配成功,將分配的物理塊添加到所述寫入文件頭信息對應(yīng)的寫入文件B+樹中;根據(jù)所述寫入文件頭信息獲取寫入數(shù)據(jù)物理塊號;

      所述文件訪問模塊,還用于將所述寫入請求對應(yīng)的數(shù)據(jù)寫入所述寫入數(shù)據(jù)物理塊號對應(yīng)的物理塊;根據(jù)寫入文件頭信息修改文件頭,得到寫入結(jié)果;

      所述外部接口,還用于向所述上層應(yīng)用返回所述寫入結(jié)果。

      在本實(shí)施例中,通過外部接口、目錄訪問模塊、文件訪問模塊和B+樹算法模塊實(shí)現(xiàn)文件管理的過程,與本發(fā)明實(shí)施例1-6提供的過程相似,在此不再一一贅述。

      進(jìn)一步的,如圖9所示,本實(shí)施例提供的文件管理系統(tǒng),還包括:

      事務(wù)處理模塊805,分別與所述外部接口和文件訪問模塊相連,用于分配事務(wù),得到寫入事務(wù)ID;將物理塊的分配過程寫入事務(wù);將物理塊的添加過程寫入事務(wù);將文件頭的修改過程寫入事務(wù);分別寫入事務(wù)頭和事務(wù)數(shù)據(jù)到預(yù)設(shè)事務(wù)log,并標(biāo)記事務(wù)為未完成狀態(tài);寫入事務(wù)數(shù)據(jù)到所述事務(wù)頭對應(yīng)的扇區(qū);標(biāo)記事務(wù)為一致態(tài)。

      在本實(shí)施例中,通過事務(wù)處理模塊實(shí)現(xiàn)掉電保護(hù)的過程,與本發(fā)明實(shí)施例3和實(shí)施例5提供的過程相似,在此不再一一贅述。

      本發(fā)明具有如下有益效果:直接通過外部接口接收數(shù)據(jù)請求,能夠提高大容量文件系統(tǒng)的訪問效率;此外,直接將寫入文件ID作為物理塊號,簡化了大容量文件系統(tǒng)的結(jié)構(gòu)。本發(fā)明實(shí)施例提供的技術(shù)方案,解決了現(xiàn)有技術(shù)中對于沒有內(nèi)核緩沖層的實(shí)時(shí)操作系統(tǒng),無法使用該大容量文件系統(tǒng);此外,傳統(tǒng)的Linux文件系統(tǒng)一般使用單獨(dú)的模塊管理文件ID,大容量文件系統(tǒng)的結(jié)構(gòu)復(fù)雜的問題。

      以上實(shí)施例的先后順序僅為便于描述,不代表實(shí)施例的優(yōu)劣。

      最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1