一種共享文件系統(tǒng)多文件快速聚合和讀取的方法
【專利摘要】本發(fā)明涉及一種共享文件系統(tǒng)多文件快速聚合和讀取的方法,包括:多文件快速聚合;打開文件;獲取元數(shù)據(jù);讀取或修改文件;關閉文件。“多文件快速聚合”包括:檢測聚合子文件有效性;檢測聚合是否為追加聚合;創(chuàng)建聚合文件;建立聚合文件與聚合子文件映射關系;處理聚合子文件。“獲取元數(shù)據(jù)的步驟”包括:開辟存儲空間;選擇處理;檢測獲取元數(shù)據(jù)的文件是否為聚合文件;獲取聚合文件與聚合子文件映射關系;獲取元數(shù)據(jù)。本發(fā)明通過快速聚合方法將多個客戶端產生的文件在短時間內快速聚合成一個大文件或將多個文件快速追加聚合到已存在大文件后面,在聚合過程中不產生文件拷貝工作,快速聚合的文件和使用物理聚合方法后生成的文件完全相同。
【專利說明】一種共享文件系統(tǒng)多文件快速聚合和讀取的方法
【技術領域】
[0001]本發(fā)明涉及一種共享文件系統(tǒng)多文件快速聚合和讀取的方法,是一種應用于共享文件系統(tǒng)視音頻領域分布式轉碼、分布式打包等集群計算產生多個文件進行快速聚合的方法,是一種適用于廣電應用領域的共享文件系統(tǒng)下的多文件快速聚合的方法。
【背景技術】
[0002]目前,通用的共享文件系統(tǒng)由元數(shù)據(jù)服務器(MDS)、共享存儲和多客戶端通過LAN網(wǎng)絡和SAN網(wǎng)絡組成,元數(shù)據(jù)服務器和客戶端都可以通過FC或ISCSI協(xié)議直接訪問共享存儲,分別為FC-SAN和IP-SAN架構。SAN網(wǎng)絡由于是光纖傳輸,帶寬、容量大、速度快,常用來傳輸數(shù)據(jù)量巨大的文件,如:視頻文件。
[0003]SAN共享文件系統(tǒng)中的元數(shù)據(jù)是描述數(shù)據(jù)組織方法的數(shù)據(jù)結構,元數(shù)據(jù)主要記錄了 SAN共享文件系統(tǒng)中該文件在塊設備上的劃分方法、存放位置以及文件的一些相關屬性等。SAN共享文件系統(tǒng)通過元數(shù)據(jù)將連續(xù)的塊設備存儲組織成文件結構,元數(shù)據(jù)的大小與文件數(shù)據(jù)相比很小,所以不需要很高的傳輸帶寬,所以用LAN網(wǎng)絡傳輸。SAN共享文件系統(tǒng)上的元數(shù)據(jù)信息由元數(shù)據(jù)服務器統(tǒng)一管理。客戶端在LAN網(wǎng)絡下通過tcp/ip協(xié)議與元數(shù)據(jù)服務器相連并通訊。
[0004]SAN文件系統(tǒng)已廣泛應用于廣播電視節(jié)目的后期制作中,包括其中的一個重要應用場景:多個客戶端可以同時對SAN共享文件系統(tǒng)中的文件進行存取操作,比如轉碼系統(tǒng)、打包系統(tǒng)。該系統(tǒng)是節(jié)目制作流程中的必經(jīng)環(huán)節(jié),同時也是計算高度密集型的應用,尤其面對當前的高清制作,需要耗費大量的計算時間,影響節(jié)目的制作效率。為此,利用分布式計算的分布式打包/轉碼技術應運而生,該技術使用SAN共享文件系統(tǒng)進行集群計算應用,與單機運算相比大幅縮短了運算時間。但該技術目前普遍存在一點不足,即集群計算結束后,每個客戶端都會在共享存儲上生成一個新的文件,這時需要在某個客戶端上分別讀取每個文件到客戶端本地,然后在本地客戶端對這些文件進行物理聚合,生成新的聚合大文件,最后把聚合生成的大文件再寫到共享存儲上,供其他客戶端進行訪問。這一使用分布式技術帶來的額外的物理聚合的過程需要消耗很長的聚合時間,而且一旦進行集群計算的節(jié)點非常多,就會產生大量的待聚合的文件,從而進行聚合所耗費的時間也就越長。同時,如果在使用此種物理聚合方法,將會占用非常長的聚合時間,使得整個SAN網(wǎng)絡運行變慢,長時間降低了元數(shù)據(jù)服務器對外提供服務的存儲帶寬。不僅如此,物理聚合需要對每個文件進行一次讀操作,同時對新生成的物理聚合文件進行一次到共享存儲(通常是磁盤陣列)的寫操作,這些文件的讀寫操作也大量占用了磁盤陣列的輸入輸出能力和SAN網(wǎng)絡的傳輸帶寬。
【發(fā)明內容】
[0005]克服現(xiàn)有技術的問題,本發(fā)明的目的是提出一種共享文件系統(tǒng)多文件快速聚合和讀取的方法。所述的方法是在集群計算結束后,通過特定的聚合方法將多個客戶端產生的文件在短時間內快速聚合成一個大文件或將多個文件快速追加聚合到已存在大文件后面,在聚合過程中不產生文件實際內容的拷貝工作,同時對客戶端而言,此快速聚合的文件和使用物理聚合方法后生成的文件在讀取和寫入時的操作完全相同,大大縮短了文件聚合占用的時間。
[0006]本發(fā)明的目的是這樣實現(xiàn)的:
一種共享文件系統(tǒng)多文件快速聚合方法,所述的方法中所使用的硬件系統(tǒng)包括:多個客戶端通過傳輸大體積文件的高速網(wǎng)絡與元數(shù)據(jù)服務器和磁盤列陣連接,所述的多個客戶端同時還通過傳輸元數(shù)據(jù)和控制及交互信息的網(wǎng)絡與元數(shù)據(jù)服務器連接,所述方法的步驟如下:
生成子文件的步驟:多個客戶端按照預設的聚合規(guī)則分別執(zhí)行同一處理任務的不同部分,每部分生成為一個獨立的子文件;
多文件快速聚合的步驟:共享文件系統(tǒng)對需要聚合的的多個子文件進行有效檢查并快速的進行“邏輯聚合”,把多個子文件快速聚合或快速追加聚合成一個聚合大文件。
[0007]進一步的,上述的“多文件快速聚合的步驟”包括以下子步驟:
檢測聚合子文件有效性的子步驟:文件系統(tǒng)在進行文件快速聚合時檢測所有需要聚合的子文件有效性以及是否滿足聚合規(guī)則,如果“否”則退出多文件快速聚合步驟,如果“是”則進入下一子步驟;
檢測聚合是否為追加聚合的子步驟:文件系統(tǒng)在進行文件快速聚合時檢測聚合是否是在原來聚合文件的基礎上進行追加聚合,如果為追加聚合需要檢測已存在聚合文件是否滿足追加聚合規(guī)則,如果是追加聚合且滿足追加聚合規(guī)則進入建立聚合文件與聚合子文件映射關系的子步驟,否則如果是追加聚合但不滿足追加聚合規(guī)則就退出多文件快速聚合步驟;如果不是追加聚合則進入下一子步驟;
創(chuàng)建聚合文件的子步驟:根據(jù)客戶端請求的聚合文件信息和各子文件屬性信息創(chuàng)建聚合文件,并計算聚合文件的相關屬性信息;
建立聚合文件與聚合子文件映射關系的子步驟:根據(jù)需要聚合的每個子文件相關屬性信息,更新聚合文件的相關屬性信息,建立聚合文件和每個子文件的映射關系。
[0008]進一步的,上述的多文件快速聚合的步驟還包括處理聚合子文件的子步驟:聚合完成后,對聚合子文件進行處理,使客戶端不再查看到聚合子文件信息。
[0009]進一步的,上述的“生成子文件的步驟”包括如下子步驟:
處理任務分配的子步驟:將同一處理任務根據(jù)聚合規(guī)則的的要求拆分成多個子處理任務,將子任務分派給不同的客戶端執(zhí)行;
計算子文件的子步驟:多個客戶端對分配的子處理任務執(zhí)行分布式計算,生成各自對應的子文件;在子文件的封裝過程中如果子文件長度不是文件系統(tǒng)塊大小的整數(shù)倍,必要時對不足位補空白數(shù)據(jù)。
[0010]進一步的,上述共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,所述的聚合規(guī)則包括子文件的大小為文件系統(tǒng)塊的整數(shù)倍;
進一步的,上述共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,所述的計算包括編碼格式轉換和/或渲染合成;
進一步的,上述共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,所述的分別生成的方式為使用分布式計算的方式生成; 進一步的,上述共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,如果處理任務是轉碼任務或者打包任務,生成的目標文件的視頻壓縮編碼選用固定碼率的編碼方式;
一種述共享文件系統(tǒng)多文件快速聚合文件的讀取方法,該方法的步驟包括:
打開文件的步驟:用于客戶端向元數(shù)據(jù)服務器發(fā)出請求,要求打開磁盤陣列中待讀取的文件;
處理元數(shù)據(jù)的步驟:客戶端根據(jù)待讀取文件的內容,向元數(shù)據(jù)服務器申請獲取待讀取文件所對應的元數(shù)據(jù),客戶端獲取相應元數(shù)據(jù),同時客戶端接受分配給自己的機會鎖;
讀取文件的步驟:客戶端獲取元數(shù)據(jù)段,并根據(jù)所獲得的元數(shù)據(jù)段,對磁盤陣列發(fā)起讀取文件的塊數(shù)據(jù)請求,以完成該元數(shù)據(jù)段對應塊數(shù)據(jù)讀取操作,循環(huán)的申請元數(shù)據(jù)段和讀取元數(shù)據(jù)段對應的塊數(shù)據(jù),直至完成所需數(shù)據(jù)的讀?。?br>
文件關閉的步驟:客戶端向元數(shù)據(jù)服務器發(fā)出要求,關閉已打開的讀取文件句柄,完成本次文件讀取。
[0011]進一步的,上述的“處理元數(shù)據(jù)的步驟”中元數(shù)據(jù)服務器在正常處理客戶端請求待操作文件的元數(shù)據(jù)外還需要另外檢測獲取元數(shù)據(jù)的文件是否為聚合文件,包括以下子步驟:
開辟存儲空間的子步驟:用于客戶端在本地內存或硬盤中開辟用于存儲元數(shù)據(jù)的存儲空間;
選擇處理的子步驟:用于客戶端對元數(shù)據(jù)申請請求選擇是放在后臺隊列等待還是實時處理,如果是后臺等待則將元數(shù)據(jù)申請請求放入元數(shù)據(jù)請求隊列中等待,如果是實時處理則進入下一子步驟;
檢測獲取元數(shù)據(jù)的文件是否聚合文件的子步驟:用于元數(shù)據(jù)服務器檢測客戶端發(fā)起獲取元數(shù)據(jù)請求的文件是否為聚合文件,如果“否”則進入“獲取元數(shù)據(jù)的子步驟”,如果“是”則進入下一子步驟;
獲取聚合文件與聚合子文件映射關系子步驟:根據(jù)客戶端請求的聚合文件的元數(shù)據(jù)信息,獲取與之相對應聚合子文件的映射關系;
獲取元數(shù)據(jù)的子步驟:根據(jù)請求獲取相對應文件的元數(shù)據(jù)返回給客戶端。
[0012]本發(fā)明產生的有益效果是:本發(fā)明所述的方法,在進行集群計算時,通過特定的快速聚合方法可以將多個客戶端產生的文件在短時間內快速聚合成一個大文件或將多個文件快速追加聚合到已存在大文件后面,在聚合過程中不會產生文件拷貝工作,同時對客戶端而言,此快速聚合的文件和使用物理聚合方法后的文件完全相同。本發(fā)明有效地縮短了共享文件系統(tǒng)應用到計算時多個文件的聚合時間,而且聚合文件數(shù)量越多,效果越加明顯,對于常見的視音頻處理中的轉碼或者打包合成處理,在很大程度上提高了分布式轉碼/打包的效率。同時也提高了集群計算速度,降低了數(shù)據(jù)存儲帶寬。由于在廣播電視行業(yè)的應用中,會頻繁的使用分布式轉碼/分布式打包的操作,本發(fā)明通過進一步提高分布式打包/轉碼的效率,帶來了電視節(jié)目整體制作流程上的效率提升,尤其是對目前的高清節(jié)目制作意義尤其重大。使得分布式轉碼或者打包合成在各子任務完成后,不必等待漫長的文件物理合并操作,而是直接幾乎是瞬間完成邏輯合并,并將邏輯合并后的文件提交后續(xù)的審片或者播出使用,滿足了現(xiàn)代傳媒機構第一時間傳遞信息的需求。
【專利附圖】
【附圖說明】
[0013]下面結合附圖和實施例對本發(fā)明作進一步說明。
[0014]圖1是發(fā)明實施例一所述共享文件系統(tǒng)文件快速聚合方法所使用的硬件系統(tǒng)的示意圖;
圖2是發(fā)明實施例一所述共享文件系統(tǒng)文件快速聚合方法的流程圖。
[0015]圖3是發(fā)明實施例一所述的讀取聚合文件方法的流程圖。
[0016]圖4是發(fā)明實施例一所述的處理元數(shù)據(jù)步驟的流程示意圖。
【具體實施方式】
[0017]實施例一:
本實施例是一種共享文件系統(tǒng)多文件快速聚合以及讀取該聚合文件的方法。所述的方法所使用的硬件系統(tǒng)包括:多個客戶端(圖1中只畫出了 3個客戶端,在實際中可以有更多的客戶端)通過傳輸視頻文件的SAN網(wǎng)絡(圖1中粗實線和雙線表示)與元數(shù)據(jù)服務器和磁盤列陣連接,所述的多個客戶端通過傳輸元數(shù)據(jù)的LAN網(wǎng)絡(圖1中用細實線表示)與元數(shù)據(jù)服務器連接,如圖1所示。
[0018]其中客戶端可以是普通的PC機工作站,也可以是服務器,具有連接SAN網(wǎng)絡的能力,并可以處理大型的文件,例如高清晰度視頻文件。本實施例所述的SAN網(wǎng)絡是由光纖交換機和光纜組成的光纖網(wǎng),是帶寬超過1G的寬帶網(wǎng)絡,可以傳輸高清晰度的視頻文件,也可以用千Μ或萬Μ的高速以太網(wǎng)構成SAN網(wǎng)絡。本實施例所述的LAN網(wǎng)絡是由以太交換機組成并使用TCP/IP為通訊協(xié)議的以太網(wǎng),具有數(shù)百Μ的帶寬,可以快速的傳輸元數(shù)據(jù)文件和控制及任務交互信息。在通常情況下為了避免元數(shù)據(jù)服務器出現(xiàn)問題而影響整個SAN系統(tǒng)的正常運行,可增加一臺備用的元數(shù)據(jù)服務器,即兩臺元數(shù)據(jù)服務器,使其互為備份,在同步數(shù)據(jù)的基礎上實現(xiàn)元數(shù)據(jù)服務器冗余。系統(tǒng)中的共享存儲設備通常使用磁盤陣列,磁盤陣列通過SAN網(wǎng)絡與客戶端與元數(shù)據(jù)服務器相連,客戶端和元數(shù)據(jù)服務器可以通過fc協(xié)議或iscsi協(xié)議對其進行訪問。
[0019]本實施例的基本思路是:在進行分布式計算時,多個客戶端按照預設的聚合規(guī)則生成多個文件,之后通過特定的快速聚合方法將多個客戶端產生的文件在短時間內快速聚合成一個大文件或將多個文件快速追加聚合到已存在大文件后面,在聚合過程中不產生文件拷貝工作,同時對客戶端而言,此快速聚合生成的文件和使用物理聚合方法后生成的文件完全相同。特別適合于分布式轉碼、打包的大數(shù)據(jù)量內容經(jīng)過分布式計算生成并合并為一個文件后,供多客戶端共享訪問的情形。本實施例所述方法可表述為:多個客戶端服務器在進行集群計算后,會在共享存儲內生成多個文件,分別為filel,file2, file3,…,fileN,大小分別為Ml,M2,M3,…,MN,通過SAN文件系統(tǒng)使用特定的聚合方法將多個文件filel,file2, file3,…,fileN在短時間內快速聚合成一個新的大文件,名稱為mergefile,文件大小為M1+M2+M3+…+MN,是被聚合的多個文件的大小之和,同時,快速聚合生成的文件與使用物理聚合方法后生成的文件包括文件大小及其他屬性完全相同。這樣,就大大降低了聚合多個文件使用的時間,同時也降低存儲的帶寬使用率。在通常的SAN系統(tǒng)中多個文件使用物理聚合方法過程中,需要在一個客戶端內分別讀取文件filel,file2,file3,…,fileN到客戶端本地,然后在本地對filel,file2,file3,…,fileN進行物理聚合,生成文件mergefile,最后把聚合生成的文件mergefile再寫到共享存儲上,供其他客戶端進行訪問。而本實施例則在共享存儲上對多個文件filel,file2,file3,…,fileN進行“邏輯聚合”,在“邏輯聚合”過程中,所有文件始終存在于共享存儲中,不會對文件進行拷貝和讀取工作。以此可有效地縮短了 SAN共享系統(tǒng)應用到集群計算時多個文件的聚合時間,而且聚合文件數(shù)量越多,優(yōu)勢越加明顯。同時也提高了集群計算速度,降低了聚合過程中對磁盤陣列數(shù)據(jù)存儲帶寬的占用,同時降低了對SAN網(wǎng)絡的傳輸帶寬的占用,使得同樣的磁盤陣列和SAN網(wǎng)絡可以支持更多的客戶端共享使用。最關鍵的是,由于邏輯聚合過程沒有發(fā)生實際的文件拷貝,可以在瞬間完成,從而為電視節(jié)目快速審核播出節(jié)省了非常寶貴的時間,在高清節(jié)目文件體積巨大的情況下,這種后臺技術處理占用時間的節(jié)省意義尤其重大。
[0020]本實施例所述共享文件系統(tǒng)中實現(xiàn)多文件快速聚合方法的具體過程步驟如下:
1、多個子文件生成的步驟:用于客戶端將同一處理任務根據(jù)聚合規(guī)則的的要求拆分成多個子處理任務,將子任務分派給不同的客戶端執(zhí)行;多個客戶端對分配的子處理任務執(zhí)行分布式計算,生成各自對應的子文件;在子文件的封裝過程中如果子文件長度不是文件系統(tǒng)塊大小的整數(shù)倍,必要時對不足位補空白數(shù)據(jù)。生成的多個子文件通過SAN網(wǎng)絡寫入到共享存儲上。具體實現(xiàn)上包括:
(1)、用于客戶端將同一處理任務根據(jù)聚合規(guī)則的的要求拆分成多個子處理任務,將子任務分派給不同的客戶端執(zhí)行;通常情況下一個大的計算任務通過一臺有管理權限的客戶端分派成多個子任務,交給多臺客戶端同時并行計算完成,其中分配任務的過程,就需要預先根據(jù)局和規(guī)則的要求對計算任務進行拆分,以便各執(zhí)行子計算任務的客戶端最終生成的子文件滿足快速聚合要求。舉例來說,對于一個時間長度為2小時的節(jié)目進行轉碼,管理客戶端根據(jù)目前空閑的客戶端數(shù)量,把2個小時的節(jié)目的不同部分分派給不同的客戶端同時執(zhí)行轉碼計算,分別生成對應于不同部分的子文件。
[0021]任務的拆分既要滿足到各客戶端執(zhí)行計算的工作量大致相同,以便在最短的時間內同時完成轉碼任務,交給下一個工作環(huán)節(jié)使用;又要滿足快速聚合時,除了最后一個子文件外,其余的子文件的大小必須是文件系統(tǒng)塊大小的整數(shù)倍。通常情況下,對于轉碼的目標文件的視頻編碼為固定碼率的壓縮編碼格式,比較容易確定每一段轉碼后的文件大小,從而拆分任務相對容易實現(xiàn)一些。對于有些視音頻文件封裝格式,允許在實際的每幀視音頻數(shù)據(jù)末尾添加空白的填充數(shù)據(jù),從而達到子文件大小為文件系統(tǒng)塊大小的整數(shù)倍的要求。所以對于轉碼任務或者打包合成任務,如果希望最后使用快速文件聚合提高文件合并的效率,可以選擇目標文件的視頻編碼為固定碼率的壓縮編碼格式,視音頻文件的封裝格式為AVI或者MXF 0P1A。。對于不允許在視音頻數(shù)據(jù)中間添加空白填充數(shù)據(jù)的文件封裝格式,需要管理客戶端嚴格計算每一幀數(shù)據(jù)末尾的文件大小,找到恰好可以滿足子文件大小為文件系統(tǒng)塊大小的整數(shù)倍的入點和出點,從而形成子計算任務交給其他客戶端執(zhí)行。
[0022]對于有N臺可以執(zhí)行子任務的客戶端的情況下,既可以把計算任務分為N份,每一臺客戶端執(zhí)行其中一個計算任務,生成N個子文件進行快速合并,這種情況通常是所有客戶端都完成計算任務時,由管理客戶端向文件系統(tǒng)申請文件快速聚合;也可以生成遠多于N的Μ個子任務,各客戶端從前到后依次執(zhí)行子任務,管理客戶端隨時監(jiān)測子文件的生成情況,并隨時向文件系統(tǒng)提交快速文件聚合請求。這種情況下往往是子文件的追加聚合,當全部子任務都執(zhí)行完成時,最終的快速聚合文件才可以提交給下一個環(huán)節(jié)使用。
[0023](2)、計算子文件的子步驟:多個客戶端對分好段的內容執(zhí)行分布式計算,編碼格式采用固定碼率的視頻壓縮編碼方式,,生成文件過程中按照文件系統(tǒng)塊大小的整數(shù)倍生成文件,不足位補空白數(shù)據(jù)。為了使得生成的子文件符合預設的大小,需要在編碼的過程中確定生成數(shù)據(jù)的大小,如果正好滿足生成的文件是文件系統(tǒng)塊大小整數(shù)倍的要求就直接封裝成文件;如果不滿足,則在該數(shù)據(jù)后面補充空白數(shù)據(jù)來滿足。由于計算任務拆分時已經(jīng)考慮到了快速聚合規(guī)則的要求,客戶端只需要執(zhí)行子任務并在必要的時候補充空白數(shù)據(jù)即可生成滿足需要的子文件。
[0024]2.準備多文件快速聚合的步驟:用于提取各個準備聚合的子文件的信息。
[0025]3、多文件快速聚合的步驟:用于文件系統(tǒng)對需要聚合的多個子文件進行有效檢查并快速的進行“邏輯聚合”,把多個聚合子文件快速聚合或快速追加聚合成一個聚合大文件。
[0026]本步驟與傳統(tǒng)的物理聚合方法的差別在于:傳統(tǒng)的物理聚合方法是通過拷貝方式完成,首先讀取需要聚合的第一個文件,然后按照聚合順序依次讀取其他文件,直到把所有文件都聚合完成。而本步驟則不會使用拷貝方式,通過建立聚合文件與聚合子文件的映射關系進行快速的“邏輯聚合”。因此,本步驟所述的多文件快速聚合步驟包括以下子步驟:
(1)檢測聚合子文件有效性的子步驟:用于文件系統(tǒng)在進行文件快速聚合時檢測所有需要聚合的子文件有效性以及是否滿足聚合規(guī)則,如果“否”則退出多文件快速聚合步驟,如果“是”則進入下一子步驟。
[0027]本子步驟是一個判斷的步驟,判斷所有需要進行聚合的子文件是否有效以及是否符合聚合規(guī)則。對于所有需要聚合的子文件必須滿足文件系統(tǒng)一些規(guī)則,也就是除最后一個聚合子文件,其他所有聚合子文件的大小都必須是文件系統(tǒng)塊大小的整數(shù)倍,并且保證沒有其他客戶端操作這些子文件,這樣才能保證聚合后的文件能夠被客戶端正確訪問。由于使用的是“邏輯聚合”,聚合過程中,不會進行文件的位置改變和拷貝等工作,這就要求除了最后一個聚合子文件,其他聚合子文件的大小都必須滿足是文件系統(tǒng)塊大小的整數(shù)倍,否則聚合的文件會出現(xiàn)“空洞”,導致文件在讀取過程會出現(xiàn)問題。因此,本步驟主要用于文件系統(tǒng)在進行文件快速聚合時檢測所有需要聚合的子文件是否有效以及是否滿足聚合規(guī)貝U,如果不滿足聚合規(guī)則就要退出快速文件聚合步驟。
[0028](2)檢測聚合是否為追加聚合的子步驟:用于文件系統(tǒng)在進行文件快速聚合時檢測聚合是否是在原來聚合文件的基礎上進行追加聚合,如果為追加聚合需要檢測已存在聚合文件是否滿足追加聚合規(guī)則,如果是追加聚合且滿足追加聚合規(guī)則就更新聚合文件的相關屬性信息,進入建立聚合文件與聚合子文件映射關系的子步驟,否則退出多文件快速聚合;如果不是追加聚合則進入下一子步驟。
[0029]在追加聚合過程中,必須確保已經(jīng)存在聚合文件中的最后一個聚合子文件的大小必須滿足是文件系統(tǒng)塊大小的整數(shù)倍,否則追加聚合后的文件會出現(xiàn)“空洞”,導致文件在讀取過程會出現(xiàn)問題。本子步驟是一個判斷的步驟,判斷所進行聚合是否為追加聚合,如果為追加聚合,則已存在的聚合大文件需要滿足SAN文件系統(tǒng)一些規(guī)則,也就是已存在聚合文件中的最后一個聚合子文件大小必須是文件系統(tǒng)塊大小的整數(shù)倍,這樣才能保證其他聚合子文件追加聚合到的已存在聚合大文件上。滿足以上條件,就可以正確的對所有需要聚合的文件進行聚合或追加聚合,否則就要退出多文件快速聚合。
[0030](3)創(chuàng)建聚合文件的子步驟:根據(jù)客戶端請求的聚合文件信息和各子文件屬性信息創(chuàng)建聚合文件,并計算聚合文件的相關屬性信息。這里的屬性信息主要是指聚合文件的文件大小信息,通過計算各子文件大小之和可得。
[0031](4)建立聚合文件與聚合子文件映射關系的子步驟:根據(jù)需要聚合的每個子文件相關屬性信息,建立聚合文件和每個子文件的映射關系。
[0032]本子步驟是多文件快速聚合的關鍵步驟,聚合文件是否能夠正確訪問取決于該子步驟。因為對聚合文件使用的“邏輯聚合”方式,實際上在文件系統(tǒng)中,每個子文件都是分散獨立存在的,與其他子文件和聚合文件都是沒有關系的。這樣在訪問聚合文件時,就必須通過某種方式把聚合文件和所有各子文件之間建立關系,才能正常的訪問整個聚合文件。這里通過索引的方式為聚合文件和子文件建立映射關系,在索引文件內首先保存聚合文件的信息,包括聚合文件名稱、大小以及聚合文件的個數(shù),然后依次保存每個子文件的名稱信息、該子文件在聚合文件中的偏移量以及該子文件的大小。這樣,在訪問聚合文件時,通過被訪問的聚合文件偏移量就可以很快的準確定位到相應子文件,然后通過讀取子文件相應信息完成對聚合文件的訪問。
[0033](5)處理聚合子文件的子步驟:聚合完成后,對聚合子文件進行處理,使客戶端不再查看到聚合子文件信息。聚合完成后,對聚合過的子文件進行特殊標記處理,也就是在文件系統(tǒng)的元數(shù)據(jù)服務器端隱藏被聚合過的子文件,使得客戶端不能對這些聚合過的子文件進行直接訪問。
[0034]本實施例還包括讀取該聚合文件的方法,該方法包括如下步驟:
1、打開文件的步驟:用于客戶端向元數(shù)據(jù)服務器發(fā)出請求,要求打開磁盤陣列中待讀取的文件。本步驟是基本步驟,當用戶需要讀取一個文件的時候,用戶在客戶端打開待操作文件的句柄,客戶端根據(jù)該文件的句柄,向元數(shù)據(jù)服務器發(fā)出相關操作請求。
[0035]2、元數(shù)據(jù)處理的步驟:客戶端根據(jù)待讀取文件的內容,向元數(shù)據(jù)服務器申請獲取待操作文件所對應的元數(shù)據(jù),客戶端獲取相應元數(shù)據(jù)信息,同時客戶端接受分配給自己的機會鎖。
[0036]本步驟與傳統(tǒng)SAN共享文件的獲取元數(shù)據(jù)的差別在于:傳統(tǒng)的SAN文件系統(tǒng)獲取元數(shù)據(jù)方法根據(jù)客戶端請求文件的內容直接獲取該文件內容對應的元數(shù)據(jù)信息,而本步驟則在正常獲取待操作文件的元數(shù)據(jù)之前還需要另外判斷獲取待操作的文件是否為聚合文件。因此,本步驟所述的客戶端處理元數(shù)據(jù)包括以下子步驟:
(1)開辟存儲空間的子步驟:用于客戶端在本地內存或硬盤中開辟用于存儲元數(shù)據(jù)的存儲空間。一般情況雙元數(shù)據(jù)服務器都出現(xiàn)故障的情況不是很多,根據(jù)需要可以在硬盤開辟存儲空間。
[0037](2)選擇處理的子步驟:用于客戶端對元數(shù)據(jù)申請請求選擇是放在后臺隊列等待還是實時處理,如果是后臺等待則將元數(shù)據(jù)申請請求放入元數(shù)據(jù)請求隊列中等待,如果是實時處理則進入下一子步驟。處理文件的讀寫,在客戶端可以同時進行多個,為了提高效率可以開辟多個文件讀寫線程,這樣就會有多個線程的運行隊列,需要處理是就可以從隊列中取出,進行處理。如果是后臺運行,將后面的步驟加入請求隊列,交由先前創(chuàng)建的處理線程處理;如果不是后臺運行,直接在本線程中處理。
[0038](3)檢測獲取元數(shù)據(jù)的文件是否聚合文件的子步驟:用于元數(shù)據(jù)服務器檢測客戶端發(fā)起獲取元數(shù)據(jù)請求的文件是否為聚合文件,如果“否”則進入“獲取元數(shù)據(jù)的子步驟”,如果“是”則進入下一子步驟。本子步驟是一個檢測并判斷的步驟,判斷客戶端請求元數(shù)據(jù)的文件是否為聚合文件,如果請求的為聚合文件的元數(shù)據(jù)信息,則需要根據(jù)聚合文件和聚合子文件映射關系獲取相應子文件元數(shù)據(jù)信息,這種情況下可以進入下一子步驟:如果請求的為非聚合文件的元數(shù)據(jù)信息,則根據(jù)請求直接獲取相應元數(shù)據(jù)信息,進獲取元數(shù)據(jù)的子步驟。
[0039](4)獲取聚合文件與聚合子文件映射關系子步驟:根據(jù)客戶端請求的聚合文件的元數(shù)據(jù),獲取與之相對應聚合子文件的映射關系。
[0040](5)獲取元數(shù)據(jù)的子步驟:用于元數(shù)據(jù)服務器根據(jù)通訊規(guī)則獲取相應操作文件的元數(shù)據(jù),并把元數(shù)據(jù)信息返回給客戶端。獲取一個聚合文件元數(shù)據(jù)與獲取普通文件的元數(shù)據(jù)過程是一樣的,只是在獲取聚合文件元數(shù)據(jù)時需要先判斷該元數(shù)據(jù)信息所對應的子文件,然后獲取該子文件相應的元數(shù)據(jù)信息返回給客戶端,如此循環(huán)直到將所需數(shù)據(jù)的元數(shù)據(jù)信息獲取完畢。至本子步驟,整個“處理元數(shù)據(jù)的步驟”結束。
[0041]3、讀取文件的步驟:用于客戶端獲取元數(shù)據(jù)段,并根據(jù)所獲得的元數(shù)據(jù)段,對磁盤陣列發(fā)起讀取文件的塊數(shù)據(jù)請求,以完成該元數(shù)據(jù)段對應塊數(shù)據(jù)讀取操作,循環(huán)的申請元數(shù)據(jù)段和讀取元數(shù)據(jù)段對應的塊數(shù)據(jù),直至完成所需數(shù)據(jù)的讀取。
[0042]4、關閉文件的步驟:用于客戶端向元數(shù)據(jù)服務器發(fā)出要求,關閉已打開的操作文件句柄,完成本次文件讀取。
[0043]最后應說明的是,以上僅用以說明本發(fā)明的技術方案而非限制,盡管參照較佳布置方案對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發(fā)明的技術方案(比如獲取元數(shù)據(jù)的方式、文件的讀取方式、步驟的先后順序等)進行修改或者等同替換,而不脫離本發(fā)明技術方案的精神和范圍。本發(fā)明所述的方法可編制為應用于計算機系統(tǒng)的程序,并運行于本發(fā)明所述的計算機網(wǎng)絡系統(tǒng)中。
【權利要求】
1.一種共享文件系統(tǒng)多文件快速聚合方法,所述的方法中所使用的硬件系統(tǒng)包括:多個客戶端通過傳輸大體積文件的高速網(wǎng)絡與元數(shù)據(jù)服務器和磁盤列陣連接,所述的多個客戶端同時還通過傳輸元數(shù)據(jù)和控制及交互信息的網(wǎng)絡與元數(shù)據(jù)服務器連接,所述方法的步驟如下: 生成子文件的步驟:多個客戶端按照預設的聚合規(guī)則分別執(zhí)行同一處理任務的不同部分,每部分生成為一個獨立的子文件; 多文件快速聚合的步驟:共享文件系統(tǒng)對需要聚合的多個子文件進行有效檢查并快速的進行“邏輯聚合”,把多個子文件快速聚合或快速追加聚合成一個聚合大文件。
2.如權利要求1所述的共享文件系統(tǒng)多文件快速聚合方法,其特征在于, 所述的“多文件快速聚合的步驟”包括以下子步驟: 檢測聚合子文件有效性的子步驟:文件系統(tǒng)在進行文件快速聚合時檢測所有需要聚合的子文件有效性以及是否滿足聚合規(guī)則,如果“否”則退出多文件快速聚合步驟,如果“是”則進入下一子步驟; 檢測聚合是否為追加聚合的子步驟:文件系統(tǒng)在進行文件快速聚合時檢測聚合是否是在原來聚合文件的基礎上進行追加聚合,如果為追加聚合需要檢測已存在聚合文件是否滿足追加聚合規(guī)則,如果是追加聚合且滿足追加聚合規(guī)則進入建立聚合文件與聚合子文件映射關系的子步驟,否則如果是追加聚合但不滿足追加聚合規(guī)則就退出多文件快速聚合步驟;如果不是追加聚合則進入下一子步驟; 創(chuàng)建聚合文件的子步驟:根據(jù)客戶端請求的聚合文件信息和各子文件屬性信息創(chuàng)建聚合文件,并計算聚合文件的相關屬性信息; 建立聚合文件與聚合子文件映射關系的子步驟:根據(jù)需要聚合的每個子文件相關屬性信息,更新聚合文件的相關屬性信息,建立聚合文件和每個子文件的映射關系。
3.如權利要求2所述的共享文件系統(tǒng)多文件快速聚合方法,其特征在于,所述的多文件快速聚合的步驟還包括處理聚合子文件的子步驟:聚合完成后,對聚合子文件進行處理,使客戶端不再查看到聚合子文件信息。
4.如權利要求1所述的共享文件系統(tǒng)多文件快速聚合方法,其特征在于,所述的“生成子文件的步驟”包括如下子步驟: 處理任務分配的子步驟:將同一處理任務根據(jù)聚合規(guī)則的的要求拆分成多個子處理任務,將子任務分派給不同的客戶端執(zhí)行; 計算子文件的子步驟:多個客戶端對分配的子處理任務執(zhí)行分布式計算,生成各自對應的子文件;在子文件的封裝過程中如果子文件長度不是文件系統(tǒng)塊大小的整數(shù)倍,必要時對不足位補空白數(shù)據(jù)。
5.如權利要求1所述的共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,其特征在于,所述的聚合規(guī)則包括子文件的大小為文件系統(tǒng)塊的整數(shù)倍。
6.如權利要求1所述的共享文件系統(tǒng)中實現(xiàn)多文件快速聚合的方法,其特征在于,所述的計算包括編碼格式轉換和,或渲染合成。
7.如權利要求1所述的共享文件系統(tǒng)多文件快速聚合方法,其特征在于,所述的分別生成的方式為使用分布式計算的方式生成。
8.如權利要求1所述的共享文件系統(tǒng)多文件快速聚合方法,其特征在于,如果處理任務是轉碼任務或者打包任務,生成的目標文件的視頻壓縮編碼選用固定碼率的編碼方式。
9.一種權利要求1所述共享文件系統(tǒng)多文件快速聚合文件的讀取方法,其特征在于,所述方法的步驟包括: 打開文件的步驟:用于客戶端向元數(shù)據(jù)服務器發(fā)出請求,要求打開磁盤陣列中待讀取的文件; 處理元數(shù)據(jù)的步驟:客戶端根據(jù)待讀取文件的內容,向元數(shù)據(jù)服務器申請獲取待讀取文件所對應的元數(shù)據(jù),客戶端獲取相應元數(shù)據(jù),同時客戶端接受分配給自己的機會鎖; 讀取文件的步驟:客戶端獲取元數(shù)據(jù)段,并根據(jù)所獲得的元數(shù)據(jù)段,對磁盤陣列發(fā)起讀取文件的塊數(shù)據(jù)請求,以完成該元數(shù)據(jù)段對應塊數(shù)據(jù)讀取操作,循環(huán)的申請元數(shù)據(jù)段和讀取元數(shù)據(jù)段對應的塊數(shù)據(jù),直至完成所需數(shù)據(jù)的讀??; 文件關閉的步驟:客戶端向元數(shù)據(jù)服務器發(fā)出要求,關閉已打開的讀取文件句柄,完成本次文件讀取。
10.如權利要求9所述的共享文件系統(tǒng)快速聚合文件的讀取方法,其特征在于,所述的“處理元數(shù)據(jù)的步驟”中元數(shù)據(jù)服務器在正常處理客戶端請求待操作文件的元數(shù)據(jù)外還需要另外檢測獲取元數(shù)據(jù)的文件是否為聚合文件,包括以下子步驟: 開辟存儲空間的子步驟:用于客戶端在本地內存或硬盤中開辟用于存儲元數(shù)據(jù)的存儲空間; 選擇處理的子步驟:用于客戶端對元數(shù)據(jù)申請請求選擇是放在后臺隊列等待還是實時處理,如果是后臺等待則將元數(shù)據(jù)申請請求放入元數(shù)據(jù)請求隊列中等待,如果是實時處理則進入下一子步驟; 檢測獲取元數(shù)據(jù)的文件是否聚合文件的子步驟:用于元數(shù)據(jù)服務器檢測客戶端發(fā)起獲取元數(shù)據(jù)請求的文件是否為聚合文件,如果“否”則進入“獲取元數(shù)據(jù)的子步驟”,如果“是”則進入下一子步驟; 獲取聚合文件與聚合子文件映射關系子步驟:根據(jù)客戶端請求的聚合文件的元數(shù)據(jù)信息,獲取與之相對應聚合子文件的映射關系; 獲取元數(shù)據(jù)的子步驟:根據(jù)請求獲取相對應文件的元數(shù)據(jù)返回給客戶端。
【文檔編號】H04N21/4402GK104410868SQ201410600003
【公開日】2015年3月11日 申請日期:2014年10月31日 優(yōu)先權日:2014年10月31日
【發(fā)明者】褚震宇, 徐榮波, 王付生 申請人:北京中科大洋科技發(fā)展股份有限公司