亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

并行文件系統(tǒng)中資源的管理和分配方法

文檔序號(hào):7700639閱讀:209來(lái)源:國(guó)知局
專利名稱:并行文件系統(tǒng)中資源的管理和分配方法
并行文件系統(tǒng)中資源的管理和分配方法技術(shù)領(lǐng)域并行文件系統(tǒng)中資源的管理和分配方法屬于存儲(chǔ)區(qū)域網(wǎng)絡(luò)并行文件系統(tǒng)領(lǐng) 域,尤其涉及其中的資源管理與數(shù)據(jù)分布領(lǐng)域。
背景技術(shù)
存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage Area Network, SAN)是一種連接外接存儲(chǔ)設(shè)備 和服務(wù)器的構(gòu)架,采用包括光纖通道技術(shù)、磁盤陣列、磁帶柜、光盤柜的各種 技術(shù)進(jìn)行實(shí)現(xiàn),并廣泛的應(yīng)用到高性能計(jì)算等各個(gè)領(lǐng)域。該架構(gòu)的特點(diǎn)是,連 接到服務(wù)器的存儲(chǔ)設(shè)備,將被操作系統(tǒng)視為直接連接的存儲(chǔ)設(shè)備。SAN文件系 統(tǒng)是一種基于存儲(chǔ)區(qū)域網(wǎng)絡(luò)設(shè)備的并行文件系統(tǒng),Linux SAN文件系統(tǒng)對(duì)于 Linux的虛擬文件系統(tǒng)(Virtual File System, VFS)是透明的,它允許多個(gè)客戶端 共享的直接訪問(wèn)在遠(yuǎn)程服務(wù)器上的文件,和訪問(wèn)本地文件相同,由并行文件系 統(tǒng)管理和存儲(chǔ)文件。當(dāng)前,并行文件系統(tǒng)被廣泛的應(yīng)用,以達(dá)到高性能計(jì)算的 要求。SAN并行文件系統(tǒng)是基于SAN實(shí)現(xiàn)的面對(duì)高性能計(jì)算的并行文件系統(tǒng)。 在對(duì)并行文件系統(tǒng)中對(duì)于資源的管理和分配是并行文件系統(tǒng)底層的主體結(jié)構(gòu), 與并行文件系統(tǒng)的整體架構(gòu)直接相關(guān),影響到并行文件系統(tǒng)的性能、可擴(kuò)展性、 可靠性,屬于并行文件系統(tǒng)的核心部分。隨著存儲(chǔ)網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,傳統(tǒng) 的分布式文件系統(tǒng)如NFS、 AFS等已經(jīng)無(wú)法滿足大規(guī)模網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的高可擴(kuò) 展性要求,基于對(duì)象的文件系統(tǒng)如Lustre、 PanFS等不能滿足SAN應(yīng)用環(huán)境, 近來(lái)出現(xiàn)的SAN文件系統(tǒng),如GPFS等,其空間管理采用基于塊的分配方式。發(fā)明內(nèi)容并行文件系統(tǒng)中資源的管理和分配方法屬于SAN區(qū)域網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域,其特 征是通過(guò)將存儲(chǔ)資源分成多個(gè)分配組(Allocate Group, AG),并行分配,降低 了單個(gè)分配組對(duì)其他分配組的影響,提高了并行文件系統(tǒng)的吞吐率、可靠性和 管理效率,每個(gè)AG可以由單個(gè)磁盤分區(qū)或者多個(gè)磁盤按照Raid形式構(gòu)成,多 個(gè)AG之間也可以使用副本策略,通過(guò)存儲(chǔ)資源的兩層虛擬化,提高系統(tǒng)的性 能、可用性和可靠性,每個(gè)分區(qū)使用B+樹進(jìn)行空間分配,并存儲(chǔ)自己的B+樹 數(shù)據(jù),與傳統(tǒng)SAN文件系統(tǒng)相比降低了并行文件系統(tǒng)元數(shù)據(jù)服務(wù)器的壓力,提 高了分配效率,在通過(guò)B+樹實(shí)現(xiàn)的目錄樹中索引文件元數(shù)據(jù)和目錄元數(shù)據(jù),保 持文件元數(shù)據(jù)存儲(chǔ)的局部性,與傳統(tǒng)SAN文件系統(tǒng)相比提高了元數(shù)據(jù)訪問(wèn)的性 能,并行文件系統(tǒng)中資源的管理和分配方法,所述方法是一種Lirmx SAN并行 文件系統(tǒng)資源的管理和分配方法,依次含有以下步驟步驟(l)構(gòu)建一個(gè)所述的Linux SAN并行文件系統(tǒng),以下簡(jiǎn)稱并行文件系統(tǒng);所述并行文件系統(tǒng)是由不少于一個(gè)客戶端,不少于一個(gè)存儲(chǔ)設(shè)備,不少 于一個(gè)元數(shù)據(jù)服務(wù)器MDS,和存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN組成,所述客戶端和所述元數(shù) 據(jù)服務(wù)器之間的TCP/IP網(wǎng)絡(luò)是控制通路,傳輸元數(shù)據(jù)和控制信息,所述客戶端、 所述元數(shù)據(jù)服務(wù)器與起所述存儲(chǔ)設(shè)備作用的磁盤陣列之間的所述SAN網(wǎng)絡(luò)是數(shù) 據(jù)通路,所述元數(shù)據(jù)服務(wù)器和所述客戶端直接通過(guò)所述數(shù)據(jù)通路在所述磁盤陣 列上進(jìn)行數(shù)據(jù)訪問(wèn),在所述存儲(chǔ)設(shè)備上,有兩種磁盤,數(shù)據(jù)磁盤,至少存儲(chǔ)數(shù) 據(jù)、磁盤的狀態(tài)和空間分配信息,另一種是元數(shù)據(jù)服務(wù)器MDS磁盤,至少存儲(chǔ) 元數(shù)據(jù)、所述數(shù)據(jù)磁盤的信息、所述元數(shù)據(jù)磁盤的信息、以及所述并行文件系 統(tǒng)的結(jié)構(gòu)、狀態(tài)信息,其中所述數(shù)據(jù)磁盤分為至少一個(gè)分配組AG,而每個(gè)所述分配組又至少分為兩 個(gè)磁盤分區(qū),其中,第一個(gè)所述磁盤分區(qū)包括保留區(qū)、分配組超級(jí)快ASB、第 一B+樹(l)的和第二B+樹(2)的根節(jié)點(diǎn)TreeRoot,其中,所述分配組超級(jí)快ASB 包括分配組號(hào)AGN、設(shè)備標(biāo)識(shí)DID、第一B+樹(l)的和第二B+樹(2)的根節(jié)點(diǎn)的 地址B+TreeRoot[2]、所述分配組AG狀態(tài)信息AG State Information、以及所述 兩個(gè)B+樹空閑列表Free List,簡(jiǎn)稱FL,在所述的兩個(gè)B+樹中,每個(gè)節(jié)點(diǎn)是所 述分配組AG中數(shù)據(jù)存儲(chǔ)和檢索的一段基本數(shù)據(jù)空間單元,簡(jiǎn)稱一個(gè)快,所述 兩個(gè)B+樹的索引中的每一項(xiàng)是由所述分配組AG的多個(gè)連續(xù)空閑塊組成的一 段空閑空間,所述分配組AG上的所述每段空閑空間通過(guò)所述兩個(gè)B+樹中的 所對(duì)應(yīng)的區(qū)間Extent來(lái)索引,每個(gè)所述區(qū)間Extent由兩項(xiàng)組成第一項(xiàng)是所述 該段空閑空間所在的所述磁盤分區(qū)的起始?jí)K號(hào)start,第二項(xiàng)是所述該段空閑空 間覆蓋的塊的數(shù)量,用該段空閑空間的長(zhǎng)度Len表示,初始時(shí),所有空閑空間 的索引Extent全部保存在所述兩個(gè)B+樹中,其中所述第一 B+樹(l)用所述區(qū)間 Extent的起始?jí)K號(hào)作為鍵值,所述第二 B+樹(2)用所述區(qū)間Extent的第二項(xiàng)所述 該段空間的長(zhǎng)度作為鍵值,在所述分配組超級(jí)快ASB中,所述分配組AG的狀 態(tài)信息State Information是指所述分配組AG的空閑空間或非空閑空間,所述空 閑列表Free List由所述一個(gè)塊地址數(shù)組和三個(gè)變量組成,其中包括所述空閑 空間組成的可分配塊在所述數(shù)組中的起始位置first,用地指標(biāo)是,下同,末尾位 置last,可分配的塊的個(gè)數(shù)count,所述的空閑列表Free List所管理的塊由所述 兩個(gè)B+樹進(jìn)行分配和釋放,除了所述第一磁盤分區(qū)外,其余每個(gè)磁盤分區(qū)包括: 保留區(qū)和超級(jí)快SB,該超級(jí)快SB包括所述的AGN和DID;所述元數(shù)據(jù)服務(wù)器MDS磁盤包括:保留區(qū)、主超級(jí)快MSB,位圖Bitmap, 日志Journal,分配組鏈表信息AGLI以及目錄樹根節(jié)點(diǎn)Inode Root;所述主超級(jí)快MSB包括文件系統(tǒng)狀態(tài)File System State,日志地址Journal Address, AG鏈表根節(jié)點(diǎn)AGLH的地址AGIP,以及目錄樹根節(jié)點(diǎn)地址 Inode Address,其中,所述文件系統(tǒng)狀態(tài)File System State包含文件系統(tǒng)的塊大 小Block Size、掛載標(biāo)識(shí)Mounted Flag、元數(shù)據(jù)磁盤空間大小MDS Block Size 以及空閑空間大小MDS Free Size,所述分配組AG鏈表根節(jié)點(diǎn)AGLH的地址 AGIP包括所述分配組鏈表根節(jié)點(diǎn)AGLH, AG鏈表位圖AGLB,以及所述分 配組鏈表AG List,其中,所述分配組鏈表根節(jié)點(diǎn)AGLH包括分配組總數(shù)AG Count、所有AG的可用空間大小AGs Total Blocks以及空閑空間大小AGs Free Blocks,所述分配組鏈表AGList由AG信息AGI以數(shù)組的形式組成,每個(gè)所述 AG信息AGI包含一個(gè)分配組AG的信息,其中,包括分配組號(hào)AGN,不少于 一個(gè)的分配中磁盤分區(qū)的設(shè)備標(biāo)識(shí)DID,每個(gè)所述AG的信息AGI,線性且連 續(xù)保存在所述元數(shù)據(jù)服務(wù)器MDS磁盤上,位置由所述AG鏈表位圖AGLB所索 引,所述目.錄樹根節(jié)點(diǎn)Inode Root由目錄B+樹來(lái)管理的,所述目錄B+樹索引 的每一項(xiàng)是一個(gè)節(jié)點(diǎn)Inode,所有文件和目錄都是由Inode表示,該Inode的鍵 值是由所述文件或者目錄所在父目錄的文件名的哈希值、所述文件或者目錄的 名稱的哈希值、所述文件或者目錄的類型Type組成,所述類型Type包括文 件類型、目錄類型、元數(shù)據(jù)類型,其中,所述文件類型的Inode用于存儲(chǔ)文件的 所述布局信息,即從所述管理空閑空間的兩個(gè)B+樹中分配出來(lái)的區(qū)間Extent, 所述目錄類型的Inode用于存儲(chǔ)包含在當(dāng)前目錄下的所述文件的文件名和目錄 的目錄名,元數(shù)據(jù)類型的Inode包含該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的元數(shù)據(jù) 信息,該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的Inode地址,以及該節(jié)點(diǎn)Inode對(duì)應(yīng) 的文件或者目錄的Inode類型Type,其中所述的元數(shù)據(jù)信息是指由IEEF制定的 POSIX標(biāo)準(zhǔn)定義的元數(shù)據(jù)信息;在所述客戶端設(shè)有客戶端模塊和交互層模塊,其中,所述客戶端模塊 設(shè)有虛擬文件系統(tǒng)VFS層的調(diào)用接口,并進(jìn)行數(shù)據(jù)和元數(shù)據(jù)的緩存,對(duì)于所述VFS層的函數(shù)調(diào)用,則按以下方式判斷若是和所述元數(shù)據(jù)服務(wù)器的交互操作, 則生成相應(yīng)的請(qǐng)求通過(guò)函數(shù)調(diào)用發(fā)送到底層的所述交互層模塊,所述函數(shù)調(diào)用 包括該文件系統(tǒng)客戶端使用的所有請(qǐng)求操作,以及當(dāng)前請(qǐng)求的索引,若是對(duì)所 述數(shù)據(jù)磁盤進(jìn)行數(shù)-據(jù)訪問(wèn)的操作,則生成相應(yīng)的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到底層的SAN驅(qū)動(dòng)模塊,所述交互層模塊通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議實(shí)現(xiàn)所述客戶端和所述 元數(shù)據(jù)服務(wù)器MDS之間的通信;在所述元數(shù)據(jù)服務(wù)器中,設(shè)有SAN文件系統(tǒng)管理模塊,簡(jiǎn)稱管理層模塊,交互層模塊和元數(shù)據(jù)文件系統(tǒng)模塊,其中所述交互層模塊和所述管理層模塊相連,當(dāng)向所述管理層模塊發(fā)送以下各種請(qǐng)求系統(tǒng)狀態(tài)管理請(qǐng)求,操作狀態(tài)管理請(qǐng)求,元數(shù)據(jù)訪問(wèn)請(qǐng)求以及空間 管理請(qǐng)求,所述管理層模塊則把生成的相應(yīng)請(qǐng)求發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模 塊中;元數(shù)據(jù)文件系統(tǒng)模塊設(shè)有以下接口 Linux內(nèi)核中的本地文件系統(tǒng)的內(nèi)核調(diào)用接口,接收所述元數(shù)據(jù)訪問(wèn)的請(qǐng)求,元數(shù)據(jù)文件系統(tǒng)所述第一調(diào)用接口,供所述管理層模塊調(diào)用,其中管理 的信息包括空閑空間的大小、AGN、其實(shí)地址以及相應(yīng)的區(qū)間Extent鏈表;元數(shù)據(jù)文件系統(tǒng)模塊還設(shè)有第二模塊接口,從所述元數(shù)據(jù)服務(wù)器的SAN 驅(qū)動(dòng)模塊中調(diào)用需要釋放的區(qū)間Extent,以及所述并行文件系統(tǒng)的包括元數(shù)據(jù) MSB在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)MSB—Core的指針i_private,以及以下數(shù)據(jù)結(jié)構(gòu) MSB_Core, AGLH—Core, AGLH, AGI—Core,以及AGI,其中MSB_Core包括目錄樹根節(jié)點(diǎn)Inode一Root和所述AGLH內(nèi)存中所述數(shù)據(jù) 結(jié)構(gòu)AGLH一Core的指針AGLH_point;AGLH一Core包括AGLH在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址AGLH—disk_piont和所述AGI以下兩個(gè)鏈表指針AGI鏈表指針AGI—List_piont 和所述AGI哈希表指針AGI__hash_piont;AGI—Core包括所述AGI在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址 AGI—disk_piont ,所述AGI鏈表指針AGI_List_piont , AGLI—Core指針 AGLI_Core_piont ,可訪問(wèn)磁盤分區(qū)在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)的數(shù)組 Block—Device—Array,所述兩個(gè)B+樹在數(shù)據(jù)磁盤上地址,所述空閑空間列表Free List在數(shù)據(jù)磁盤上的地址FreeJList,以及該AG的磁盤分區(qū)的所述DID在內(nèi)存 中的數(shù)組DeviceJLable—List;AGI,包括所述AGN和DID; 步驟(2)按以下步驟啟動(dòng)所述并行文件系統(tǒng) 步驟(2.1)初始化所述元數(shù)據(jù)服務(wù)器MDS磁盤; 步驟(2.2)加載所述元數(shù)據(jù)服務(wù)器需要的所述各種模塊,掛載所述元數(shù) 據(jù)服務(wù)器MDS磁盤;步驟(2.3)在所述元數(shù)據(jù)服務(wù)器MDS磁盤上加載新的AG; 步驟(3)所述并行文件系統(tǒng)按以下步驟響應(yīng)客戶端應(yīng)用程序的讀寫請(qǐng)求; 步驟(3.1)所述并行文件系統(tǒng)按以下步驟響應(yīng)一個(gè)客戶端應(yīng)用程序的讀請(qǐng)求-步驟(3丄1)客戶端的應(yīng)用程序發(fā)出讀請(qǐng)求到所述客戶端模塊;步驟G丄l.l)所述客戶端模塊首先查看是否緩存了相應(yīng)文件的元數(shù) 據(jù),如果緩存了,直接跳到步驟(3丄3);步驟(3丄1.2)所述客戶端模塊如果沒(méi)有緩存相應(yīng)元數(shù)據(jù),則通過(guò)所 述交互層模塊和所述文件系統(tǒng)管理層模塊,將元數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到所述 元數(shù)據(jù)文件系統(tǒng)模塊; 步驟(3丄2)所述客戶端模塊接受元數(shù)據(jù)訪問(wèn)請(qǐng)求后,進(jìn)行如下處理;步驟(3丄2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢査此元數(shù)據(jù)是否被緩 存,如果緩存了,跳轉(zhuǎn)到步驟(3丄2.2.3);步驟(3丄2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊首先訪問(wèn)所述元數(shù)據(jù)服務(wù)器 MDS磁盤;步驟(3丄2.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)被訪問(wèn)文件的路徑 名生成相應(yīng)的所述目錄樹B+樹的鍵值;步驟(3丄2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取所述目錄樹B+樹的 根節(jié)點(diǎn),根據(jù)所述鍵值,查找對(duì)應(yīng)文件的元數(shù)據(jù);步驟(3丄2.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取此文件的布局信息, 并通過(guò)所述管理層模塊、所述交互層模塊返回給所述客戶端模塊; 步驟(3丄3)所述客戶端模塊獲取文件布局信息,并讀取數(shù)據(jù)信息, 步驟(3丄3.1)所述客戶端模塊分析獲取的文件布局信息,并查找需 要的數(shù)據(jù)所在的區(qū)間Extent信息;步驟(3丄3.2)所述客戶端模塊通過(guò)所述區(qū)間Extent信息獲取所需要 數(shù)據(jù)所在的AG;步驟(3.1.3.2.1)所述客戶端模塊檢査本地設(shè)備列表是否緩存了所 要訪問(wèn)的AG的所有數(shù)據(jù)磁盤的DID,如果緩存了所述數(shù)據(jù)直接跳到步 驟(3丄3.3);步驟(3丄3.2.2)如果沒(méi)有所需設(shè)備的DID,那么所述客戶端模塊 通過(guò)所述交互層模塊、所述管理層模塊發(fā)送相應(yīng)AG的設(shè)備列表信息請(qǐng) 求到所述元數(shù)據(jù)文件系統(tǒng)模塊,獲取屬于相應(yīng)AG的所有磁盤的DID;步驟(3丄3.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁 盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;步驟(3丄3.2.4)所述客戶端模塊通過(guò)所述SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG的所有磁盤;步驟(3丄3.3)所述客戶端模塊在AG的磁盤上讀取相應(yīng)的數(shù)據(jù)信息; 步驟(3丄4)所述客戶端模塊將讀取的數(shù)據(jù)返回給應(yīng)用程序,結(jié)束此次 讀請(qǐng)求;步驟(3.2)所述并行文件系按以下步驟統(tǒng)響應(yīng)一個(gè)客戶端應(yīng)用程序的寫請(qǐng)步驟(3.2.1)所述客戶端模塊生成文件寫請(qǐng)求;步驟(3.2丄1)所述客戶端模塊首先檢査已經(jīng)獲得文件元數(shù)據(jù)信息是 否有空閑空間可以使用,如果沒(méi)有跳轉(zhuǎn)到步驟(3.2丄3);步驟(3.2丄2)所述客戶端模塊檢查文件元數(shù)據(jù)信息空閑空間是否夠 用,如果夠用,調(diào)轉(zhuǎn)到步驟(3.2.4);步驟(3.2丄3)如果文件元數(shù)據(jù)信息空閑空間不夠用,所述客戶端模 塊生成相應(yīng)的文件空間申請(qǐng)請(qǐng)求通過(guò)所述交互層模塊和所述管理層模塊 發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊,同時(shí)使用文件元數(shù)據(jù)信息已有的空閑空 間;步驟(3.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)文件的寫請(qǐng)求生成相應(yīng)的空 間分配請(qǐng)求進(jìn)行操作;步驟(3.2.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢查當(dāng)前的整個(gè)文件系 統(tǒng)的空閑空間是否滿足所需要的空閑空間大小,如果不滿足,則返回錯(cuò)誤, 終止上述寫請(qǐng)求;步驟(3.2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢査空閑空間分配請(qǐng)求的相 應(yīng)的AG是否滿足所需要的空閑空間大小,如果滿足,選擇此AG進(jìn)行空 間分配,否則選擇一個(gè)其他可以滿足此空閑空間請(qǐng)求的AG,跳轉(zhuǎn)到步驟(3.2.3);步驟(3.2.2.3)如果所有單個(gè)AG都不滿足上述空閑空間請(qǐng)求,所述 元數(shù)據(jù)文件系統(tǒng)模塊選取多個(gè)AG進(jìn)行空間分配,并根據(jù)每個(gè)AG的大小 生成相應(yīng)的空間請(qǐng)求; 步驟(3.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊選取AG進(jìn)行空間分配;步驟(3.2.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊查看當(dāng)前AG的空閑空間是 否滿足需要分配的大小;步驟(3.2.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢査當(dāng)前AG的Free List是 否有滿足空閑空間B+樹進(jìn)行空間管理所需要的空間;步驟(3.2.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求査找當(dāng)前AG 的對(duì)應(yīng)的空閑空間B+樹,找到符合的Extent,可能需要多個(gè)Extent,在當(dāng) 前B+樹中刪除或添加相應(yīng)的Extent;步驟(3.2.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹,進(jìn) 行兩個(gè)空閑空間B+樹平衡;步驟(3.2.3.5)所述元數(shù)據(jù)文件系統(tǒng)模塊修改當(dāng)前AG和MDS上的 ASB和MSB,記錄空間變化;步驟(3.2.3.6)所述元數(shù)據(jù)文件系統(tǒng)模塊將此區(qū)間Extent的信息計(jì)入 元數(shù)據(jù)服務(wù)器MDS磁盤的響應(yīng)的文件的Inode,但是不修改該文件的長(zhǎng)度 信息;步驟(3.2.3.7)所述元數(shù)據(jù)文件系統(tǒng)模塊將得到的區(qū)間Extent填入相 應(yīng)的返回列表,并將所述列表通過(guò)交互層模塊發(fā)送到所述客戶端模塊; 步驟(3.2.4)所述客戶端模塊獲得文件空閑空間信息,開始寫入數(shù)據(jù)信息;步驟(3.2.4.1)所述客戶端模塊分析獲取的文件空閑空間信息,并查 找需要的數(shù)據(jù)所在的區(qū)間Extent;步驟(3.2.4.2)所述客戶端模塊通過(guò)區(qū)間Extent信息獲取所需要數(shù)據(jù)所在的AG;步驟(3.2.4.2.1)所述客戶端模塊檢查本地設(shè)備列表是否緩存了所 要訪問(wèn)的AG的所有磁盤的DID,如果緩存了直接跳到步驟(3.2.4.3);步驟(3.2.4.2.2)如果沒(méi)有所需設(shè)備的DID,所述客戶端模塊那么 發(fā)送相應(yīng)AG的磁盤列表信息請(qǐng)求到MDS,請(qǐng)求相應(yīng)的磁盤的DID;步驟(3.2.4.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁 盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;步驟(3.2.4.2.4)所述客戶端模塊通過(guò)SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG 的所有磁盤;步驟(3.2.4.3)所述客戶端模塊在相應(yīng)的AG的磁盤上寫入相應(yīng)的數(shù)據(jù);步驟(3.2.5)元數(shù)據(jù)服務(wù)器MDS根據(jù)客戶端的訪問(wèn)信息,修改相應(yīng)文件的 Inode中的元數(shù)據(jù);步驟(3.2.5.1)如果客戶端繼續(xù)寫,跳轉(zhuǎn)到步驟(3.2丄1);步驟(3.2.5.2)如果數(shù)據(jù)寫完,所述客戶端模塊將己經(jīng)使用的新生成 的文件元數(shù)據(jù)信息和文件空閑空間信息通過(guò)所述交互層模塊發(fā)送給所述 管理層模塊;步驟(3.2.5.3)如果有文件空閑空間信息,所述管理層模塊發(fā)送空間 釋放請(qǐng)求到所述元數(shù)據(jù)文件系統(tǒng)模塊進(jìn)行空間釋放;步驟(3.2.5.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊檢查Free List是否有滿 足空閑空間B+樹進(jìn)行空間管理所需要的空間;步驟(3.2.5.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求査找對(duì)應(yīng) 的空閑空間B+樹中相應(yīng)的區(qū)間Extent的插入位置,進(jìn)行刪除或添加相應(yīng)的區(qū)間Extent;步驟(3.2.5.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹, 進(jìn)行空閑空間B+樹平衡,步驟(3.2.5.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊修改對(duì)應(yīng)AG的所述ASB 和MSB上的空間信息;步驟(3.2.5.4所述元數(shù)據(jù)文件系統(tǒng)模塊修改相應(yīng)文件的Inode信息, 將文件的大小信息更新為當(dāng)前的返回值步驟(3.2.6)所述客戶端模塊返回操作完成信息到應(yīng)用程序,結(jié)束所 述寫請(qǐng)求。當(dāng)所述分配組只有一個(gè)磁盤分區(qū)時(shí),只采用所述第一磁盤分區(qū)。本發(fā)明降低了并行文件系統(tǒng)元數(shù)據(jù)服務(wù)器的壓力,提高了分配效率,在 通過(guò)B+樹實(shí)現(xiàn)的目錄樹中索引文件元數(shù)據(jù)和目錄元數(shù)據(jù),保持文件元數(shù)據(jù)存儲(chǔ) 的局部性,與傳統(tǒng)SAN文件系統(tǒng)相比提高了元數(shù)據(jù)訪問(wèn)的性能。


圖1.以4096字節(jié)作為一個(gè)Block的MDS磁盤數(shù)據(jù)布局圖2.以4096字節(jié)為一個(gè)Block的AG數(shù)據(jù)布局圖3.并行文件系統(tǒng)的軟件結(jié)構(gòu)4.元數(shù)據(jù)文件系統(tǒng)模塊數(shù)據(jù)結(jié)構(gòu)5.文件系統(tǒng)響應(yīng)客戶端寫請(qǐng)求流程6.文件系統(tǒng)響應(yīng)客戶端讀請(qǐng)求流程7.文件系統(tǒng)硬件結(jié)構(gòu)圖實(shí)施步驟1、并行文件系統(tǒng)中資源的管理和分配方法,其特征在于,所述方法是一種Linux SAN并行文件系統(tǒng)資源的管理和分配方法,依次含有以下步驟步驟(l)構(gòu)建一個(gè)所述的Linux SAN并行文件系統(tǒng),以下簡(jiǎn)稱并行文件系統(tǒng);所述并行文件系統(tǒng)是由不少于一個(gè)客戶端,不少于一個(gè)存儲(chǔ)設(shè)備,不少 于一個(gè)元數(shù)據(jù)服務(wù)器MDS,和存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN組成,所述客戶端和所述元數(shù) 據(jù)服務(wù)器之間的TCP/IP網(wǎng)絡(luò)是控制通路,傳輸元數(shù)據(jù)和控制信息,所述客戶端、 所述元數(shù)據(jù)服務(wù)器與起所述存儲(chǔ)設(shè)備作用的磁盤陣列之間的所述SAN網(wǎng)絡(luò)是數(shù) 據(jù)通路,所述元數(shù)據(jù)服務(wù)器和所述客戶端直接通過(guò)所述數(shù)據(jù)通路在所述磁盤陣 列上進(jìn)行數(shù)據(jù)訪問(wèn),在所述存儲(chǔ)設(shè)備上,有兩種磁盤,數(shù)據(jù)磁盤,至少存儲(chǔ)數(shù) 據(jù)、磁盤的狀態(tài)和空間分配信息,另一種是元數(shù)據(jù)服務(wù)器MDS磁盤,至少存儲(chǔ) 元數(shù)據(jù)、所述數(shù)據(jù)磁盤的信息、所述元數(shù)據(jù)磁盤的信息、以及所述并行文件系 統(tǒng)的結(jié)構(gòu)、狀態(tài)信息,其中-所述數(shù)據(jù)磁盤分為至少一個(gè)分配組AG,而每個(gè)所述分配組又至少分為兩 個(gè)磁盤分區(qū),其中,第一個(gè)所述磁盤分區(qū)包括保留區(qū)、分配組超級(jí)快ASB、第 一B+樹(l)的和第二B+樹(2)的根節(jié)點(diǎn)TreeRoot,其中,所述分配組超級(jí)快ASB 包括分配組號(hào)AGN、設(shè)備標(biāo)識(shí)DID、第一 B+樹(l)的和第二 B+樹(2)的根節(jié)點(diǎn)的 地址B+TreeRoot[2]、所述分配組AG狀態(tài)信息AG State Information、以及所述 兩個(gè)B+樹空閑列表Free List,簡(jiǎn)稱FL,在所述的兩個(gè)B+樹中,每個(gè)節(jié)點(diǎn)是所 述分配組AG中數(shù)據(jù)存儲(chǔ)和檢索的一段基本數(shù)據(jù)空間單元,簡(jiǎn)稱一個(gè)快,所述 兩個(gè)B+樹的索引中的每一項(xiàng)是由所述分配組AG的多個(gè)連續(xù)空閑塊組成的一 段空閑空間,所述分配組AG上的所述每段空閑空間通過(guò)所述兩個(gè)B+樹中的所對(duì)應(yīng)的區(qū)間Extent來(lái)索引,每個(gè)所述區(qū)間Extent由兩項(xiàng)組成第一項(xiàng)是所述 該段空閑空間所在的所述磁盤分區(qū)的起始?jí)K號(hào)start,第二項(xiàng)是所述該段空閑空 間覆蓋的塊的數(shù)量,用該段空閑空間的長(zhǎng)度Len表示,初始時(shí),所有空閑空間 的索引Extent全部保存在所述兩個(gè)B+樹中,其中所述第一 B+樹(l)用所述區(qū)間 Extent的起始?jí)K號(hào)作為鍵值,所述第二 B+樹(2)用所述區(qū)間Extent的第二項(xiàng)所述 該段空間的長(zhǎng)度作為鍵值,在所述分配組超級(jí)快ASB中,所述分配組AG的狀 態(tài)信息State Information是指所述分配組AG的空閑空間或非空閑空間,所述空 閑列表Free List由所述一個(gè)塊地址數(shù)組和三個(gè)變量組成,其中包括所述空閑 空間組成的可分配塊在所述數(shù)組中的起始位置first,用地指標(biāo)是,下同,末尾位 置last,可分配的塊的個(gè)數(shù)count,所述的空閑列表Free List所管理的塊由所述 兩個(gè)B+樹進(jìn)行分配和釋放,除了所述第一磁盤分區(qū)外,其余每個(gè)磁盤分區(qū)包括 保留區(qū)和超級(jí)快SB,該超級(jí)快SB包括所述的AGN和DID;所述元數(shù)據(jù)服務(wù)器MDS磁盤包括保留區(qū)、主超級(jí)快MSB,位圖Bitmap, 日志Journal,分配組鏈表信息AGLI以及目錄樹根節(jié)點(diǎn)Inode Root;所述主超級(jí)快MSB包括文件系統(tǒng)狀態(tài)File System State,日志地址 Journal Address, AG鏈表根節(jié)點(diǎn)AGLH的地址AGIP,以及目錄樹根節(jié)點(diǎn)地址 Inode Address,其中,所述文件系統(tǒng)狀態(tài)File System State包含文件系統(tǒng)的塊大 小Block Size、掛載標(biāo)識(shí)Mounted Flag、元數(shù)據(jù)磁盤空間大小MDS Block Size 以及空閑空間大小MDS Free Size,所述分配組AG鏈表根節(jié)點(diǎn)AGLH的地址 AGIP包括所述分配組鏈表根節(jié)點(diǎn)AGLH, AG鏈表位圖AGLB,以及所述分 配組鏈表AG List,其中,所述分配組鏈表根節(jié)點(diǎn)AGLH包括分配組總數(shù)AG Count、所有AG的可用空間大小AGs Total Blocks以及空閑空間大小AGs Free Blocks,所述分配組鏈表AGList由AG信息AGI以數(shù)組的形式組成,每個(gè)所述 AG信息AGI包含一個(gè)分配組AG的信息,其中,包括分配組號(hào)AGN,不少于一個(gè)的分配中磁盤分區(qū)的設(shè)備標(biāo)識(shí)DID,每個(gè)所述AG的信息AGI,線性且連 續(xù)保存在所述元數(shù)據(jù)服務(wù)器MDS磁盤上,位置由所述AG鏈表位圖AGLB所索 引,所述目錄樹根節(jié)點(diǎn)Inode Root由目錄B+樹來(lái)管理的,所述目錄B+樹索引 的每一項(xiàng)是一個(gè)節(jié)點(diǎn)Inode,所有文件和目錄都是由Inode表示,該Inode的鍵 值是由所述文件或者目錄所在父目錄的文件名的哈希值、所述文件或者目錄的 名稱的哈希值、所述文件或者目錄的類型Type組成,所述類型Type包括文 件類型、目錄類型、元數(shù)據(jù)類型,其中,所述文件類型的Inode用于存儲(chǔ)文件的 所述布局信息,即從所述管理空閑空間的兩個(gè)B+樹中分配出來(lái)的區(qū)間Extent, 所述目錄類型的Inode用于存儲(chǔ)包含在當(dāng)前目錄下的所述文件的文件名和目錄 的目錄名,元數(shù)據(jù)類型的Inode包含該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的元數(shù)據(jù) 信息,該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的Inode地址,以及該節(jié)點(diǎn)Inode對(duì)應(yīng) 的文件或者目錄的Inode類型Type,其中所述的元數(shù)據(jù)信息是指由IEEF制定的 POSIX標(biāo)準(zhǔn)定義的元數(shù)據(jù)信息;在所述客戶端設(shè)有客戶端模塊和交互層模塊,其中,所述客戶端模塊 設(shè)有虛擬文件系統(tǒng)VFS層的調(diào)用接口,并進(jìn)行數(shù)據(jù)和元數(shù)據(jù)的緩存,對(duì)于所述 VFS層的函數(shù)調(diào)用,則按以下方式判斷若是和所述元數(shù)據(jù)服務(wù)器的交互操作, 則生成相應(yīng)的請(qǐng)求通過(guò)函數(shù)調(diào)用發(fā)送到底層的所述交互層模塊,所述函數(shù)調(diào)用 包括該文件系統(tǒng)客戶端使用的所有請(qǐng)求操作,以及當(dāng)前請(qǐng)求的索引,若是對(duì)所 述數(shù)據(jù)磁盤進(jìn)行數(shù)據(jù)訪問(wèn)的操作,則生成相應(yīng)的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到底層的 SAN驅(qū)動(dòng)模塊,所述交互層模塊通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議實(shí)現(xiàn)所述客戶端和所述 元數(shù)據(jù)服務(wù)器MDS之間的通信;在所述元數(shù)據(jù)服務(wù)器屮,設(shè)有SAN文件系統(tǒng)管理模塊,簡(jiǎn)稱管理層模塊, 交互層模塊和元數(shù)據(jù)文件系統(tǒng)模塊,其中-所述交互層模塊和所述管理層模塊相連,當(dāng)向所述管理層模塊發(fā)送以下各種請(qǐng)求系統(tǒng)狀態(tài)管理請(qǐng)求,操作狀態(tài)管理請(qǐng)求,元數(shù)據(jù)訪問(wèn)請(qǐng)求以及空間 管理請(qǐng)求,所述管理層模塊則把生成的相應(yīng)請(qǐng)求發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模 塊中;元數(shù)據(jù)文件系統(tǒng)模塊設(shè)有以下接口 -Linux內(nèi)核中的本地文件系統(tǒng)的內(nèi)核調(diào)用接口,接收所述元數(shù)據(jù)訪問(wèn)的請(qǐng)求,元數(shù)據(jù)文件系統(tǒng)所述第一調(diào)用接口,供所述管理層模塊調(diào)用,其中管理 的信息包括空閑空間的大小、AGN、其實(shí)地址以及相應(yīng)的區(qū)間Extent鏈表;元數(shù)據(jù)文件系統(tǒng)模塊還設(shè)有第二模塊接口,從所述元數(shù)據(jù)服務(wù)器的SAN 驅(qū)動(dòng)模塊中調(diào)用需要釋放的區(qū)間Extent,以及所述并行文件系統(tǒng)的包括元數(shù)據(jù) MSB在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)MSB—Core的指針ijprivate,以及以下數(shù)據(jù)結(jié)構(gòu)-MSB—Core, AGLH—Core, AGLH, AGI—Core,以及AGI,其中MSB—Core包括目錄樹根節(jié)點(diǎn)Inode_Root和所述AGLH內(nèi)存中所述數(shù)據(jù) 結(jié)構(gòu)AGLH—Core的指針AGLH_point;AGLH—Core包括AGLH在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址 AGLH_disk_piont和所述AGI以下兩個(gè)鏈表指針AGI鏈表指針AGI—List_piont 和所述AGI哈希表指針AGI_hash_piont;AGI—Core包括所述AGI在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址 AGI—disk_piont ,所述AGI鏈表指針AGI_List_piont , AGLI一Core指針 AGLI—Core_piont ,可訪問(wèn)磁盤分區(qū)在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)的數(shù)組 Block—Device—Array,所述兩個(gè)B+樹在數(shù)據(jù)磁盤上地址,所述空閑空間列表Free List在數(shù)據(jù)磁盤上的地址Free—List,以及該AG的磁盤分區(qū)的所述DID在內(nèi)存 中的數(shù)組Device—Lable—List;AGI,包括所述AGN和DID;除上述模塊,另外實(shí)現(xiàn)了兩個(gè)用戶態(tài)工具,分別是MDS磁盤初始化工具 mkmds和AGADD工具addag, MDS磁盤初始化工具mkmds運(yùn)行在MDS服務(wù) 器的用戶態(tài),進(jìn)行元數(shù)據(jù)磁盤的格式化,輸入?yún)?shù)為MDS磁盤設(shè)備文件名,將 圖1所示的元數(shù)據(jù)信息寫入元數(shù)據(jù)磁盤,addag運(yùn)行在MDS服務(wù)器的用戶態(tài), 輸入?yún)?shù)為加載的AG的磁盤分區(qū)設(shè)備文件名、MDS磁盤設(shè)備文件名,根據(jù)圖 2所示的數(shù)據(jù)磁盤分區(qū)信息寫入數(shù)據(jù)磁盤分區(qū);步驟(2) SAN并行文件系統(tǒng)的啟動(dòng)分為以下幾個(gè)步驟步驟(2.1)通過(guò)MDS磁盤初始化工具mkmds,初始化MDS磁盤; 步驟(2.2)加載MDS需要的管理層模塊、交互層模塊和元數(shù)據(jù)文件系 統(tǒng)模塊,通過(guò)mount命令掛載MDS磁盤;步驟(2.2.1) MDS讀取AGLH數(shù)據(jù)塊的信息,以確定是否此并行文 件系統(tǒng)是否完整,如果不完整,將文件系統(tǒng)的狀態(tài)設(shè)置為不一致狀態(tài);步驟(2.2.2)根據(jù)AGLH信息AGLB,掃描AG List,將上次文件系 統(tǒng)卸載前己加入的設(shè)備添加到并行文件系統(tǒng);步驟(2.2.2.1)根據(jù)AGLH、 AGLB信息,讀取AG List中的AGI 信息,找到文件系統(tǒng)上次卸載前加載的每一個(gè)AG;步驟(2.2.2.2)從AG鏈表中,選出一個(gè)準(zhǔn)備添加的AG,初始化此 AG在內(nèi)存相應(yīng)的數(shù)據(jù)結(jié)構(gòu)AGI一Core,讀取相應(yīng)的AGN和AG中每個(gè) 設(shè)備的DID,每個(gè)DID和AGN可以組成一個(gè)標(biāo)識(shí)字符串,用于標(biāo)識(shí)一 個(gè)相應(yīng)的設(shè)備;步驟(2.2.2.3)根據(jù)獲取的標(biāo)識(shí)字符串,掃描SCSI設(shè)備隊(duì)列中的每 個(gè)未使用設(shè)備,將和上述標(biāo)識(shí)字符串匹配的設(shè)備添加到相應(yīng)的AGI一Core的Block—Device—Array結(jié)構(gòu)中;
步驟(2.2.2.4)當(dāng)一個(gè)AG的所有設(shè)備加載完畢后以后,初始化此AG的B+數(shù);
步驟(2.2.2.5)如果找到相應(yīng)的匹配設(shè)備,繼續(xù)加載其他設(shè)備,等文件系統(tǒng)啟動(dòng)完畢后,返回沒(méi)有匹配到的設(shè)備的信息;
步驟(2.2.3)如果文件系統(tǒng)被設(shè)置為不一致狀態(tài),停止并行文件系統(tǒng)加載,返回加載錯(cuò)誤;
步驟(2.3)在MDS加載新AG;
步驟(2.3.1)獲取磁盤分區(qū)信息和需要?jiǎng)?chuàng)建的AG信息;步驟(2.3.2) addag和元數(shù)據(jù)文件系統(tǒng)模塊交互,從元數(shù)據(jù)文件系統(tǒng)模塊獲取唯一的AGN;
步驟(2.3.2.1 )AG向MDS發(fā)出一個(gè)請(qǐng)求,需要MDS返回一個(gè)AGN,步驟(2.3.2.2)元數(shù)據(jù)文件系統(tǒng)模塊從AGLH中獲取當(dāng)前的AG的信息,如果找到一個(gè)未使用的AGN,則將其返回給AGADD工具,否則返回加載AG失敗信息;
步驟(2.3.3)初始化AG磁盤分區(qū);
步驟(2.3.3.1)將每個(gè)磁盤分區(qū)信息和AGN等相關(guān)信息寫入此AG的每個(gè)磁盤分區(qū)的SB中;
步驟(2.3.3.2)初始化AG的MSB信息,并根據(jù)AG信息初始化管理空閑空間的兩個(gè)B+樹;
步驟(2.3.3.3)將由AGN和DID組成的標(biāo)志字符串傳輸給元數(shù)據(jù)文件系統(tǒng)模塊;
步驟(2.3.4)元數(shù)據(jù)文件系統(tǒng)模塊為AGI初始化數(shù)據(jù)結(jié)構(gòu)AGI一Core;步驟(2.3.4.1)根據(jù)接收到的AG標(biāo)識(shí)字符串,掃描所有磁盤分區(qū),找到符合的磁盤分區(qū),并檢査其ASB是否正確;
步驟(2.3.4.2)根據(jù)讀取的ASB的信息,初始化AGI—Core,并將此結(jié)構(gòu)加載到AG鏈表,修正并行文件系統(tǒng)當(dāng)前的空間信息,如所有空間大小、剩余空間大?。?br> 步驟(2.3.4.3)初始化此AG在MDS的磁盤上數(shù)據(jù)結(jié)構(gòu),將所添加的AG的磁盤信息寫入AGList,修正MDS磁盤上的AG信息,包括AGLB和AGLH的相應(yīng)的信息;
步驟(2.3.4.4)將相應(yīng)的AGN標(biāo)識(shí)為已用;步驟(2.4) AG加載完成,空間分配模塊運(yùn)行,SAN并行文件系統(tǒng)轉(zhuǎn)入正常運(yùn)行狀態(tài);
步驟(3)所述并行文件系統(tǒng)按以下步驟響應(yīng)客戶端應(yīng)用程序的讀寫請(qǐng)求;步驟(3.1)所述并行文件系統(tǒng)按以下步驟響應(yīng)一個(gè)客戶端應(yīng)用程序的讀請(qǐng)
步驟(3丄1)客戶端的應(yīng)用程序發(fā)出讀請(qǐng)求到所述客戶端模塊;
步驟(3丄1.1)所述客戶端模塊首先查看是否緩存了相應(yīng)文件的元數(shù)據(jù),如果緩存了,直接跳到步驟(3丄3);
步驟(3丄1.2)所述客戶端模塊如果沒(méi)有緩存相應(yīng)元數(shù)據(jù),則通過(guò)所述交互層模塊和所述文件系統(tǒng)管理層模塊,將元數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊;
步驟(3丄2)所述客戶端模塊接受元數(shù)據(jù)訪問(wèn)請(qǐng)求后,進(jìn)行如下處理;
步驟(3丄2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢査此元數(shù)據(jù)是否被緩存,如果緩存了,跳轉(zhuǎn)到步驟(3丄2.2.3);
步驟(3丄2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊首先訪問(wèn)所述元數(shù)據(jù)服務(wù)器MDS磁盤;
步驟(3丄2.2.U所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)被訪問(wèn)文件的路徑
名生成相應(yīng)的所述目錄樹B+樹的鍵值;
步驟(3.1.2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取所述目錄樹B+樹的根節(jié)點(diǎn),根據(jù)所述鍵值,查找對(duì)應(yīng)文件的元數(shù)據(jù);
步驟(3.1.2.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取此文件的布局信息,并通過(guò)所述管理層模塊、所述交互層模塊返回給所述客戶端模塊;步驟(3丄3)所述客戶端模塊獲取文件布局信息,并讀取數(shù)據(jù)信息,步驟(3丄3.1)所述客戶端模塊分析獲取的文件布局信息,并査找需要的數(shù)據(jù)所在的區(qū)間Extent信息;
步驟(3.1.3.2)所述客戶端模塊通過(guò)所述區(qū)間Extent信息獲取所需要數(shù)據(jù)所在的AG;
步驟(3丄3.2.1)所述客戶端模塊檢查本地設(shè)備列表是否緩存了所要訪問(wèn)的AG的所有數(shù)據(jù)磁盤的DID,如果緩存了所述數(shù)據(jù)直接跳到步驟(3丄3.3);
步驟(3丄3.2.2)如果沒(méi)有所需設(shè)備的DID,那么所述客戶端模塊通過(guò)所述交互層模塊、所述管理層模塊發(fā)送相應(yīng)AG的設(shè)備列表信息請(qǐng)求到所述元數(shù)據(jù)文件系統(tǒng)模塊,獲取屬于相應(yīng)AG的所有磁盤的DID;
步驟(3丄3.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;
步驟(3丄3.2.4)所述客戶端模塊通過(guò)所述SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG的所有磁盤;
步驟(3丄3.3)所述客戶端模塊在AG的磁盤上讀取相應(yīng)的數(shù)據(jù)信息;步驟(3丄4)所述客戶端模塊將讀取的數(shù)據(jù)返回給應(yīng)用程序,結(jié)束此次讀請(qǐng)求;
步驟(3.2)所述并行文件系按以下步驟統(tǒng)響應(yīng)一個(gè)客戶端應(yīng)用程序的寫請(qǐng)
步驟(3.2.1)所述客戶端模塊生成文件寫請(qǐng)求;
步驟G.2丄l)所述客戶端模塊首先檢査已經(jīng)獲得文件元數(shù)據(jù)信息是否有空閑空間可以使用,如果沒(méi)有跳轉(zhuǎn)到步驟(3.2丄3);
步驟(3.2丄2)所述客戶端模塊檢査文件元數(shù)據(jù)信息空閑空間是否夠用,如果夠用,調(diào)轉(zhuǎn)到步驟(3.2.4);
步驟(3.2丄3)如果文件元數(shù)據(jù)信息空閑空間不夠用,所述客戶端模塊生成相應(yīng)的文件空間申請(qǐng)請(qǐng)求通過(guò)所述交互層模塊和所述管理層模塊發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊,同時(shí)使用文件元數(shù)據(jù)信息已有的空閑空間;
步驟(3.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)文件的寫請(qǐng)求生成相應(yīng)的空間分配請(qǐng)求進(jìn)行操作;
步驟(3.2.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢査當(dāng)前的整個(gè)文件系統(tǒng)的空閑空間是否滿足所需要的空閑空間大小,如果不滿足,則返回錯(cuò)誤,終止上述寫請(qǐng)求;
步驟(3.2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢査空閑空間分配請(qǐng)求的相應(yīng)的AG是否滿足所需要的空閑空間大小,如果滿足,選擇此AG進(jìn)行空間分配,否則選擇一個(gè)其他可以滿足此空閑空間請(qǐng)求的AG,跳轉(zhuǎn)到步驟(3.2.3);
步驟(3.2.2.3)如果所有單個(gè)AG都不滿足上述空閑空間請(qǐng)求,所述元數(shù)據(jù)文件系統(tǒng)模塊選取多個(gè)AG進(jìn)行空間分配,并根據(jù)每個(gè)AG的大小生成相應(yīng)的空間請(qǐng)求;
步驟(3.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊選取AG進(jìn)行空間分配;
步驟(3.2.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊查看當(dāng)前AG的空閑空間是否滿足需要分配的大??;
步驟(3.2.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢査當(dāng)前AG的Free List是否有滿足空閑空間B+樹進(jìn)行空間管理所需要的空間;
步驟(3.2.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求查找當(dāng)前AG的對(duì)應(yīng)的空閑空間B+樹,找到符合的Extent,可能需要多個(gè)Extent,在當(dāng)前B+樹中刪除或添加相應(yīng)的Extent;
步驟(3.2.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹,進(jìn)行兩個(gè)空閑空間B+樹平衡;
步驟(3.2.3.5)所述元數(shù)據(jù)文件系統(tǒng)模塊修改當(dāng)前AG和MDS上的ASB和MSB,記錄空間變化;
步驟(3.2.3.6)所述元數(shù)據(jù)文件系統(tǒng)模塊將此區(qū)間Extent的信息計(jì)入元數(shù)據(jù)服務(wù)器MDS磁盤的響應(yīng)的文件的Inode,但是不修改該文件的長(zhǎng)度信息;
步驟(3.2.3.7)所述元數(shù)據(jù)文件系統(tǒng)模塊將得到的區(qū)間Extent填入相應(yīng)的返回列表,并將所述列表通過(guò)交互層模塊發(fā)送到所述客戶端模塊;步驟(3.2.4)所述客戶端模塊獲得文件空閑空間信息,開始寫入數(shù)據(jù)信息;
步驟(3.2.4.1)所述客戶端模塊分析獲取的文件空閑空間信息,并査找需要的數(shù)據(jù)所在的區(qū)間Extent;
步驟(3.2.4.2)所述客戶端模塊通過(guò)區(qū)間Extent信息獲取所需要數(shù)據(jù)所在的AG;
步驟(3.2.4.2.1)所述客戶端模塊檢査本地設(shè)備列表是否緩存了所要訪問(wèn)的AG的所有磁盤的DID,如果緩存了直接跳到步驟(3.2.4.3);
步驟(3.2.4.2.2)如果沒(méi)有所需設(shè)備的DID,所述客戶端模塊那么發(fā)送相應(yīng)AG的磁盤列表信息請(qǐng)求到MDS,請(qǐng)求相應(yīng)的磁盤的DID;
步驟(3.2.4.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;
步驟(3.2.4.2.4)所述客戶端模塊通過(guò)SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG的所有磁盤;
步驟(3.2.4.3)所述客戶端模塊在相應(yīng)的AG的磁盤上寫入相應(yīng)的數(shù)
據(jù);
步驟(3.2.5)元數(shù)據(jù)服務(wù)器MDS根據(jù)客戶端的訪問(wèn)信息,修改相應(yīng)文件的Inode中的元數(shù)據(jù);
步驟(3.2.5.1)如果客戶端繼續(xù)寫,跳轉(zhuǎn)到步驟(3.2丄1);
步驟(3.2.5.2)如果數(shù)據(jù)寫完,所述客戶端模塊將已經(jīng)使用的新生成的文件元數(shù)據(jù)信息和文件空閑空間信息通過(guò)所述交互層模塊發(fā)送給所述管理層模塊;
步驟(3.2.5.3)如果有文件空閑空間信息,所述管理層模塊發(fā)送空間釋放請(qǐng)求到所述元數(shù)據(jù)文件系統(tǒng)模塊進(jìn)行空間釋放;
步驟(3.2.5.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊檢查Free List是否有滿足空閑空間B+樹進(jìn)行空間管理所需要的空間;
步驟(3.2.5.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求査找對(duì)應(yīng)的空閑空間B+樹中相應(yīng)的區(qū)間Extent的插入位置,進(jìn)行刪除或添加相應(yīng)的區(qū)間Extent;
步驟(3.2.5.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹,進(jìn)行空閑空間B+樹平衡,步驟(3.2.5.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊修改對(duì)應(yīng)AG的所述ASB 和MSB上的空間信息;
步驟(3.2.5.4所述元數(shù)據(jù)文件系統(tǒng)模塊修改相應(yīng)文件的Inode信息, 將文件的大小信息更新為當(dāng)前的返回值
步驟(3.2.6)所述客戶端模塊返回操作完成信息到應(yīng)用程序,結(jié)束所 述寫請(qǐng)求。
當(dāng)所述分配組只有一個(gè)磁盤分區(qū)時(shí),只采用所述第一磁盤分區(qū)。
3權(quán)利要求
1、并行文件系統(tǒng)中資源的管理和分配方法,其特征在于,所述方法是一種Linux SAN并行文件系統(tǒng)資源的管理和分配方法,依次含有以下步驟步驟(1)構(gòu)建一個(gè)所述的Linux SAN并行文件系統(tǒng),以下簡(jiǎn)稱并行文件系統(tǒng);所述并行文件系統(tǒng)是由不少于一個(gè)客戶端,不少于一個(gè)存儲(chǔ)設(shè)備,不少于一個(gè)元數(shù)據(jù)服務(wù)器MDS,和存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN組成,所述客戶端和所述元數(shù)據(jù)服務(wù)器之間的TCP/IP網(wǎng)絡(luò)是控制通路,傳輸元數(shù)據(jù)和控制信息,所述客戶端、所述元數(shù)據(jù)服務(wù)器與起所述存儲(chǔ)設(shè)備作用的磁盤陣列之間的所述SAN網(wǎng)絡(luò)是數(shù)據(jù)通路,所述元數(shù)據(jù)服務(wù)器和所述客戶端直接通過(guò)所述數(shù)據(jù)通路在所述磁盤陣列上進(jìn)行數(shù)據(jù)訪問(wèn),在所述存儲(chǔ)設(shè)備上,有兩種磁盤,數(shù)據(jù)磁盤,至少存儲(chǔ)數(shù)據(jù)、磁盤的狀態(tài)和空間分配信息,另一種是元數(shù)據(jù)服務(wù)器MDS磁盤,至少存儲(chǔ)元數(shù)據(jù)、所述數(shù)據(jù)磁盤的信息、所述元數(shù)據(jù)磁盤的信息、以及所述并行文件系統(tǒng)的結(jié)構(gòu)、狀態(tài)信息,其中所述數(shù)據(jù)磁盤分為至少一個(gè)分配組AG,而每個(gè)所述分配組又至少分為兩個(gè)磁盤分區(qū),其中,第一個(gè)所述磁盤分區(qū)包括保留區(qū)、分配組超級(jí)快ASB、第一B+樹(1)的和第二B+樹(2)的根節(jié)點(diǎn)Tree Root,其中,所述分配組超級(jí)快ASB包括分配組號(hào)AGN、設(shè)備標(biāo)識(shí)DID、第一B+樹(1)的和第二B+樹(2)的根節(jié)點(diǎn)的地址B+Tree Root[2]、所述分配組AG狀態(tài)信息AG State Information、以及所述兩個(gè)B+樹空閑列表Free List,簡(jiǎn)稱FL,在所述的兩個(gè)B+樹中,每個(gè)節(jié)點(diǎn)是所述分配組AG中數(shù)據(jù)存儲(chǔ)和檢索的一段基本數(shù)據(jù)空間單元,簡(jiǎn)稱一個(gè)快,所述兩個(gè)B+樹的索引中的每一項(xiàng)是由所述分配組AG的多個(gè)連續(xù)空閑塊組成的一段空閑空間,所述分配組AG上的所述每段空閑空間通過(guò)所述兩個(gè)B+樹中的所對(duì)應(yīng)的區(qū)間Extent來(lái)索引,每個(gè)所述區(qū)間Extent由兩項(xiàng)組成第一項(xiàng)是所述該段空閑空間所在的所述磁盤分區(qū)的起始?jí)K號(hào)start,第二項(xiàng)是所述該段空閑空間覆蓋的塊的數(shù)量,用該段空閑空間的長(zhǎng)度Len表示,初始時(shí),所有空閑空間的索引Extent全部保存在所述兩個(gè)B+樹中,其中所述第一B+樹(1)用所述區(qū)間Extent的起始?jí)K號(hào)作為鍵值,所述第二B+樹(2)用所述區(qū)間Extent的第二項(xiàng)所述該段空間的長(zhǎng)度作為鍵值,在所述分配組超級(jí)快ASB中,所述分配組AG的狀態(tài)信息State Information是指所述分配組AG的空閑空間或非空閑空間,所述空閑列表Free List由所述一個(gè)塊地址數(shù)組和三個(gè)變量組成,其中包括所述空閑空間組成的可分配塊在所述數(shù)組中的起始位置first,用地指標(biāo)是,下同,末尾位置last,可分配的塊的個(gè)數(shù)count,所述的空閑列表Free List所管理的塊由所述兩個(gè)B+樹進(jìn)行分配和釋放,除了所述第一磁盤分區(qū)外,其余每個(gè)磁盤分區(qū)包括保留區(qū)和超級(jí)快SB,該超級(jí)快SB包括所述的AGN和DID;所述元數(shù)據(jù)服務(wù)器MDS磁盤包括保留區(qū)、主超級(jí)快MSB,位圖Bitmap,日志Journal,分配組鏈表信息AGLI以及目錄樹根節(jié)點(diǎn)Inode Root;所述主超級(jí)快MSB包括文件系統(tǒng)狀態(tài)File System State,日志地址Journal Address,AG鏈表根節(jié)點(diǎn)AGLH的地址AGIP,以及目錄樹根節(jié)點(diǎn)地址Inode Address,其中,所述文件系統(tǒng)狀態(tài)File System State包含文件系統(tǒng)的塊大小Block Size、掛載標(biāo)識(shí)Mounted Flag、元數(shù)據(jù)磁盤空間大小MDS Block Size以及空閑空間大小MDS Free Size,所述分配組AG鏈表根節(jié)點(diǎn)AGLH的地址AGIP包括所述分配組鏈表根節(jié)點(diǎn)AGLH,AG鏈表位圖AGLB,以及所述分配組鏈表AG List,其中,所述分配組鏈表根節(jié)點(diǎn)AGLH包括分配組總數(shù)AGCount、所有AG的可用空間大小AGs Total Blocks以及空閑空間大小AGs FreeBlocks,所述分配組鏈表AG List由AG信息AGI以數(shù)組的形式組成,每個(gè)所述AG信息AGI包含一個(gè)分配組AG的信息,其中,包括分配組號(hào)AGN,不少于一個(gè)的分配中磁盤分區(qū)的設(shè)備標(biāo)識(shí)DID,每個(gè)所述AG的信息AGI,線性且連續(xù)保存在所述元數(shù)據(jù)服務(wù)器MDS磁盤上,位置由所述AG鏈表位圖AGLB所索引,所述目錄樹根節(jié)點(diǎn)Inode Root由目錄B+樹來(lái)管理的,所述目錄B+樹索引的每一項(xiàng)是一個(gè)節(jié)點(diǎn)Inode,所有文件和目錄都是由Inode表示,該Inode的鍵值是由所述文件或者目錄所在父目錄的文件名的哈希值、所述文件或者目錄的名稱的哈希值、所述文件或者目錄的類型Type組成,所述類型Type包括文件類型、目錄類型、元數(shù)據(jù)類型,其中,所述文件類型的Inode用于存儲(chǔ)文件的所述布局信息,即從所述管理空閑空間的兩個(gè)B+樹中分配出來(lái)的區(qū)間Extent,所述目錄類型的Inode用于存儲(chǔ)包含在當(dāng)前目錄下的所述文件的文件名和目錄的目錄名,元數(shù)據(jù)類型的Inode包含該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的元數(shù)據(jù)信息,該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的Inode地址,以及該節(jié)點(diǎn)Inode對(duì)應(yīng)的文件或者目錄的Inode類型Type,其中所述的元數(shù)據(jù)信息是指由IEEF制定的POSIX標(biāo)準(zhǔn)定義的元數(shù)據(jù)信息;在所述客戶端設(shè)有客戶端模塊和交互層模塊,其中,所述客戶端模塊設(shè)有虛擬文件系統(tǒng)VFS層的調(diào)用接口,并進(jìn)行數(shù)據(jù)和元數(shù)據(jù)的緩存,對(duì)于所述VFS層的函數(shù)調(diào)用,則按以下方式判斷若是和所述元數(shù)據(jù)服務(wù)器的交互操作,則生成相應(yīng)的請(qǐng)求通過(guò)函數(shù)調(diào)用發(fā)送到底層的所述交互層模塊,所述函數(shù)調(diào)用包括該文件系統(tǒng)客戶端使用的所有請(qǐng)求操作,以及當(dāng)前請(qǐng)求的索引,若是對(duì)所述數(shù)據(jù)磁盤進(jìn)行數(shù)據(jù)訪問(wèn)的操作,則生成相應(yīng)的數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到底層的SAN驅(qū)動(dòng)模塊,所述交互層模塊通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議實(shí)現(xiàn)所述客戶端和所述元數(shù)據(jù)服務(wù)器MDS之間的通信;在所述元數(shù)據(jù)服務(wù)器中,設(shè)有SAN文件系統(tǒng)管理模塊,簡(jiǎn)稱管理層模塊,交互層模塊和元數(shù)據(jù)文件系統(tǒng)模塊,其中所述交互層模塊和所述管理層模塊相連,當(dāng)向所述管理層模塊發(fā)送以下各種請(qǐng)求系統(tǒng)狀態(tài)管理請(qǐng)求,操作狀態(tài)管理請(qǐng)求,元數(shù)據(jù)訪問(wèn)請(qǐng)求以及空間管理請(qǐng)求,所述管理層模塊則把生成的相應(yīng)請(qǐng)求發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊中;元數(shù)據(jù)文件系統(tǒng)模塊設(shè)有以下接口Linux內(nèi)核中的本地文件系統(tǒng)的內(nèi)核調(diào)用接口,接收所述元數(shù)據(jù)訪問(wèn)的請(qǐng)求,元數(shù)據(jù)文件系統(tǒng)所述第一調(diào)用接口,供所述管理層模塊調(diào)用,其中管理的信息包括空閑空間的大小、AGN、其實(shí)地址以及相應(yīng)的區(qū)間Extent鏈表;元數(shù)據(jù)文件系統(tǒng)模塊還設(shè)有第二模塊接口,從所述元數(shù)據(jù)服務(wù)器的SAN驅(qū)動(dòng)模塊中調(diào)用需要釋放的區(qū)間Extent,以及所述并行文件系統(tǒng)的包括元數(shù)據(jù)MSB在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)MSB_Core的指針i_private,以及以下數(shù)據(jù)結(jié)構(gòu)MSB_Core,AGLH_Core,AGLH,AGI_Core,以及AGI,其中MSB_Core包括目錄樹根節(jié)點(diǎn)Inode_Root和所述AGLH內(nèi)存中所述數(shù)據(jù)結(jié)構(gòu)AGLH_Core的指針AGLH_point;AGLH_Core包括AGLH在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址AGLH_disk_piont和所述AGI以下兩個(gè)鏈表指針AGI鏈表指針AGI_List_piont和所述AGI哈希表指針AGI_hash_piont;AGI_Core包括所述AGI在所述元數(shù)據(jù)服務(wù)器MDS磁盤的地址AGI_disk_piont,所述AGI鏈表指針AGI_List_piont,AGLI_Core指針AGLI_Core_piont,可訪問(wèn)磁盤分區(qū)在內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)的數(shù)組Block_Device_Array,所述兩個(gè)B+樹在數(shù)據(jù)磁盤上地址,所述空閑空間列表FreeList在數(shù)據(jù)磁盤上的地址Free_List,以及該AG的磁盤分區(qū)的所述DID在內(nèi)存中的數(shù)組Device_Lable_List;AGI,包括所述AGN和DID;步驟(2)按以下步驟啟動(dòng)所述并行文件系統(tǒng)步驟(2.1)初始化所述元數(shù)據(jù)服務(wù)器MDS磁盤;步驟(2.2)加載所述元數(shù)據(jù)服務(wù)器需要的所述各種模塊,掛載所述元數(shù)據(jù)服務(wù)器MDS磁盤;步驟(2.3)在所述元數(shù)據(jù)服務(wù)器MDS磁盤上加載新的AG;步驟(3)所述并行文件系統(tǒng)按以下步驟響應(yīng)客戶端應(yīng)用程序的讀寫請(qǐng)求;步驟(3.1)所述并行文件系統(tǒng)按以下步驟響應(yīng)一個(gè)客戶端應(yīng)用程序的讀請(qǐng)求步驟(3.1.1)客戶端的應(yīng)用程序發(fā)出讀請(qǐng)求到所述客戶端模塊;步驟(3.1.1.1)所述客戶端模塊首先查看是否緩存了相應(yīng)文件的元數(shù)據(jù),如果緩存了,直接跳到步驟(3.1.3);步驟(3.1.1.2)所述客戶端模塊如果沒(méi)有緩存相應(yīng)元數(shù)據(jù),則通過(guò)所述交互層模塊和所述文件系統(tǒng)管理層模塊,將元數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊;步驟(3.1.2)所述客戶端模塊接受元數(shù)據(jù)訪問(wèn)請(qǐng)求后,進(jìn)行如下處理;步驟(3.1.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢查此元數(shù)據(jù)是否被緩存,如果緩存了,跳轉(zhuǎn)到步驟(3.1.2.2.3);步驟(3.1.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊首先訪問(wèn)所述元數(shù)據(jù)服務(wù)器MDS磁盤;步驟(3.1.2.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)被訪問(wèn)文件的路徑名生成相應(yīng)的所述目錄樹B+樹的鍵值;步驟(3.1.2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取所述目錄樹B+樹的根節(jié)點(diǎn),根據(jù)所述鍵值,查找對(duì)應(yīng)文件的元數(shù)據(jù);步驟(3.1.2.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊讀取此文件的布局信息,并通過(guò)所述管理層模塊、所述交互層模塊返回給所述客戶端模塊;步驟(3.1.3)所述客戶端模塊獲取文件布局信息,并讀取數(shù)據(jù)信息,步驟(3.1.3.1)所述客戶端模塊分析獲取的文件布局信息,并查找需要的數(shù)據(jù)所在的區(qū)間Extent信息;步驟(3.1.3.2)所述客戶端模塊通過(guò)所述區(qū)間Extent信息獲取所需要數(shù)據(jù)所在的AG;步驟(3.1.3.2.1)所述客戶端模塊檢查本地設(shè)備列表是否緩存了所要訪問(wèn)的AG的所有數(shù)據(jù)磁盤的DID,如果緩存了所述數(shù)據(jù)直接跳到步驟(3.1.3.3);步驟(3.1.3.2.2)如果沒(méi)有所需設(shè)備的DID,那么所述客戶端模塊通過(guò)所述交互層模塊、所述管理層模塊發(fā)送相應(yīng)AG的設(shè)備列表信息請(qǐng)求到所述元數(shù)據(jù)文件系統(tǒng)模塊,獲取屬于相應(yīng)AG的所有磁盤的DID;步驟(3.1.3.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;步驟(3.1.3.2.4)所述客戶端模塊通過(guò)所述SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG的所有磁盤;步驟(3.1.3.3)所述客戶端模塊在AG的磁盤上讀取相應(yīng)的數(shù)據(jù)信息;步驟(3.1.4)所述客戶端模塊將讀取的數(shù)據(jù)返回給應(yīng)用程序,結(jié)束此次讀請(qǐng)求;步驟(3.2)所述并行文件系按以下步驟統(tǒng)響應(yīng)一個(gè)客戶端應(yīng)用程序的寫請(qǐng)求步驟(3.2.1)所述客戶端模塊生成文件寫請(qǐng)求;步驟(3.2.1.1)所述客戶端模塊首先檢查已經(jīng)獲得文件元數(shù)據(jù)信息是否有空閑空間可以使用,如果沒(méi)有跳轉(zhuǎn)到步驟(3.2.1.3);步驟(3.2.1.2)所述客戶端模塊檢查文件元數(shù)據(jù)信息空閑空間是否夠用,如果夠用,調(diào)轉(zhuǎn)到步驟(3.2.4);步驟(3.2.1.3)如果文件元數(shù)據(jù)信息空閑空間不夠用,所述客戶端模塊生成相應(yīng)的文件空間申請(qǐng)請(qǐng)求通過(guò)所述交互層模塊和所述管理層模塊發(fā)送到所述元數(shù)據(jù)文件系統(tǒng)模塊,同時(shí)使用文件元數(shù)據(jù)信息已有的空閑空間;步驟(3.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)文件的寫請(qǐng)求生成相應(yīng)的空間分配請(qǐng)求進(jìn)行操作;步驟(3.2.2.1)所述元數(shù)據(jù)文件系統(tǒng)模塊首先檢查當(dāng)前的整個(gè)文件系統(tǒng)的空閑空間是否滿足所需要的空閑空間大小,如果不滿足,則返回錯(cuò)誤,終止上述寫請(qǐng)求;步驟(3.2.2.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢查空閑空間分配請(qǐng)求的相應(yīng)的AG是否滿足所需要的空閑空間大小,如果滿足,選擇此AG進(jìn)行空間分配,否則選擇一個(gè)其他可以滿足此空閑空間請(qǐng)求的AG,跳轉(zhuǎn)到步驟(3.2.3);步驟(3.2.2.3)如果所有單個(gè)AG都不滿足上述空閑空間請(qǐng)求,所述元數(shù)據(jù)文件系統(tǒng)模塊選取多個(gè)AG進(jìn)行空間分配,并根據(jù)每個(gè)AG的大小生成相應(yīng)的空間請(qǐng)求;步驟(3.2.3)所述元數(shù)據(jù)文件系統(tǒng)模塊選取AG進(jìn)行空間分配;步驟(3.2.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊查看當(dāng)前AG的空閑空間是否滿足需要分配的大??;步驟(3.2.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊檢查當(dāng)前AG的Free List是否有滿足空閑空間B+樹進(jìn)行空間管理所需要的空間;步驟(3.2.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求查找當(dāng)前AG的對(duì)應(yīng)的空閑空間B+樹,找到符合的Extent,可能需要多個(gè)Extent,在當(dāng)前B+樹中刪除或添加相應(yīng)的Extent;步驟(3.2.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹,進(jìn)行兩個(gè)空閑空間B+樹平衡;步驟(3.2.3.5)所述元數(shù)據(jù)文件系統(tǒng)模塊修改當(dāng)前AG和MDS上的ASB和MSB,記錄空間變化;步驟(3.2.3.6)所述元數(shù)據(jù)文件系統(tǒng)模塊將此區(qū)間Extent的信息計(jì)入元數(shù)據(jù)服務(wù)器MDS磁盤的響應(yīng)的文件的Inode,但是不修改該文件的長(zhǎng)度信息;步驟(3.2.3.7)所述元數(shù)據(jù)文件系統(tǒng)模塊將得到的區(qū)間Extent填入相應(yīng)的返回列表,并將所述列表通過(guò)交互層模塊發(fā)送到所述客戶端模塊;步驟(3.2.4)所述客戶端模塊獲得文件空閑空間信息,開始寫入數(shù)據(jù)信息;步驟(3.2.4.1)所述客戶端模塊分析獲取的文件空閑空間信息,并查找需要的數(shù)據(jù)所在的區(qū)間Extent;步驟(3.2.4.2)所述客戶端模塊通過(guò)區(qū)間Extent信息獲取所需要數(shù)據(jù)所在的AG;步驟(3.2.4.2.1)所述客戶端模塊檢查本地設(shè)備列表是否緩存了所要訪問(wèn)的AG的所有磁盤的DID,如果緩存了直接跳到步驟(3.2.4.3);步驟(3.2.4.2.2)如果沒(méi)有所需設(shè)備的DID,所述客戶端模塊那么發(fā)送相應(yīng)AG的磁盤列表信息請(qǐng)求到MDS,請(qǐng)求相應(yīng)的磁盤的DID;步驟(3.2.4.2.3)所述客戶端模塊通過(guò)已獲得的DID,掃描所有磁盤的DID,找到與已獲得的DID相同的屬于所述相應(yīng)AG的所有磁盤;步驟(3.2.4.2.4)所述客戶端模塊通過(guò)SAN驅(qū)動(dòng)模塊訪問(wèn)相應(yīng)AG的所有磁盤;步驟(3.2.4.3)所述客戶端模塊在相應(yīng)的AG的磁盤上寫入相應(yīng)的數(shù)據(jù);步驟(3.2.5)元數(shù)據(jù)服務(wù)器MDS根據(jù)客戶端的訪問(wèn)信息,修改相應(yīng)文件的Inode中的元數(shù)據(jù);步驟(3.2.5.1)如果客戶端繼續(xù)寫,跳轉(zhuǎn)到步驟(3.2.1.1);步驟(3.2.5.2)如果數(shù)據(jù)寫完,所述客戶端模塊將已經(jīng)使用的新生成的文件元數(shù)據(jù)信息和文件空閑空間信息通過(guò)所述交互層模塊發(fā)送給所述管理層模塊;步驟(3.2.5.3)如果有文件空閑空間信息,所述管理層模塊發(fā)送空間釋放請(qǐng)求到所述元數(shù)據(jù)文件系統(tǒng)模塊進(jìn)行空間釋放;步驟(3.2.5.3.1)所述元數(shù)據(jù)文件系統(tǒng)模塊檢查Free List是否有滿足空閑空間B+樹進(jìn)行空間管理所需要的空間;步驟(3.2.5.3.2)所述元數(shù)據(jù)文件系統(tǒng)模塊根據(jù)分配請(qǐng)求查找對(duì)應(yīng)的空閑空間B+樹中相應(yīng)的區(qū)間Extent的插入位置,進(jìn)行刪除或添加相應(yīng)的區(qū)間Extent;步驟(3.2.5.3.3)所述元數(shù)據(jù)文件系統(tǒng)模塊同步兩個(gè)空閑空間B+樹,進(jìn)行空閑空間B+樹平衡,步驟(3.2.5.3.4)所述元數(shù)據(jù)文件系統(tǒng)模塊修改對(duì)應(yīng)AG的所述ASB和MSB上的空間信息;步驟(3.2.5.4)所述元數(shù)據(jù)文件系統(tǒng)模塊修改相應(yīng)文件的Inode信息,將文件的大小信息更新為當(dāng)前的返回值步驟(3.2.6)所述客戶端模塊返回操作完成信息到應(yīng)用程序,結(jié)束所述寫請(qǐng)求。
2、根據(jù)權(quán)利要求l所述并行文件系統(tǒng)中資源的管理和分配方法,其特征在 于當(dāng)所述分配組只有一個(gè)磁盤分區(qū)時(shí),只采用所述第一磁盤分區(qū)。
全文摘要
并行文件系統(tǒng)中資源的管理和分配方法屬于SAN區(qū)域網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域。其特征是通過(guò)將存儲(chǔ)資源分成多個(gè)分配組(Allocate Group,AG),并行分配,降低了單個(gè)分配組對(duì)其他分配組的影響,提高了并行文件系統(tǒng)的吞吐率、可靠性和管理效率,每個(gè)AG可以由單個(gè)磁盤分區(qū)或者多個(gè)磁盤按照Raid形式構(gòu)成,多個(gè)AG之間也可以使用副本策略,通過(guò)存儲(chǔ)資源的兩層虛擬化,提高系統(tǒng)的性能、可用性和可靠性,每個(gè)分區(qū)使用B+樹進(jìn)行空間分配,并存儲(chǔ)自己的B+樹數(shù)據(jù),與傳統(tǒng)SAN文件系統(tǒng)相比降低了并行文件系統(tǒng)元數(shù)據(jù)服務(wù)器的壓力,提高了分配效率,在通過(guò)B+樹實(shí)現(xiàn)的目錄樹中索引文件元數(shù)據(jù)和目錄元數(shù)據(jù),保持文件元數(shù)據(jù)存儲(chǔ)的局部性,與傳統(tǒng)SAN文件系統(tǒng)相比提高了元數(shù)據(jù)訪問(wèn)的性能。
文檔編號(hào)H04L29/08GK101567003SQ20091008570
公開日2009年10月28日 申請(qǐng)日期2009年5月27日 優(yōu)先權(quán)日2009年5月27日
發(fā)明者易樂(lè)天, 磊 王, 舒繼武, 巍 薛 申請(qǐng)人:清華大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1