專利名稱:一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法及裝置。
背景技術(shù):
文件系統(tǒng)是用來管理和存儲文件信息的文件管理系統(tǒng),文件系統(tǒng)可以通過邏輯單元(LUN)的虛擬塊設(shè)備,向獨(dú)立磁盤冗余陣列(Redundant Array of Independent Disk,RAID)模塊讀寫數(shù)據(jù)。其中RAID模塊中可以包括一個或多個數(shù)據(jù)存儲塊(記為RAIDn),每個數(shù)據(jù)存儲塊包括多個硬盤,數(shù)據(jù)存儲在這些硬盤中,并帶有附加的冗余信息。在進(jìn)行數(shù)據(jù)讀寫時,當(dāng)文件系統(tǒng)接收到數(shù)據(jù)讀寫請求即輸入輸出(IO)請求,對該數(shù)據(jù)讀寫請求進(jìn)行解析后儲存到LUN虛擬塊設(shè)備中相應(yīng)位置;而RAID模塊就會從LUN虛 擬塊設(shè)備中讀取了數(shù)據(jù)讀寫請求,并對數(shù)據(jù)讀寫請求解析后,采用RAID的數(shù)據(jù)保護(hù)方法對請求的數(shù)據(jù)進(jìn)行處理,比如將數(shù)據(jù)存儲到硬盤中,或從硬盤中讀取數(shù)據(jù),其中RAID的數(shù)據(jù)保護(hù)方法即為RAID模塊進(jìn)行數(shù)據(jù)讀寫時所采用的方法,包括多種類型,即RAIDn(n = 1,2....)的數(shù)據(jù)保護(hù)方法。現(xiàn)有RAID模塊會以數(shù)據(jù)條帶為單位來存儲數(shù)據(jù),每個數(shù)據(jù)條帶中存儲有多個分片數(shù)據(jù)。發(fā)明人在研究中發(fā)現(xiàn),現(xiàn)有對文件數(shù)據(jù)處理時,是文件系統(tǒng)將讀寫請求寫到LUN虛擬塊設(shè)備中,再由RAID模塊向硬盤讀寫數(shù)據(jù)的,數(shù)據(jù)讀寫的效率較低。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法及裝置,提高數(shù)據(jù)讀/寫效率。本發(fā)明實(shí)施例提供一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法,所述文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,包括接收文件讀/寫請求,確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置;所述數(shù)據(jù)條帶是獨(dú)立磁盤冗余陣列RAID的數(shù)據(jù)讀寫條帶;根據(jù)所述確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息;根據(jù)所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入所述硬盤的相應(yīng)數(shù)據(jù)條帶中。本發(fā)明實(shí)施例提供一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的裝置,所述文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,所述裝置包括請求接收模塊,位置確定模塊,條帶緩存模塊和操作模塊;所述請求接收模塊,用于接收文件讀/寫請求;所述位置確定模塊,用于確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置;所述數(shù)據(jù)條帶是獨(dú)立磁盤冗余陣列RAID的數(shù)據(jù)讀寫條帶;
所述條帶緩存模塊,用于根據(jù)所述位置確定模塊確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息;所述操作模塊,用于根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的所述文件讀請求所請求讀出的數(shù)據(jù)信息,從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入所述硬盤的相應(yīng)數(shù)據(jù)條帶中。本發(fā)明實(shí)施例中文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,在接收到文件讀/寫請求后,確定請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,并順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息,并對緩存的至少一個完整數(shù)據(jù)條帶的數(shù)據(jù)信息進(jìn)行相對應(yīng)處理。這樣在緩存完整一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息后,并以數(shù)據(jù)條帶為單位進(jìn)行數(shù)據(jù)讀/寫,可以不需要每次在接收到文件讀/寫請求后,都先將文件讀/寫請求寫入到LUN虛擬塊設(shè)備中,再由RAID模塊訪問硬盤,從而提高了數(shù)據(jù)讀/寫效率;且本發(fā)明實(shí)施例中的方法不需要經(jīng)過文件系統(tǒng)和RAID模塊分別對文件操作請求 進(jìn)行解析后,再由RAID模塊向硬盤進(jìn)行文件操作,而是由文件系統(tǒng)采用RAID的數(shù)據(jù)保護(hù)算法將數(shù)據(jù)信息緩存成數(shù)據(jù)條帶,并直接訪問硬盤,可以提高數(shù)據(jù)存儲的可靠性,并簡化了文件處理的過程。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實(shí)施例提供的一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法的流程圖;圖2是本發(fā)明實(shí)施例提供的一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)方法的結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例提供的一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)裝置的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例中文件系統(tǒng)與上層應(yīng)用系統(tǒng)之間的關(guān)系結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例提供的另一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法,本發(fā)明實(shí)施例的文件操作方法是文件系統(tǒng)所執(zhí)行的方法,流程圖如圖I所示,包括101,接收文件讀/寫請求,這里文件讀/寫請求即為IO請求。102,確定文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,這里數(shù)據(jù)條帶是RAID的數(shù)據(jù)讀寫條帶。本發(fā)明實(shí)施例中,文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,比如文件系統(tǒng)可以把單個文件按照RAID條帶分布進(jìn)行儲存,即文件系統(tǒng)中的數(shù)據(jù)以數(shù)據(jù)條帶形式存儲在多個硬盤中,文件系統(tǒng)直接對這些硬盤進(jìn)行文件操作,比如可以直接向硬盤寫數(shù)據(jù)或讀數(shù)據(jù)等。其中這里的硬盤可以是任何非易失性存儲介質(zhì),比如傳統(tǒng)硬盤,固態(tài)硬盤,磁帶,或可擦寫光盤等。本實(shí)施例中文件系統(tǒng)對硬盤進(jìn)行的文件操作方法可以是傳統(tǒng)的任一類型的RAID數(shù)據(jù)保護(hù)方法即RAIDn(n= 1,2...)的數(shù)據(jù)保護(hù)方法,其中RAIDn是一個數(shù)據(jù)存儲塊,每個數(shù)據(jù)存儲塊的數(shù)據(jù)保護(hù)方法的類型都不同例如RAIDl是數(shù)據(jù)多份鏡像冗余的保護(hù)方法;而RAID5將數(shù)據(jù)存儲在數(shù)據(jù)條帶中,且每個數(shù)據(jù)條帶中的任一分片數(shù)據(jù)都可以通過該數(shù)據(jù)條帶中的檢驗(yàn)塊和其他分片數(shù)據(jù)計算出,其中一個數(shù)據(jù)條帶中的分片數(shù)據(jù)儲存在不同的硬盤上。這里數(shù)據(jù)條帶是采用某些類型的RAID數(shù)據(jù)保護(hù)算法進(jìn)行存儲數(shù)據(jù)的單位,一個數(shù)據(jù)條帶中可以包含多個分片數(shù)據(jù)。在文件讀/寫請求中,都會包含有文件數(shù)據(jù)相對于初始存儲數(shù)據(jù)的偏移位置,文件系統(tǒng)可以根據(jù)這個偏移位置來確定請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,這里讀/寫位置可以是在數(shù)據(jù)條帶中的第幾個分片,或第幾個硬盤
坐寸o可以理解,在每個硬盤上都可以有個單盤文件系統(tǒng),在單盤文件系統(tǒng)上建立有至少兩個分片文件,文件數(shù)據(jù)可以分布到這些分片文件中,而一個文件讀/寫請求對應(yīng)的文件數(shù)據(jù)就可以分布在至少兩個硬盤上單盤文件系統(tǒng)的分片文件中,且組成RAID的數(shù)據(jù)保護(hù)關(guān)系。103,根據(jù)確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息。如果接收到文件寫請求,則這里緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)本身,如果接收到的是文件讀請求,則這里緩存的是至少一個數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出數(shù)據(jù)的信息??梢岳斫?,如果一個文件讀/寫請求中請求讀/寫的數(shù)據(jù)沒有占滿一個數(shù)據(jù)條帶,則需要等待接收其它的文件讀/寫請求,直到所請求讀/寫數(shù)據(jù)能占滿一個數(shù)據(jù)條帶,才執(zhí)行步驟104。例如一個數(shù)據(jù)條帶允許存儲7個分片數(shù)據(jù),而接收到的一個文件讀/寫請求所請求讀/寫的數(shù)據(jù)形成4個分片數(shù)據(jù),則文件系統(tǒng)需要等待接收其它文件讀/寫請求,直到其它文件讀/寫請求所請求讀/寫的數(shù)據(jù)可以形成另外3個分片數(shù)據(jù),才執(zhí)行步驟104。如果一個文件讀/寫請求中請求讀/寫的數(shù)據(jù)超出一個數(shù)據(jù)條帶的存儲空間,則只要讀/寫數(shù)據(jù)能占滿一個數(shù)據(jù)條帶,就執(zhí)行步驟104,并繼續(xù)緩存該文件讀/寫請求中請求讀/寫的,且在該數(shù)據(jù)條帶之外存儲的數(shù)據(jù)信息。例如一個數(shù)據(jù)條帶允許存儲4個分片數(shù)據(jù),而接收到的一個文件讀/寫請求所請求讀/寫的數(shù)據(jù)形成7個分片數(shù)據(jù),則文件系統(tǒng)在順序緩存了 4個分片數(shù)據(jù),就執(zhí)行步驟104,并將繼續(xù)緩存該文件讀/寫請求中請求讀/寫的其它3個分片數(shù)據(jù)信息。本實(shí)施例中可以同時對多個數(shù)據(jù)條帶對應(yīng)的所請求讀/寫的數(shù)據(jù)信息進(jìn)行緩存。104,根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信 息,從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入硬盤的相應(yīng)數(shù)據(jù)條帶。需要說明的是,文件系統(tǒng) 在執(zhí)行步驟103到104時,對于同一個數(shù)據(jù)條帶來說是順序執(zhí)行;而對于不同的數(shù)據(jù)條帶來說是并行執(zhí)行,即在緩存一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息的同時,文件系統(tǒng)可以對緩存好的其他數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息進(jìn)行相應(yīng)讀/寫操作。本實(shí)施例中,文件系統(tǒng)是緩存一個完整的數(shù)據(jù)條帶之后,才訪問硬盤進(jìn)行數(shù)據(jù)的讀寫,可見,文件系統(tǒng)是以一個數(shù)據(jù)條帶為單位來訪問硬盤的,而不是以一個文件讀寫請求來訪問硬盤的,而數(shù)據(jù)條帶是數(shù)據(jù)在硬盤中的存儲位置,這樣會提高文件系統(tǒng)進(jìn)行數(shù)據(jù)的讀寫速率。本發(fā)明實(shí)施例中文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,在接收到文件讀/寫請求后,確定請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,并順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息,并對緩存的至少一個完整數(shù)據(jù)條帶的數(shù)據(jù)信息進(jìn)行相對應(yīng)處理。這樣在緩存完整一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息后,并以數(shù)據(jù)條帶為單位進(jìn)行數(shù)據(jù)讀/寫,可以不需要每次在接收到文件讀/寫請求后,都先將文件讀/寫請求寫入到LUN虛擬塊設(shè)備中,再由RAID模塊訪問硬盤,從而提高了數(shù)據(jù)讀/寫效率;且本發(fā)明實(shí)施例中的方法不需要經(jīng)過文件系統(tǒng)和RAID模塊分別對文件操作請求進(jìn)行解析后,再由RAID模塊向硬盤進(jìn)行文件操作,而是由文件系統(tǒng)采用RAID的數(shù)據(jù)保護(hù)算法將數(shù)據(jù)信息緩存成數(shù)據(jù)條帶,并直接訪問硬盤,可以提高數(shù)據(jù)存儲的可靠性,并簡化了文件處理的過程。在一個具體的實(shí)施例中,文件系統(tǒng)在步驟101中接收到文件讀/寫請求后,還可以先確定文件讀/寫請求所請求讀/寫的文件類型,如果文件類型是文件數(shù)據(jù),即文件的內(nèi)容數(shù)據(jù),則執(zhí)行步驟102。如果文件類型是文件元數(shù)據(jù),即文件系統(tǒng)中的屬性數(shù)據(jù),比如文件格式、文件大小等數(shù)據(jù),則文件系統(tǒng)會向儲存有文件元數(shù)據(jù)的任一硬盤中讀取文件元數(shù)據(jù),或按照多份鏡像冗余算法,將文件元數(shù)據(jù)備份成多份并存儲到至少兩個硬盤中。本實(shí)施例中文件系統(tǒng)對不同文件類型采用不同的方法。比如對于一些文件類型的數(shù)據(jù)比較重要(如文件元數(shù)據(jù)),可以選用RAIDl的多份鏡像冗余算法;而一些類型的數(shù)據(jù)(如文件數(shù)據(jù))可以根據(jù)應(yīng)用場景需要,選擇RAID5,RAID6等保護(hù)方法,并以數(shù)據(jù)條帶的形式對硬盤中的數(shù)據(jù)進(jìn)行操作。這樣使得在進(jìn)行文件讀/寫操作時,就可以對比較重要的文件類型的數(shù)據(jù)重點(diǎn)保護(hù),比如可以將重要的數(shù)據(jù)寫到系統(tǒng)中的至少兩個硬盤上等,從而提高了數(shù)據(jù)存儲的可靠性。且為了進(jìn)一步確保數(shù)據(jù)的可靠性,當(dāng)文件系統(tǒng)在接收到同步(sync)操作,清除(flush)操作或關(guān)閉(close)操作等操作指令時,如果當(dāng)前正在緩存的數(shù)據(jù)信息沒有占滿一個數(shù)據(jù)條帶,也要執(zhí)行步驟104中的數(shù)據(jù)寫入操作,即將步驟103當(dāng)前緩存的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到相應(yīng)的數(shù)據(jù)條帶。這樣保證了在執(zhí)行同步、清除或關(guān)閉文件等操作之前,將數(shù)據(jù)信息都備份到硬盤中。在本發(fā)明實(shí)施例中,文件系統(tǒng)是先將寫入硬盤的數(shù)據(jù)以數(shù)據(jù)條帶為單位進(jìn)行緩存,如果在將緩存的數(shù)據(jù)寫入硬盤之前,需要讀取這些緩存的數(shù)據(jù)條帶的數(shù)據(jù),則為了使得數(shù)據(jù)讀取的及時準(zhǔn)確,在另一個具體的實(shí)施例中如果步驟101中接收的是文件讀請求,文件系統(tǒng)在執(zhí)行上述步驟104的讀取數(shù)據(jù)時,需要先確定緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,是否儲存在文件系統(tǒng)當(dāng)前緩存的其它數(shù)據(jù)條帶中,如果是則從文件系統(tǒng)當(dāng)前緩存的數(shù)據(jù)條帶中讀取相應(yīng)的數(shù)據(jù);如果否,才從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù)。需要說明的是,在其它的具體實(shí)施例中,如果系統(tǒng)接收到文件寫請求,則可以在開始緩存一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息開始計時,當(dāng)計時時間到達(dá)預(yù)置的一個時長還未能存滿一個完整的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息時,則可以將當(dāng)前未存滿的一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入相應(yīng)的數(shù)據(jù)條帶中。這樣可以避免緩存整一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息的緩存時間過長,而不能將文件寫入到硬盤中。以下以一個具體的實(shí)施例為例來說明,參考圖2所示,數(shù)據(jù)儲存到10個硬盤中,每個硬盤上有多個分片數(shù)據(jù),圖中只畫出硬盤上的11個分片數(shù)據(jù),其中斜線填充的部分存儲有校驗(yàn)塊P,每個文件數(shù)據(jù)條帶中包含有橫向分布的9個分片數(shù)據(jù)和I個校驗(yàn)塊P。
如果文件系統(tǒng)接收到文件讀請求,確定該文件讀請求所請求讀取的數(shù)據(jù)的位置是在第2個數(shù)據(jù)條帶中的硬盤1、2、4和5,則順序緩存該數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息。因?yàn)樗埱笞x取的數(shù)據(jù)沒有占滿該數(shù)據(jù)條帶中9個分片數(shù)據(jù)的空間,則文件系統(tǒng)會等待接收另一個文件讀請求,直到其它文件讀請求所請求讀取的數(shù)據(jù)為另外5個分片數(shù)據(jù),則根據(jù)緩存的該數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息,向硬盤的第2數(shù)據(jù)條帶讀取數(shù)據(jù)。如果文件系統(tǒng)接收到文件寫請求,確定該文件寫請求所請求寫入的數(shù)據(jù)的位置是在第3個數(shù)據(jù)條帶和第4個數(shù)據(jù)條帶中的硬盤I到4中,則順序緩存該數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)。因?yàn)樗埱笞x取的數(shù)據(jù)超過該數(shù)據(jù)條帶中9個分片數(shù)據(jù)的空間,則文件系統(tǒng)會先將緩存的一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)寫入到硬盤的第3個數(shù)據(jù)條帶,并等待接收另一個文件寫請求,直到其它文件寫請求所請求寫入的數(shù)據(jù)可以形成另外5個分片數(shù)據(jù),再對第4個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)進(jìn)行寫入。本發(fā)明實(shí)施例提供一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的裝置,該文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,本實(shí)施例中的裝置的結(jié)構(gòu)示意圖如圖3所示,包括請求接收模塊10,位置確定模塊20,條帶緩存模塊30和操作模塊40,其中請求接收模塊10,用于接收文件讀/寫請求;位置確定模塊20,用于確定請求接收模塊10接收的文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置;數(shù)據(jù)條帶是獨(dú)立磁盤冗余陣列RAID的數(shù)據(jù)讀寫條帶;條帶緩存模塊30,用于根據(jù)位置確定模塊20確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息; 操作模塊40,用于根據(jù)條帶緩存模塊30緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入硬盤的相應(yīng)數(shù)據(jù)條帶中。參考圖4所示,本發(fā)明實(shí)施例中的裝置可以是設(shè)備在執(zhí)行應(yīng)用程序過程中對文件進(jìn)行的操作裝置,該裝置中可以包括用戶文件系統(tǒng),該裝置可以向硬盤進(jìn)行數(shù)據(jù)操作,每個硬盤中有一個單盤文件系統(tǒng)。上層應(yīng)用系統(tǒng)是面對用戶的接口,當(dāng)上層應(yīng)用系統(tǒng)接收到文件讀寫請求后會發(fā)送給用戶文件系統(tǒng),而用戶文件系統(tǒng)會采用RAID的數(shù)據(jù)保護(hù)方法直接訪問硬盤,使得文件分布在多個硬盤上單盤文件系統(tǒng)中的分片文件中,并組成RAID保護(hù)關(guān)系。本發(fā)明實(shí)施例的裝置中請求接收模塊10在接收到文件讀/寫請求后,位置確定模塊20確定請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,并由條帶緩存模塊30順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息,由操作模塊40對緩存的至少一個完整數(shù)據(jù)條帶的數(shù)據(jù)信息進(jìn)行相對應(yīng)處理。這樣在緩存完整一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息后,并以數(shù)據(jù)條帶為單位進(jìn)行數(shù)據(jù)讀/寫,可以不需要每次在接收到文件讀/寫請求后,都先將文件讀/寫請求寫入到LUN虛擬塊設(shè)備中,再由RAID模塊訪問硬盤,從而提高了數(shù)據(jù)讀/寫效率;且本發(fā)明實(shí)施例中的方法不需要經(jīng)過文件系統(tǒng)和RAID模塊分別對文件操作請求進(jìn)行解析后,再由RAID模塊向硬盤進(jìn)行文件操作,而是由文件系統(tǒng)采用RAID數(shù)據(jù)保護(hù)算法將數(shù)據(jù)信息緩存成數(shù)據(jù)條帶,并直接訪問硬盤,可以提高數(shù)據(jù)存儲的可靠性,并簡化了文件處理的過程。 參考圖5所示,在一個具體的實(shí)施例中,文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的裝置還可以包括文件元數(shù)據(jù)操作模塊60和操作接收模塊70,其中文件元數(shù)據(jù)操作模塊60,用于若請求接收模塊10接收的文件讀/寫請求所請求讀/寫的文件類型是文件元數(shù)據(jù),當(dāng)接收的是文件讀請求時,則向儲存有文件元數(shù)據(jù)的任一硬盤中讀取文件元數(shù)據(jù),或當(dāng)接收的是文件寫請求時,按照多份鏡像冗余算法,將文件元數(shù)據(jù)備份成多份并存儲到至少兩個硬盤中;操作接收模塊70,用于接收同步操作、清除操作或關(guān)閉操作指令。在本實(shí)施例的裝置中,當(dāng)請求接收模塊10接收到文件讀/寫請求后,如果該請求所請求讀/寫的文件類型是文件數(shù)據(jù),則由位置確定模塊20確定在數(shù)據(jù)條帶中的讀/寫位置;如果文件類型中是文件元數(shù)據(jù),則文件元數(shù)據(jù)操作模塊60向存儲有文件元數(shù)據(jù)的任一硬盤中讀取文件元數(shù)據(jù),或按照多份鏡像冗余算法,將文件元數(shù)據(jù)備份成多份并存儲到至少兩個硬盤中。這樣使得在進(jìn)行文件讀/寫操作時,就可以對比較重要的文件類型的數(shù)據(jù)重點(diǎn)保護(hù),比如可以將重要的數(shù)據(jù)寫到至少兩個硬盤上等,從而提高了數(shù)據(jù)存儲的可靠性。且為了進(jìn)一步確保數(shù)據(jù)的可靠性,當(dāng)操作接收模塊70接收到同步操作、清除操作或關(guān)閉操作等操作指令時,操作模塊40會將條帶緩存模塊30當(dāng)前緩存的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到硬盤中相應(yīng)的數(shù)據(jù)條帶。這樣保證了在執(zhí)行同步、清除或關(guān)閉文件等操作指令之前,將數(shù)據(jù)信息都備份到硬盤中。且參考圖5所示,在另一個具體的實(shí)施例中,文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的裝置還可以包括緩存讀取模塊80和計時模塊90,其中緩存讀取模塊80,用于確定條帶緩存模塊30緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,是否儲存在當(dāng)前緩存的其它數(shù)據(jù)條帶中,如果是,則從當(dāng)前緩存的數(shù)據(jù)條帶中讀取相應(yīng)的數(shù)據(jù);如果否,通知操作模塊40從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù);計時模塊90,用于當(dāng)緩存一個完整數(shù)據(jù)條帶對應(yīng)的所請寫入的數(shù)據(jù)信息所用的時間超過預(yù)置的時長,發(fā)出寫操作指令以通知操作模塊40將當(dāng)前緩存的未存滿的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到硬盤的數(shù)據(jù)條帶中。
這樣當(dāng)請求接收模塊10接收的是文件讀取請求時,在操作操作模塊40進(jìn)行數(shù)據(jù)的讀寫前,通過緩存讀取模塊80確定需要讀取的數(shù)據(jù)信息是否儲存在條帶緩存模塊30緩存的其它數(shù)據(jù)條帶中,如果是,則從其它數(shù)據(jù)條帶讀取數(shù)據(jù);如果否,則通知操作操作40從硬盤讀取數(shù)據(jù)。如果請求接收模塊10接收到的是文件寫請求時,則計時模塊90可以在開始緩存ー個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息開始計時,當(dāng)計時時間到達(dá)預(yù)置的ー個時長還未能存滿ー個完整的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息時,可以通知操作模塊40將當(dāng)前未存滿的ー個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入相應(yīng)的數(shù)據(jù)條帶中。這樣避免緩存整一個數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息的緩存時間過長,而不能將文件寫入到硬盤中。本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于ー計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、磁盤或光盤等。以上對本發(fā)明實(shí)施例所提供的文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法及裝置,進(jìn)行了詳細(xì)介 紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法,其特征在于,所述文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,包括 接收文件讀/寫請求,確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置;所述數(shù)據(jù)條帶是獨(dú)立磁盤冗余陣列RAID的數(shù)據(jù)讀寫條帶; 根據(jù)所述確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息; 根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入所述硬盤的相應(yīng)數(shù)據(jù)條帶中。
2.如權(quán)利要求I所述的方法,其特征在于,所述接收文件讀/寫請求,確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置包括 若所述文件讀/寫請求所請求讀/寫的文件類型是文件數(shù)據(jù),則執(zhí)行所述確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置步驟。
3.如權(quán)利要求I所述的方法,其特征在于,還包括 若所述文件讀/寫請求所請求讀/寫的文件類型是文件元數(shù)據(jù),則 當(dāng)接收的是文件讀請求時,向儲存有文件元數(shù)據(jù)的任一硬盤中讀取所述文件元數(shù)據(jù),或當(dāng)接收的是文件寫請求時,按照多份鏡像冗余算法,將所述文件元數(shù)據(jù)備份成多份并存儲到至少兩個硬盤中。
4.如權(quán)利要求I所述的方法,其特征在于,所述硬盤的單盤文件系統(tǒng)上建立有至少兩個分片文件,所述文件讀/寫請求對應(yīng)的文件數(shù)據(jù)分布在至少兩個硬盤上單盤文件系統(tǒng)的分片文件中,且組成RAID的數(shù)據(jù)保護(hù)關(guān)系。
5.如權(quán)利要求I至4任一項(xiàng)所述的方法,其特征在于,所述方法還包括 接收到同步操作、清除操作、或關(guān)閉操作指令時,將當(dāng)前緩存的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到所述硬盤的相應(yīng)數(shù)據(jù)條帶。
6.如權(quán)利要求I至4任一項(xiàng)所述的方法,其特征在于,還包括 如果緩存一個完整數(shù)據(jù)條帶對應(yīng)的請寫入的數(shù)據(jù)信息所用的時間超過預(yù)置的時長,將當(dāng)前緩存的所述未存滿的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到所述硬盤的數(shù)據(jù)條帶中。
7.如權(quán)利要求I至4任一項(xiàng)所述的方法,其特征在于,所述從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù)之前還包括 確定所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,是否儲存在當(dāng)前緩存的其它數(shù)據(jù)條帶中,如果是,則從當(dāng)前緩存的數(shù)據(jù)條帶中讀取相應(yīng)的數(shù)據(jù);如果否,則從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù)。
8.一種文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的裝置,其特征在于,所述文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,所述裝置包括請求接收模塊,位置確定模塊,條帶緩存模塊和操作模塊; 所述請求接收模塊,用于接收文件讀/寫請求; 所述位置確定模塊,用于確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置;所述數(shù)據(jù)條帶是獨(dú)立磁盤冗余陣列RAID的數(shù)據(jù)讀寫條帶; 所述條帶緩存模塊,用于根據(jù)所述位置確定模塊確定的讀/寫位置,順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的文件讀/寫請求所請求讀/寫的數(shù)據(jù)信息; 所述操作模塊,用于根據(jù)緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的所述文件讀請求所請求讀出的數(shù)據(jù)信息,從所述硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù),或根據(jù)所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息,將所述緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件寫請求所請求寫入的數(shù)據(jù)信息寫入所述硬盤的相應(yīng)數(shù)據(jù)條帶中。
9.如權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 文件元數(shù)據(jù)操作模塊,用于若所述文件讀/寫請求所請求讀/寫的文件類型是文件元數(shù)據(jù),則當(dāng)接收的是文件讀請求時,向所述儲存有文件元數(shù)據(jù)的任一硬盤中讀取所述文件元數(shù)據(jù),或當(dāng)接收的是文件寫請求時,按照多份鏡像冗余算法,將所述文件元數(shù)據(jù)備份成多份并存儲到至少兩個硬盤中。
10.如權(quán)利要求8所述的裝置,其特征在于 所述位置確定模塊,具體用于在所述文件類型是文件數(shù)據(jù),則確定所述文件讀/寫請求所請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置。
11.如權(quán)利要求8至10任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括 操作接收模塊,用于接收同步操作、清除操作或關(guān)閉操作指令; 所述操作模塊,還用于當(dāng)所述操作接收模塊接收到操作指令時,將所述條帶緩存模塊當(dāng)前緩存的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到所述硬盤中相應(yīng)的數(shù)據(jù)條帶。
12.如權(quán)利要求8至10任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括緩存讀取模塊,用于確定所述條帶緩存模塊緩存的至少一個完整數(shù)據(jù)條帶對應(yīng)的文件讀請求所請求讀出的數(shù)據(jù)信息,是否儲存在當(dāng)前緩存的其它數(shù)據(jù)條帶中,如果是,則從當(dāng)前緩存的數(shù)據(jù)條帶中讀取相應(yīng)的數(shù)據(jù);如果否,通知所述操作模塊從硬盤的相應(yīng)數(shù)據(jù)條帶讀取數(shù)據(jù)。
13.如權(quán)利要求8至10任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括計時模塊,用于當(dāng)緩存一個完整數(shù)據(jù)條帶對應(yīng)的所請寫入的數(shù)據(jù)信息所用的時間超過預(yù)置的時長,發(fā)出寫操作指令以通知所述操作模塊將當(dāng)前緩存的所述未存滿的數(shù)據(jù)條帶對應(yīng)的數(shù)據(jù)信息寫入到所述硬盤的數(shù)據(jù)條帶中。
全文摘要
本發(fā)明實(shí)施例公開了文件系統(tǒng)內(nèi)讀寫數(shù)據(jù)的方法及裝置,應(yīng)用于通信技術(shù)領(lǐng)域。本發(fā)明實(shí)施例中文件系統(tǒng)支持文件級獨(dú)立磁盤冗余算法操作,在接收到文件讀/寫請求后,確定請求讀/寫的數(shù)據(jù)在數(shù)據(jù)條帶中的讀/寫位置,并順序緩存至少一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息,并對緩存的至少一個數(shù)據(jù)條帶的數(shù)據(jù)信息進(jìn)行相對應(yīng)處理。這樣在緩存完整一個數(shù)據(jù)條帶對應(yīng)的請求讀/寫的數(shù)據(jù)信息后,并以數(shù)據(jù)條帶為單位進(jìn)行數(shù)據(jù)讀/寫,可以不需要每次在接收到文件讀/寫請求后,都先將文件讀/寫請求寫入到LUN虛擬塊設(shè)備中,再由RAID模塊訪問硬盤,從而提高了數(shù)據(jù)讀/寫效率。
文檔編號G06F17/30GK102682012SQ201110060440
公開日2012年9月19日 申請日期2011年3月14日 優(yōu)先權(quán)日2011年3月14日
發(fā)明者張巍, 魏明昌 申請人:成都市華為賽門鐵克科技有限公司