新四季網

一種基於重組文件元數據實現快速文件切割和合併的方法

2023-09-16 15:37:30

一種基於重組文件元數據實現快速文件切割和合併的方法
【專利摘要】本發明公開了一種基於重組文件元數據實現快速文件切割和合併的方法,其實施步驟分為:擴展原有的POSIX文件操作接口,新增文件切割和合併接口;這兩個擴展接口通過IOCTL的方式與作業系統內核進行交互;SplitFile接口的工作流程以及MergeFile接口的工作流程。本發明給需要進行文件切割、合併的應用帶來方便;消除了文件切割和合併過程中的拷貝開銷,這對分布式文件系統來說非常有效,消除了大量的I/O操作;大幅度提升了文件切割和合併這類應用的性能。
【專利說明】一種基於重組文件元數據實現快速文件切割和合併的方法

【技術領域】
[0001]本發明涉及一種文件切割和合併的方法,尤其涉及一種基於重組文件元數據實現快速文件切割和合併的方法,屬於分布式文件系統和網絡存儲系統【技術領域】。

【背景技術】
[0002]在傳統的分布式文件系統或者本地文件系統中,對於文件的切割和合併都是通過數據拷貝來實現的。現有的一些文件合併切割軟體本質上都是通過拷貝數據來實現的,唯一不同的地方就是採用了多線程技術,但是這並沒有從本質上解決合併切割效率低下的問題。
[0003]比如當用戶只需要一個文件中的部分內容時,實際上需要進行以下的文件系統操作:
[0004]1、打開源文件;
[0005]2、創建一個新文件;
[0006]3、讀取源文件中需要的內容,寫入到新文件中;
[0007]4、關閉源文件和新文件;
[0008]再例如當用戶需要將幾個文件合併成一個文件時,需要進行以下的文件系統操作:
[0009]1、打開第一個源文件;
[0010]2、創建一個新文件;
[0011]3、讀取第一個源文件中的內容,寫入到新文件中;
[0012]4、關閉第一個源文件,打開第二個源文件;
[0013]5、讀取第二個源文件的內容,寫入到新文件中;
[0014]6、依次打開第N個源文件,讀取內容,寫入到新文件中;
[0015]7、最後關閉新文件;
[0016]其實面對上述複雜的操作過程,一方面帶來很大的I/O開銷(I/O開銷是指:輸入輸出流量百分比),另一方面對整個這種類型的應用產生了巨大開銷,從而使得該過程成了這個系統中的瓶頸點。
[0017]從文件系統的底層實現看,無論是文件的切割還是合併,只需要重新組織一下新文件的元數據信息,即新文件的數據塊分部信息即可,因為真正的數據信息已經存在於存儲系統中了,完全可以避免掉大量的I/o開銷。為此,我們在分布式文件系統中提出一種新的實現文件切割和合併方法,從而革命性的的提高這類應用的性能。


【發明內容】

[0018]為了解決上述技術所存在的不足之處,本發明提供了一種基於重組文件元數據實現快速文件切割和合併的方法。
[0019]為了解決以上技術問題,本發明採用的技術方案是:一種基於重組文件元數據實現快速文件切割和合併的方法,其實施步驟如下:
[0020]1、擴展原有的POSIX文件操作接口,新增文件切割和合併接口 SplitFiIe:char*newFiIeName, char*srcFiIeName, bool changeSrcFile, uint64offset,uint641ength ;
[0021]參數說明:newFileName:切割後生成新文件的路徑
[0022]srcFileName:被切割文件的路徑
[0023]changeSrcFile:是否修改被切割文件的大小
[0024]offset:被切割文件的起始位置
[0025]length:被切割文件的切割長度
[0026]功能說明:將srcFileName文件從位置offset開始,長度為length的部分切割出來生成一個新的文件newFileName,切割後新生成的文件大小為length ;MergeFile:char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…;
[0027]參數說明:newFileName:合併後生成新文件的路徑
[0028]deleteSubFile:是否刪除被合併文件
[0029]subFilel:被合併文件 I
[0030]SubFile2:被合併文件 2
[0031]subFile3:被合併文件 3
[0032]功能說明:將subFilel、subFile2、subFile3等按照先後順序合併成新文件newFileName,合併後新文件的大小是這些文件的總和;
[0033]I1、這兩個擴展接口通過1CTL的方式與作業系統內核進行交互;
[0034]II1、SplitFile接口的工作流程如下:
[0035]a、應用程式調用SplitFile接口,作業系統打開需要切割的源文件;
[0036]b、打開成功後,通過1CTL的方式將新文件名newFileName,以及offset、length參數傳到作業系統內核文件系統層;
[0037]C、文件系統層根據參數,生成一個新的空文件,然後根據源文件的數據塊映射信息中中需要切割的部分的塊映射信息生成新文件的塊映射信息,根據參數如果是直接改變源文件的內容,則修改源文件的塊映射信息,如果是不改變源文件的內容,則將OSD中的塊映射信息引用計數加I ;
[0038]d、對於引用計數當修改這類引用計數大於I的數據塊時採用CopyOnWrite的方式,生成新的OSD數據塊;
[0039]e、修改源文件和新文件屬性中的大小,給應用返回成功;
[0040]IV、MergeFile接口的工作流程如下:
[0041]a、應用程式調用MergeFile接口,先向文件系統中創建一個NewFileName的空文件;
[0042]b、創建成功後,通過1CTL的方式,將需要合併的文件參數發送到作業系統內核文件系統層;
[0043]C、文件系統層根據需要合併的文件信息,依次獲取它們的數據塊分布信息,將這些分部信息寫入到新文件的數據快分布信息中,如果deleteSubFile為TRUE,則刪除所有的被合併文件的元數據信息;如果deleteSubFile為FALSE,則修改所有的相關OSD的數據塊映射信息,使得引用計數加I ;
[0044]d、設置新文件的大小,給應用返回成功。
[0045]本發明的有益效果為:
[0046]1、給需要進行文件切割、合併的應用帶來方便;
[0047]2、消除了文件切割和合併過程中的拷貝開銷,這對分布式文件系統來說非常有效,消除了大量的I/o操作;
[0048]3、大幅度提升了文件切割和合併這類應用的性能。

【專利附圖】

【附圖說明】
[0049]圖1為本發明的文件切割SplitFile原理框圖。
[0050]圖2為本發明的文件合併原理框圖。

【具體實施方式】
[0051]下面結合附圖和【具體實施方式】對本發明作進一步詳細的說明。
[0052]如圖1、圖2所示,本發明提出了一種新的文件切割和合併的實現方法,用來提高分布式文件系統對這類應用支持的效率,已達到不需要拷貝內容的方式實現文件的切割和合併,本方法是基於以下幾點來實現的,其實施步驟如下:
[0053]1、擴展原有的POSIX文件操作接口,新增文件切割和合併接口SplitFile(char*newFiIeName, char*srcFiIeName, bool changeSrcFile, uint64offset,uint641ength);
[0054]參數說明:newFileName:切割後生成新文件的路徑
[0055]srcFileName:被切割文件的路徑
[0056]changeSrcFile:是否修改被切割文件的大小
[0057]offset:被切割文件的起始位置
[0058]length:被切割文件的切割長度
[0059]功能說明:將srcFileName文件從位置offset開始,長度為length的部分切割出來生成一個新的文件newFileName,切割後新生成的文件大小為length。MergeFile(char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…);
[0060]參數說明:newFileName:合併後生成新文件的路徑
[0061]deleteSubFile:是否刪除被合併文件
[0062]subFilel:被合併文件 I
[0063]subFile2:被合併文件 2
[0064]SubFile3:被合併文件 3
[0065]功能說明:將subFilel、subFile2、subFile3等按照先後順序合併成新文件newFileName,合併後新文件的大小是這些文件的總和。
[0066]2、這兩個擴展接口通過1CTL的方式與作業系統內核進行交互。
[0067]3、SplitFile接口的工作流程如下:
[0068]a、應用程式調用SplitFile接口,作業系統打開需要切割的源文件。
[0069]b、打開成功後,通過1CTL的方式將新文件名newFileName,以及offset、length參數傳到作業系統內核文件系統層。
[0070]C、文件系統層根據參數,生成一個新的空文件,然後根據源文件的數據塊映射信息中中需要切割的部分的塊映射信息生成新文件的塊映射信息,根據參數如果是直接改變源文件的內容,則修改源文件的塊映射信息,如果是不改變源文件的內容,則將OSD中的塊映射信息引用計數加I。
[0071]d、對於引用計數當修改這類引用計數大於I的數據塊時採用CopyOnWrite的方式,生成新的OSD數據塊。
[0072]e、修改源文件和新文件屬性中的大小,給應用返回成功。
[0073]4、MergeFile接口的工作流程如下:
[0074]a、應用程式調用MergeFile接口,先向文件系統中創建一個NewFileName的空文件。
[0075]b、創建成功後,通過1CTL的方式,將需要合併的文件參數發送到作業系統內核文件系統層。
[0076]C、文件系統層根據需要合併的文件信息,依次獲取它們的數據塊分布信息,將這些分部信息寫入到新文件的數據快分布信息中,如果deleteSubFile為TRUE,則刪除所有的被合併文件的元數據信息;如果deleteSubFile為FALSE,則修改所有的相關OSD的數據塊映射信息,使得引用計數加I。
[0077]d、設置新文件的大小,給應用返回成功。
[0078]實施例:
[0079]如在視頻轉碼打包應用中,利用集群對多個視頻片段進行轉碼,最終將轉碼好的多個片段再合併成一個文件,合併文件的過程本質上就是一個拷貝過程,如果在合併過程中文件系統能夠提供一個快速的切割和合併的接口,會大大提供整個系統的效率。
[0080]實施例1:將某個大的視頻文件中,從一個1GB的視屏文件Filel中剪輯出兩個大小2GB的視頻片段且不改變原來的視頻文件Filel,一個是源文件中的0-2GB的部分File2,另一個是源文件中4-6GB的部分File3。
[0081]使用SplitFile (File2,Filel,FALSE,0,2GB)切割生成 File2,再調用SplitFile (File3,Filel,FALSE, 4GB,2GB)切割生成File3。通過這樣的操作大幅提高了切割性能,將原來需要幾分鐘完成的事情在一秒鐘就可以完成。
[0082]實施例2:有兩個視頻文件Filel和File2,需要合成一個視屏文件File3且不改變視頻文件Filel和File2 ;
[0083]直接使用MergeFile (File3,FALSE,Filel,File2)即可。
[0084]實施例3:有兩個1GB大小的視頻文件Filel和File2,需要剪輯合成一個視屏文件File3,視屏文件File3,大小為6GB,其中前面2GB來源於Filel的0-2GB,後4GB來源於File2的0-4GB,要求修改後保持原來的Filel和File2不變;
[0085]1、使用 SplitFile (subFilel, Filel, FALSE, 0,2GB)切割生成 subFilel ;
[0086]2、使用 SplitFile (subFile2, File2, FALSE, 0,4GB)切割生成 subFile2 ;
[0087]3、使用 MergeFile (File3, TRUE, subFilel, subFile2)合成生成 File3。
【權利要求】
1.一種基於重組文件元數據實現快速文件切割和合併的方法,其特徵在於:其實施步驟如下: 1、擴展原有的POSix文件操作接口,新增文件切割和合併接口SplitFile:char*newFiIeName, char*srcFiIeName, bool changeSrcFiIe, uint64offset,uint641ength ; 參數說明:newFileName:切割後生成新文件的路徑
srcFi IeName:被切割文件的路徑
changeSrcFile:是否修改被切割文件的大小
offset:被切割文件的起始位置
length:被切割文件的切割長度 功能說明:將srcFileName文件從位置offset開始,長度為length的部分切割出來生成一個新的文件newFileName,切割後新生成的文件大小為length ;MergeFile:char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…; 參數說明:newFileName:合併後生成新文件的路徑
deleteSubFile:是否刪除被合併文件
subFilel:被合併文件I
subFi Ie2:被合併文件2
subFi Ie3:被合併文件3 功能說明:將subFilel、subFile2、subFile3等按照先後順序合併成新文件newFileName,合併後 新文件的大小是這些文件的總和; I1、這兩個擴展接口通過1CTL的方式與作業系統內核進行交互; II1、SplitFile接口的工作流程如下: a、應用程式調用SplitFile接口,作業系統打開需要切割的源文件; b、打開成功後,通過1CTL的方式將新文件名newFileName,以及offset、length參數傳到作業系統內核文件系統層; C、文件系統層根據參數,生成一個新的空文件,然後根據源文件的數據塊映射信息中中需要切割的部分的塊映射信息生成新文件的塊映射信息,根據參數如果是直接改變源文件的內容,則修改源文件的塊映射信息,如果是不改變源文件的內容,則將OSD中的塊映射信息引用計數加I ; d、對於引用計數當修改這類引用計數大於I的數據塊時採用CopyOnWrite的方式,生成新的OSD數據塊; e、修改源文件和新文件屬性中的大小,給應用返回成功; IV、MergeFile接口的工作流程如下: a、應用程式調用MergeFile接口,先向文件系統中創建一個NewFileName的空文件; b、創建成功後,通過1CTL的方式,將需要合併的文件參數發送到作業系統內核文件系統層; C、文件系統層根據需要合併的文件信息,依次獲取它們的數據塊分布信息,將這些分部信息寫入到新文件的數據快分布信息中,如果deleteSubFile為TRUE,則刪除所有的被合併文件的元數據信息;如果deleteSubFile為FALSE,則修改所有的相關OSD的數據塊映射信息,使得引用計數加I ; d、設置新文 件的大小,給應用返回成功。
【文檔編號】G06F17/30GK104077409SQ201410332471
【公開日】2014年10月1日 申請日期:2014年7月14日 優先權日:2014年7月14日
【發明者】丁亞軍 申請人:北京龍存科技有限責任公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀