分布式存儲系統及其數據讀寫方法
【技術領域】
[0001]本申請涉及計算機存儲技術領域,尤其涉及分布式存儲系統及其數據讀寫方法。
【背景技術】
[0002]隨著移動設備、社交網絡、物聯網等多種應用的蓬勃發展,人類社會產生的數據呈爆炸式增長。傳統的磁盤陣列在容量、性能和帶寬方面越來越難以滿足以海量數據為基礎的數據密集型應用的存儲要求。因此,采取scale-out架構、容量和性能可隨節點數線性增加的分布式集群存儲系統應運而生,能提供更高的每秒讀寫(10)操作的次數(10PS,Input/Output Operat1ns Per Second)性能的固態硬盤也逐漸取代傳統磁盤成為10密集型應用的首選。在此背景下,固態硬盤昂貴的價格、先擦除后寫入的應用特點,都要求在存儲系統中盡可能壓縮數據的實際存儲空間、降低寫入次數,以便進一步提高使用分布式閃存系統的性價比。
[0003]重復數據刪除是數據縮減技術中的一種,通常用于基于磁盤的備份系統,旨在減少存儲系統中實際使用的存儲容量。目前重復數據刪除的工作方式通常是在某個時間周期內,在后臺運行重復數據刪除程序,查找不同文件中不同位置的重復數據塊,把重復的數據塊用指示符取代,以減少對存儲容量的占用。高度冗余的數據集(例如備份數據)從重復數據刪除技術的獲益極大;另外重復數據刪除技術可以允許用戶的不同站點之間進行高效、經濟的備份數據復制。但是,對于分布式集群存儲系統而言,現有的單設備內的重復數據刪除技術無法達到全局重復數據刪除的目標,數據縮減比達不到最佳效果;另外,后臺處理的重復數據刪除方式無法減少數據寫入的操作,對于使用固態硬盤的存儲系統而言,就達不到減少擦寫次數、延長固態硬盤壽命的目標。
【發明內容】
[0004]本申請提供了一種應用于分布式存儲系統及其數據讀寫方法,無需進行實際的重復數據刪除操作,即可達到全局重復數據刪除的目標,并且可以減少數據寫入的操作。
[0005]本申請實施例提供了一種分布式存儲系統,包括:所述分布式存儲系統包括一個代理模塊、一個元數據服務模塊以及多個存儲服務模塊,每個存儲服務模塊管理至少一個存儲節點;
[0006]所述代理模塊用于接收來自應用系統的寫請求,按分塊參數計算所要寫入的數據的哈希值,得到塊標識,向元數據服務模塊發送攜帶所述塊標識的寫請求;接收元數據服務模塊返回的節點信息,根據所述節點信息,把寫入請求路由到相應的存儲節點;以及將來自元數據服務模塊或存儲服務模塊的寫入成功消息返回應用系統;
[0007]所述元數據服務模塊用于維護全局的一級映射表,一級映射表包含了全局邏輯地址和存儲節點、塊標識的映射關系;接收來自代理模塊的攜帶塊標識的寫請求,查找一級映射表,如果已存在相應塊標識的映射記錄,刷新一級映射表,增加一條寫入起始地址和相應塊標識的映射記錄,通過代理模塊向應用系統返回寫入成功消息;若不存在,選擇一個存儲節點,把所述存儲節點的節點信息返回給代理模塊;接收來自存儲服務模塊的寫入信息,刷新一級映射表,新增寫入起始地址、相應塊標識、相應存儲節點的映射記錄,向所述存儲服務模塊返回刷新成功消息;
[0008]存儲服務模塊用于維護二級映射表,二級映射表包含了塊標識和實際存儲物理地址的映射關系;接收路由到本存儲服務模塊所管理的存儲節點的寫請求,把數據寫入所述存儲節點的磁盤,刷新二級映射表,新增相應塊標識和實際寫入物理地址的記錄,并向元數據服務模塊發送寫入信息。
[0009]可選地,所述代理模塊還用于接收來自應用系統的讀請求,將該讀請求透傳給元數據服務模塊,以及將來自存儲服務模塊的讀數據返回應用系統;
[0010]所述元數據服務模塊還用于接收來自代理模塊的攜帶讀取起始地址的讀請求,查找一級映射表中所述讀取起始地址對應的映射記錄,得到相應的存儲節點以及塊標識,把讀請求路由到相應的存儲節點;
[0011]所述存儲服務模塊還用于接收路由到本存儲服務模塊所管理的存儲節點的讀請求,根據塊標識查找二級映射表,得到實際物理地址,從實際物理地址中獲取讀數據,將讀數據返回給代理模塊。
[0012]可選地,所述元數據服務模塊進一步包括:
[0013]負載分擔算法單元,用于根據負載分擔算法選擇一個負載較輕的存儲節點。
[0014]可選地,元數據服務模塊單獨部署在獨立節點中,或者分布式部署在所有的節點集群上。
[0015]本申請實施例還提供了一種分布式存儲系統的數據寫入方法,該分布式存儲系統如前所述,該數據寫入方法包括:
[0016]代理模塊接收來自應用系統的寫請求,按分塊參數計算所要寫入的數據的哈希值,得到塊標識,向元數據服務模塊發送攜帶所述塊標識的寫請求;
[0017]元數據服務模塊接收來自代理模塊的攜帶塊標識的寫請求,查找一級映射表,如果已存在相應塊標識的映射記錄,刷新一級映射表,增加一條寫入起始地址和相應塊標識的映射記錄,通過代理模塊向應用系統返回寫入成功消息,結束寫入流程;若不存在,選擇一個存儲節點,把所述存儲節點的節點信息返回給代理模塊;
[0018]代理模塊接收元數據服務模塊返回的節點信息,根據所述節點信息,把寫入請求路由到相應的存儲節點;
[0019]存儲服務模塊接收路由到本存儲服務模塊所管理的存儲節點的寫請求,把數據寫入所述存儲節點的磁盤,刷新二級映射表,新增相應塊標識和實際寫入物理地址的記錄,并向元數據服務模塊發送寫入信息;
[0020]元數據服務模塊接收來自存儲服務模塊的寫入信息,刷新一級映射表,新增寫入起始地址、相應塊標識、相應存儲節點的映射記錄,向所述存儲服務模塊返回刷新成功消息;
[0021]存儲服務模塊將來自元數據服務模塊或存儲服務模塊的寫入成功消息返回應用系統。
[0022]本申請實施例還提供了一種分布式存儲系統的數據讀取方法,該分布式存儲系統如前所述,該數據讀取方法包括:
[0023]代理模塊接收來自應用系統的讀請求,將該讀請求透傳給元數據服務模塊;
[0024]元數據服務模塊接收來自代理模塊的攜帶讀取起始地址的讀請求,查找一級映射表中所述讀取起始地址對應的映射記錄,得到相應的存儲節點以及塊標識,把讀請求路由到相應的存儲節點;
[0025]存儲服務模塊接收路由到本存儲服務模塊所管理的存儲節點的讀請求,根據塊標識查找二級映射表,得到實際物理地址,從實際物理地址中獲取讀數據,將讀數據返回給代理模塊;
[0026]代理模塊將來自存儲服務模塊的讀數據返回應用系統。
[0027]從以上技術方案可以看出,由于采用兩級元數據組織,在寫入數據時,如果已存在相同數據則不進行實際寫入,從而減少數據寫入的操作,并且達到全局重復數據刪除的目標。本申請方案可以實現如下技術效果:
[0028]在分布式存儲系統中實現了在線的全局重復數據刪除,降低實際存儲空間占用;
[0029]寫數據時由于重復的數據不需要實際的寫操作,節省了應用系統和存儲系統的數據交互和帶寬,提高了存儲效率;
[0030]可以很靈活地在存儲節點上部署元數據服務和存儲服務,易于構建分布式、大規模的存儲系統。
【附圖說明】
[0031]圖1為本申請實施例提供的采用二級元數據組織方法的分布式存儲系統的架構示意圖;
[0032]圖2為本申請實施例提供的分布式存儲系統的數據寫入流程示意圖;
[0033]圖3為本申請實施例提供的分布式存儲系統的讀數據流程示意圖。
【具體實施方式】
[0034]為使本申請技術方案的技術原理、特點以及技術效果更加清楚,以下結合具體實施例對本申請技術方案進行詳細闡述。
[0035]本申請方案中,采用二級元數據組織方法,把分布式存儲系統的服務模塊分為元數據服務模塊和存儲服務模塊,其中元數據服務模塊負責維護全局的一級映射表,一級映射表包含了全局邏輯地址和存儲節點、塊標識(即數據塊哈希(Hash)值)的映射關系;存儲服務模塊負責維護二級映射表,二級映射表包含了塊標識和實際存儲物理地址的映射關系Ο
[0036]本申請實施例提供的采用二級元數據組織方法的分布式存儲系統的架構如圖1所示,分布式存儲系統100中包括一個代理模塊101、一個元數據服務模塊102以及多個存儲服務t旲塊103。
[0037]所述代理模塊101用于接收來自應用系統的寫請求,按分塊參數計算所要寫入的數據的哈希值,得到塊標識,向元數據服務模塊102發送攜帶所述塊標識的寫請求;接收元數據服務模塊102返回的節點信息,根據所述節點信息,把寫入請求路由到相應的存儲節點;以及將來自元數據服務模塊102或存儲服務模塊103的寫入成功消息返回應用系統;
[0038]所述元數據服務模塊102用于維護全局的一級映射表,一級映射表包含了全局邏輯地址和存儲節點、塊標識的映射關系;接收來自代理模塊的攜帶塊標識的寫請求,查找一級映射表,如果已存在相應塊標識的映射記錄,刷新一級映射表,增加一條寫入起始地址和相應塊標識的映射記錄,通過代理模塊101向應用系統返回寫入成功消息;若不存在,選擇一個存儲節點,把所述存儲節點的節點信息返回給代理模塊101 ;接收來自存儲服務模塊103的寫入信息,刷新一級映射表,新增寫入起始地址、相應塊標識、相應存儲節點的映射記錄,向所述存儲服務模塊103返回刷新成功消息;
[0039]存儲服務模塊103用于維護二級映射表,二級映射表包含了塊標識和實際存儲物理地址的映射關系;接收路由到本存儲服務模塊103所管理的存儲節點的寫請求,把數據寫入所述存儲節點的磁盤,刷新二級映射表,新增相應塊標識和實際寫入物理地址的記錄,并向元數據服務模塊102發送寫入信息。
[0040]根據本申請的另一實施例,所述代理模塊101還用于接收來自應用系統的讀請求,將該讀請求透傳給元數據服務模塊102,以及將來自存儲服務模塊103的讀數