專利名稱:一種基于數據容器的高性能私有云存儲節點文件系統設計的制作方法
技術領域:
本發明涉及私有云存儲的節點文件系統,尤其是對節點數據存儲和整體文件訪問提供高性能支持。屬于云計算技術和計算機軟件技術領域。
背景技術:
通常私有云存儲系統采用分布式文件系統作為存儲的基礎。分布式文件系統一般采用單一中心控制節點和多個存儲節點的星型結構或無控制節點的完全分布結構。由于前者管理簡單、實現容易,所以為大多數私有云存儲系統所采用。在這種結構中,控制節點負責元數據的管理,如用戶的目錄結構、文件名和文件存儲位置的映射關系等。文件數據實際存放在某個或幾個存儲節點上。用戶訪問文件時,需要通過控制節點獲得文件的位置信息和其它信息,然后訪問存儲節點,獲得完整的文件。通常存儲節點的管理完全依賴操作系統 提供的文件系統實現,用戶文件或分塊或完整的作為一個文件存放到節點磁盤空間的某個目錄下,訪問文件時需要依賴文件系統的目錄搜索、文件定位和文件讀寫功能。當盤空間存放的文件數量到達一定級別時,文件訪問性能會大幅下降,當多個用戶并發訪問文件系統時也會出現更加嚴重的性能瓶頸。這是因為文件系統固有的設計造成的,缺少對海量文件搜索、定位、讀寫等操作及并發訪問的專門支持,影響了私有云存儲的性能。
發明內容
針對傳統文件系統性能不足的問題,提出一種高性能的節點文件存儲系統的設計,滿足私有云存儲對于海量文件訪問的高性能要求。本發明解決其技術問題所采用的技術方案是用戶文件數據分塊、分散存放在不同存儲節點中,在存儲節點上通過磁盤空間映射內存文件構造數據容器,將對磁盤的訪問從一定程度上提升為對內存的訪問,通過并發訪問存儲節點和數據塊動態組裝機制大幅提升文件的訪問速度。本發明所述文件數據分塊分散存儲機制如下用戶文件被分割成大小固定的數據塊,由控制節點根據策略和規則確定存放在哪些存儲節點上。每個數據塊被賦予全局唯一的一個編號,每個文件對應了一個由編號組成的數據塊表。本發明所述數據容器存放文件數據的機制如下存儲節點上的將每個磁盤空間映射為一個大型內存文件,內存文件按獨占模式打開成為一個數據容器。數據容器劃分為數據塊編號索引區、資源比特位圖索引表區和數據塊區三個部分。每個部分的大小在數據容器創建時根據可用盤空間大小生成。編號索引區由數據塊編號、長度和比特位索引值和摘要值記錄表構成。每個比特位索引表項按其所在位映射到數據塊區的一個塊,比特位的值代表對應的數據塊位置是否被占用。當寫入數據塊時,存儲節點管理程序為其生成全局唯一的編號,然后搜索資源比特位圖,找到第一個未被占用的比特位,將其置位,然后將數據寫入到對應的數據塊區。最后在編號區中搜索空的記錄項插入一條包含該數據塊編號、長度、比特位等信息的記錄。當讀取數據塊時,首先檢索數據塊編號所在的記錄,獲得對應的比特位,然后直接計算出比特位對應的數據塊起始位置,根據長度讀取數據。刪除數據時,只要將對應的比特位置清空,同時清空編號區對應的記錄項。用戶訪問文件時將存放在某個存儲節點上的所有數據塊信息列表批量提交給該存儲節點,由數據容器根據用戶根據當前訪問的數據塊和后續順序訪問的數據塊將對應的磁盤數據換入內存頁,同時數據容器總是在內存中預取一部分空閑頁面,供新的數據塊寫入使用。這種預存取機制,可以明顯提高訪問的速度。數據容器支持多線程共享并發訪問,允許對于數據塊存儲區進行并發訪問,對編號索引區和比特位索引區支持互斥共享。本發明所述并發訪問和文件動態組裝機制如下當用戶訪問文件時,通過訪問控制節點獲得文件的數據塊列表和對應的數據塊信息,由用戶端程序根據數據塊信息并發訪問各個存儲節點,獲得不同的數據塊數據,然后將數據塊組成完整的文件提交。
本發明的有益效果是提高存儲節點的數據訪問和I/O的性能,提高整個文件的訪問速度,從而提高整個分布式文件系統的性能。
下面結合附圖和實例對本發明做進一步說明。圖I表示設計方案中用戶文件分塊分散存放示意圖。圖2表示設計方案中一個存儲節點的數據容器的結構圖
具體實施例方式在圖I中,用戶文件被分成固定大小的數據塊,分別存放在兩個不同的存儲節點上。每一個數據塊被賦予了一個全局唯一的編號,在windows操作系統可以用UUID作為數據塊的編號。在控制節點中記錄了該文件有關信息,如文件名,數據塊編號列表,每個數據塊存放的存儲節點的標識等。通過這些信息,可以獲得完整的文件存儲信息。在圖2中,存儲節點的一個磁盤被映射成一個數據容器。在數據容器中第一個區是數據塊編號記錄區,每個記錄由編號、長度、比特位索引值和摘要值構成。記錄的第一位用0/1表示是否是空記錄。記錄區總數等于存放數據空間的大小除以數據塊的長度,如盤空間為2TB,每個數據塊大小為4MB,數據塊總數為512000個,記錄總數也為512000個。第二個區是比特位索引區,每個比特位根據其所在索引位置對應于一個數據塊的位置。512000個數據塊需要512000個比特位對應,即需要64000個字節。按照順序,第一個字節的最高比特位對應第I個數據塊,第二字節的第2字節對應第10個數據塊,數據塊起始位置=數據塊區的起始地址+數據塊長度X比特位索引值。比特位為O或I表示了對應數據塊是否被占用。第三個區是數據塊存儲區,存放具體的文件數據塊。
權利要求
1.一種高性能的私有云存儲節點文件系統的設計方案,可有效提高節點數據的訪問性能和文件整體的訪問性能。其特征在于使用了用戶文件分塊分散存儲的機制、磁盤空間映射內存文件的數據容器技術和并發訪問及動態文件組裝技術。
2.如權利要求I所述的文件分塊分散存儲機制,其特征在于,利用私有云存儲的分布式結構,將用戶文件分塊、分散在不同的存儲節點上,而不以完整的文件形態存在于任何磁盤上,文件名、用戶信息、文件數據塊的分布信息存儲在控制節點上。
3.如權利要求I所述的數據容器機制,其特征在于,在存儲節點上,磁盤空間被映射為一個大型的內存文件數據容器,數據容器分為數據塊編號索引區、資源比特位圖區和數據塊存儲區。通過編號索引可以快速定位數據塊所在位置,通過比特位圖可以迅速定位未被占用的數據塊存儲區位置。通過預存取機制,將用戶文件數據塊自動換入內存,提高了數據的訪問效率。
4.如權利要求I所述的并發訪問盒動態組裝機制,其特征在于,文件數據塊分散存放在不同的存儲節點上。通過控制節點可獲得完整的文件數據塊信息,從而支持客戶端程序并發訪問不同的存儲節點,獲取所有的文件數據塊,然后動態組裝成完整的文件提交給用戶。可以成倍提高用戶訪問文件的速度。
全文摘要
本發明針對傳統文件系統性能不足的問題,提出一種高性能的私有云存儲節點文件存儲系統的設計,滿足私有云存儲對于海量文件訪問的高性能要求。其特征在于以下幾個方面一、用戶文件數據分塊、分散存放在不同存儲節點中。二、在存儲節點上通過磁盤空間映射內存文件構造數據容器,將對磁盤的訪問在一定程度上提升為對內存的訪問,從而大幅提高訪問速度。三、通過并發訪問存儲節點和數據塊動態組裝機制提升文件整體訪問速度。
文檔編號G06F17/30GK102968423SQ20121008216
公開日2013年3月13日 申請日期2012年3月27日 優先權日2012年3月27日
發明者歐陽浩哲, 葉宇鵬, 聶乾, 陳東雨 申請人:廣州市國邁科技有限公司