專利名稱:一種分布式文件系統(tǒng)數(shù)據(jù)分片換段的方法
技術領域:
本發(fā)明涉及分布式文件系統(tǒng)中文件存儲分片方式下磁盤空間分配和管理的一種策略,具體涉及了一種在面向?qū)ο蟠鎯Φ姆植际轿募到y(tǒng)中,數(shù)據(jù)分片存儲模式下空間分片的一種策略。
背景技術:
在文件系統(tǒng)中,數(shù)據(jù)空間的分配和管理都是一項比較關鍵的技術問題。在本地文件系統(tǒng)中,磁盤空間一般采用按需實時分配的策略。實時分配是當文件系統(tǒng)要寫一塊數(shù)據(jù)時,在磁盤上同時分配相應一個塊的磁盤空間。這種策略保證了寫到內(nèi)存緩存中的數(shù)據(jù)不會因為磁盤空間不足而導致數(shù)據(jù)丟失。但是這種策略也使寫新文件時,頻繁調(diào)用空間分配器影響性能。在新一代的一些比較先進文件系統(tǒng)上,普遍采用了預分配和延遲分配的策略。預分配和延遲分配都可以減少空間分配器的調(diào)用次數(shù),減少開銷。在分布式文件系統(tǒng)中,文件的數(shù)據(jù)一般都通過分片的方式分布在多個數(shù)據(jù)服務器的多個磁盤上,一個文件保存在每個磁盤上的數(shù)據(jù)稱為該文件的一個對象。通過分片的方式可以克服單個磁盤帶寬的限制,使多個磁盤并發(fā)工作,提高整個磁盤的聚合帶寬。在這種基于對象的分布式文件系統(tǒng)中,只保存一個文件分布在哪個對象的信息, 并沒有保存該對象空間的一些信息。在這種模式下實際上都采用了延遲分配對象空間的策略。這種策略并沒有對空間進行必要的管理。這種方式導致在一個分片空間不足時,需要切換到另一個數(shù)據(jù)段,也就是另一組磁盤分片中。當有文件空洞時,這種空間劃分會導致仍然有磁盤空間不足的問題,從而產(chǎn)生磁盤訪問數(shù)據(jù)的混亂。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供了一種方法可以保證應用層寫到磁盤中的數(shù)據(jù)不會因為某個分片磁盤空間不足而導致數(shù)據(jù)丟失的情況,同時支持文件存儲換段操作。
—種分布式文件系統(tǒng)數(shù)據(jù)分片換段的方法,在每個文件分片的段中增加一個標記對象,所述標記對象用于存儲該段中因磁盤空間不足而產(chǎn)生的文件空洞的信息;在標記對象頭中預留空間,所述預留空間用于保存文件空洞在對象文件中的位置和在標記對象中位置的映射信息;讀操作和寫操作遇到文件空洞后,根據(jù)文件空洞類型作相應處理。優(yōu)選的,所述文件空洞由客戶訪問數(shù)據(jù)服務器的對象時產(chǎn)生。優(yōu)選的,所述文件空洞類型包括真洞與假洞,其中,所述真洞為通過Iseek操作產(chǎn)生的文件空洞,所述假洞為由于磁盤空間不足而導致的文件空洞。優(yōu)選的,所述文件空洞為真洞或假洞標記在標記對象中。優(yōu)選的,所述標記在內(nèi)核態(tài)或用戶態(tài)實現(xiàn)。
優(yōu)選的,所述讀操作遇到文件空洞后的操作過程為在數(shù)據(jù)服務器判斷該文件空洞的類型,若為真洞,則正常填0并返回;若為假洞, 則重定向到標記對象,并根據(jù)標記對象頭的地址信息來確定該頁真實數(shù)據(jù)存放的位置,并讀取。優(yōu)選的,所述寫操作遇到文件空洞后的操作過程為客戶端把緩存在內(nèi)存中的數(shù)據(jù)刷回數(shù)據(jù)服務器時,如果磁盤空間不足,且該段并不是最后一個段,則把該對象所寫頁在底層文件系統(tǒng)的元數(shù)據(jù)中標記為假洞;同時把對該頁的數(shù)據(jù)的寫操作定向到標記對象上。優(yōu)選的,所述定向到標記對象上的過程為首先在對象的頭部添加位置映射信息, 并把該數(shù)據(jù)寫入標記對象中,且對特殊對象的寫都是追加模式的寫。本發(fā)明通過在文件空洞上增加標志位,使得讀取和寫入操作都不會因為文件洞導致操作失敗,同時支持了文件存儲換段的操作。
具體實施例方式下面對本發(fā)明做進一步詳細的描述在每個文件分片的段中增加一個標記對象,用來存儲該段中因磁盤空間不足而產(chǎn)生的文件空洞。在標記對象頭中保存文件洞在對象文件中位置和在標記對象中位置的映射信息。這需要在標記對象的頭中預留空間來保存這樣的信息。文件洞的標記當因為磁盤空間不足而導致的文件洞稱之為假洞,當通過Iseek 操作導致的文件洞為真的文件洞。在在訪問數(shù)據(jù)服務器的對象時產(chǎn)生了洞,需要標記這兩種不同的情況。只有假的文件洞才需要重定向到訪問標記對象。這種方法在內(nèi)核態(tài)實現(xiàn)比較方便,在用戶態(tài)標記頁是否是空洞比較困難,但都是可以實現(xiàn)的。寫操作流程1)客戶端把緩存在內(nèi)存中的數(shù)據(jù)刷回數(shù)據(jù)服務器時,如果磁盤空間不足,并且該段并不是最后一個段,也就是已經(jīng)換過段了,則把該對象寫的頁在底層文件系統(tǒng)的元數(shù)據(jù)中標記為假的空洞。2)把對該頁的數(shù)據(jù)的寫操作定向到標記對象上,首先在對象的頭部添加位置映射信息,并把該數(shù)據(jù)寫入特殊的對象中,應該注意的是,對標記對象的寫都是追加模式的寫。讀操作流程在沒有文件洞的情況下的操作流程都是正常的讀操作流程,當有文件洞時1)首先要在數(shù)據(jù)服務器上判斷該文件洞時真洞還是假的洞,如果是真的文件洞, 則正常的填0并返回。2)如果標記文件洞為假洞,則要重定向到標記對象上根據(jù)對象頭的地址信息來確定該頁真實數(shù)據(jù)存放的位置,根據(jù)此來獲取實際的數(shù)據(jù)。
權利要求
1.一種分布式文件系統(tǒng)數(shù)據(jù)分片換段的方法,其特征在于在每個文件分片的段中增加一個標記對象,所述標記對象用于存儲該段中因磁盤空間不足而產(chǎn)生的文件空洞的信息;在標記對象頭中預留空間,所述預留空間用于保存文件空洞在對象文件中的位置和在標記對象中位置的映射信息;讀操作和寫操作遇到文件空洞后,根據(jù)文件空洞類型作相應處理。
2.如權利要求1所述的方法,其特征在于所述文件空洞由客戶訪問數(shù)據(jù)服務器的對象時產(chǎn)生。
3.如權利要求2所述的方法,其特征在于所述文件空洞類型包括真洞與假洞,其中, 所述真洞為通過Iseek操作產(chǎn)生的文件空洞,所述假洞為由于磁盤空間不足而導致的文件空洞。
4.如權利要求3所述的方法,其特征在于所述文件空洞為真洞或假洞標記在標記對象中。
5.如權利要求4所述的方法,其特征在于所述標記在內(nèi)核態(tài)或用戶態(tài)實現(xiàn)。
6.如權利要求1所述的方法,其特征在于所述讀操作遇到文件空洞后的操作過程為在數(shù)據(jù)服務器判斷該文件空洞的類型,若為真洞,則正常填0并返回;若為假洞,則重定向到標記對象,并根據(jù)標記對象頭的地址信息來確定該頁真實數(shù)據(jù)存放的位置,并讀取。
7.如權利要求1所述的方法,其特征在于所述寫操作遇到文件空洞后的操作過程為客戶端把緩存在內(nèi)存中的數(shù)據(jù)刷回數(shù)據(jù)服務器時,如果磁盤空間不足,且該段并不是最后一個段,則把該對象所寫頁在底層文件系統(tǒng)的元數(shù)據(jù)中標記為假洞;同時把對該頁的數(shù)據(jù)的寫操作定向到標記對象上。
8.如權利要求7所述的方法,其特征在于所述定向到標記對象上的過程為首先在對象的頭部添加位置映射信息,并把該數(shù)據(jù)寫入標記對象中,且對特殊對象的寫都是追加模式的寫。
全文摘要
本發(fā)明提供了一種分布式文件系統(tǒng)數(shù)據(jù)分片換段的方法,在每個文件分片的段中增加一個標記對象,所述標記對象用于存儲該段中因磁盤空間不足而產(chǎn)生的文件空洞的信息;在標記對象頭中預留空間,所述預留空間用于保存文件空洞在對象文件中的位置和在標記對象中位置的映射信息;讀操作和寫操作遇到文件空洞后,根據(jù)文件空洞類型作相應處理。本發(fā)明通過在文件空洞上增加標志位,使得讀取和寫入操作都不會因為文件洞導致操作失敗,同時支持了文件存儲換段的操作。
文檔編號G06F17/30GK102567443SQ20111032647
公開日2012年7月11日 申請日期2011年10月25日 優(yōu)先權日2011年10月25日
發(fā)明者付根希, 呂明強, 常濤 申請人:無錫城市云計算中心有限公司