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