分布式文件存儲系統及文件存儲方法
2023-05-18 12:04:51 2
分布式文件存儲系統及文件存儲方法
【專利摘要】本發明提供了一種分布式文件存儲系統以及文件存儲方法。其中存儲的文件的文件名為文件的SHA1值。該系統包括:多個存儲節點;管理節點,其與所述多個存儲節點通信耦合,並且管理所述多個存儲節點;其中,所述存儲節點以一級目錄表達最小存儲管理單元,所述存儲節點的存儲容量按最小存儲管理單元劃分為一個或多個存儲單元並將其按優先級順序編號,以及所述存儲節點的次級目錄的名稱以其存儲的文件的文件名中的預定位置的一個或多個字母來表示。根據本發明的存儲系統可以加快文件的檢索定位。
【專利說明】分布式文件存儲系統及文件存儲方法
【技術領域】
[0001]本發明涉及文件存儲領域,更具體地,涉及一種分布式文件存儲系統及用於所述分布式文件存儲系統的文件存儲方法。
【背景技術】
[0002]隨著數位技術的發展,需要存儲的文件量越來越大。對於多年積累的海量的樣本文件,如果使用單臺存儲設備,則該單臺存儲設備一方面很難具備足夠大的存儲容量,另一方面還會成為整個數據存取的單點瓶頸。
[0003]一種有效的存儲海量樣本文件的方式是將樣本文件存儲到分布式存儲系統中。在分布式存儲系統中,一方面可以通過增加計算機來加大系統的總存儲容量,滿足對大容量存儲的需求;另一方面網絡中的各臺計算機可以分別處理存儲在當前計算機上的文件,使得在滿足存儲需求的同時,具有最大化的計算能力。
[0004]但是網絡中的不同計算機的存儲容量有大有小,通常存在較大的差別,此時需要一種有效機制能夠統一利用網絡中所有計算機上的存儲容量。這種機制還需要具備可擴展性,對於新加入到網絡中的計算機,可以平滑的將此計算機上的存儲容量納入到整個存儲系統中。
【發明內容】
[0005]為了實現上述目的,本發明提出了一種分布式文件存儲系統以及用於所述分布式文件存儲系統的文件存儲方法。本發明提出可以根據網絡中的存儲容量最小的計算機來確定最小存儲管理單元。於是,網絡中的每臺計算機的存儲容量可以統一按最小存儲管理單元劃分為一個或多個存儲單元,並且每個存儲單元可被指定對應的優先級。本發明還提出,以目錄表達最小存儲管理單元。於是網絡中的每臺計算機至少包括一個一級目錄,其中每個一級目錄可以表示一個存儲單元。本發明還提出在一級目錄下可以增設二級甚至三級或更多的次級目錄,這些目錄的名稱可以與其中存儲的文件名相關聯。這樣可以加快文件的檢索定位。
[0006]根據本發明的一方面,提供了一種分布式文件存儲系統,其中存儲的文件的文件名為文件的SHAl值,所述系統包括:多個存儲節點;管理節點,其與所述多個存儲節點通信耦合,並且管理所述多個存儲節點;其中,所述存儲節點以一級目錄表達最小存儲管理單元,所述存儲節點的存儲容量按最小存儲管理單元劃分為一個或多個存儲單元並將其按優先級順序編號,以及所述存儲節點的次級目錄的名稱以其存儲的文件的文件名中的預定位置的一個或多個字母來表示。
[0007]在本發明的一些實施例中,次級目錄可以包括二級目錄和三級目錄,所述二級目錄和三級目錄的名稱分別以存儲的文件的文件名的前m個和次m個字母表示,所述m是大於或等於I的正整數。
[0008]在本發明的一些實施例中,所述分布式文件存儲系統還包括存儲單元選擇模塊,配置為:針對要存儲的或要移動的文件,選擇具有指定的優先級的存儲單元中的與其文件名相符的目錄作為目標存儲位置。
[0009]在本發明的一些實施例中,所述分布式文件存儲系統還包括存儲容量均衡模塊,配置為:在特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預定閾值時,觸發數據均衡進行數據下移或上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元或上移到上一優先級的存儲單元,直到所述特定存儲節點的所述特定優先級的存儲單元的容量佔用率降到第二預設閾值。
[0010]在本發明的一些實施例中,所述存儲容量均衡模塊進一步配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且無上一優先級或上一優先級的存儲單元的容量佔用率大於第三預設閾值時,觸發數據均衡進行數據下移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元。
[0011 ] 優選地,所述存儲容量均衡模塊進一步配置為:當數據下移過程中,所述次一優先級的存儲單元中的容量佔用率達到第五預設閾值的存儲單元不再參與數據均衡。
[0012]在本發明的一些實施例中,所述存儲容量均衡模塊進一步配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且上一優先級的存儲單元的容量佔用率小於第四預設閾值時,觸發數據均衡進行數據上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件上移到上一優先級的存儲單元。
[0013]優選地,所述存儲容量均衡模塊還配置為:當在數據上移過程中,所述上一優先級的存儲單元中的容量佔用率達到第六預設閾值的存儲單元不再參與數據均衡。
[0014]在本發明的一些實施例中,所述管理節點以資料庫的形式來維護各個存儲節點的配置信息、存儲容量信息等,並且負責發布調度指令。
[0015]根據本發明的另一方面,提供了一種在上述分布式文件存儲系統中存儲文件的方法,包括:選擇具有足夠空閒容量的第一優先級的存儲單元;在所選擇的存儲單元中選擇或創建與要存儲的文件的文件名相符的目錄作為目標存儲位置;以及,在所述目標存儲位置存儲文件,並且更新管理節點的資料庫中的對應記錄。
[0016]在本發明的一些實施例中,所述方法還包括:在特定的存儲節點的容量佔用率超過第一預定閾值時,觸發數據均衡進行數據下移或下移以將所述特定優先級的存儲單元中的部分文件轉移到次一優先級或上移優先級的存儲單元,直到所述特定優先級的存儲單元的容量佔用率降到第二預設閾值。
[0017]在本發明的一些實施例中,所述觸發數據均衡的步驟包括:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且無上一優先級或上一優先級的存儲單元的容量佔用率大於第三預設閾值時,觸發數據均衡進行數據下移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元。優選地,當數據下移過程中,所述次一優先級的存儲單元中的容量佔用率達到第五預設閾值的存儲單元不再參與數據均衡。
[0018]在本發明的一些實施例中,所述觸發數據均衡的步驟包括:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且上一優先級的存儲單元的容量佔用率小於第四預設閾值時,觸發數據均衡進行數據上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件上移到上一優先級的存儲單元。優選地,當在數據上移過程中,所述上一優先級的存儲單元中的容量佔用率達到第六預設閾值的存儲單元不再參與數據均衡。
[0019]根據本發明實施例的分布式存儲系統能夠以統一的方式利用網絡中所有計算機上的存儲容量,並且通過均衡策略實現了各節點的存儲均衡。根據本發明的分布式存儲系統還具備良好的可擴展性,可以平滑地將新加入到網絡中的計算機上的存儲容量納入到整個存儲系統中。此外,本發明實施例通過將存儲節點的目錄名稱與所述目錄下存儲的文件名相關聯,可以加快文件的檢索定位。
【專利附圖】
【附圖說明】
[0020]通過下面結合【專利附圖】
【附圖說明】本發明的優選實施例,將使本發明的上述及其它目的、特徵和優點更加清楚,其中:
[0021]圖1示意性地示出了根據本發明實施例的分布式存儲系統的示意圖;
[0022]圖2示意性地示出了根據本發明實施例的管理節點的框圖;
[0023]圖3示意性地示出了根據本發明實施例的存儲文件的方法的流程圖。
[0024]在本發明的所有附圖中,相同或相似的結構均以相同或相似的附圖標記進行標識。
【具體實施方式】
[0025]現在將參考附圖來詳細描述本發明,附圖中示出了本發明的說明性實施例,以使得本領域技術人員能夠實現本發明。應該注意:以下附圖和示例不意味著將本發明的範圍限制為單一實施例,相反通過互換和組合不同實施例的一些或全部所述或所示元素形成其他實施例也是可能的。此外,在可以使用已知組件來部分或完全實現本發明的特定元素的情況下,將僅描述這些已知組件中為了理解本發明所必需的那部分組件,且將省略對這些已知組件中其他部分的詳細描述,以使得本發明更突出。除非本文中另行指出,否則本領域技術人員應該理解:儘管本發明的一些實施例描述為用軟體實形式現,但是本發明不受限於此,而是也可以用硬體、軟體和硬體的組合來實現,且反之亦然。除非本文中另行明確聲明,否則在本說明書中,不應將示出了單一組件的實施例視為是限制性的,而是本發明意在包含包括多個相同組件在內的其他實施例,且反之亦然。此外,本發明包含本文中作為示意所引用的已知組件的當前和將來開發的等價物。
[0026]圖1示意性地示出了根據本發明實施例的分布式存儲系統100的示意圖。如圖1所示,分布式存儲系統100可以包括管理節點110和一組計算機。各臺計算機均提供一定的存儲容量,也稱為存儲節點。如圖所示,各臺計算機可以分別標記為節點120-1、節點120-2、…、節點120-N。為了便於說明,在下文中這些計算機可以統稱為120。應該理解,儘管圖中僅示出了三個存儲節點,但是系統100可以包括更多或更少的存儲節點。這些存儲節點可以通過網絡設備來相互連接。管理節點110負責保存各存儲節點的配置信息、存儲容量信息,並且還負責發布調度指令等。管理節點110也通過網絡設備130與各個存儲節點相互通信。應該理解,此處的網絡設備可以包括各種有線的或者無線的聯網設備,如區域網設備、網際網路設備等等。本發明在這方面不受限制。
[0027]在每個存儲節點120上,可以按預定的最小存儲管理單元(例如1000G)來劃分整個可用存儲容量。為了充分利用網絡中的計算機上的,可以根據存儲容量最小的計算機來決定最小存儲管理單元。例如,如果容量最小的計算機提供IT的存儲容量,則最小存儲單元可以規定為1T。應該理解,最小存儲單元也可以小於容量最小的計算機提供的存儲容量,例如在上述例子中最小存儲單元也可以規定為500G。根據上述最小存儲管理單元的規定,具有最小存儲容量的計算機也至少包含一個存儲單元(每個存儲單元對應一個最小存儲管理單元),而提供較大存儲容量的計算機可以包含多個存儲單元。
[0028]在本發明中,最小存儲管理單元可以以一級目錄來表達。於是,各個存儲節點上的各個存儲單元可以例如標示為Tl,T2,……Tn等等。在一些示例實現中,這些目錄是在各自的存儲節點上唯一標示的。於是,可以根據存儲節點的節點標識和目錄標識一起來在系統100中唯一地標示每個存儲單元。備選地,這些目錄也可以是在整個系統100中唯一標示的。目錄與物理存儲設備上的存儲容量的關聯可以通過各種現有的或者將來開發的技術來實現。例如,對於使用Linux文件系統的計算機,針對專用磁碟,可以直接通過mount向目錄提供存儲容量,而對於共用磁碟,可以利用軟連結來關聯目錄和存儲容量。
[0029]每個存儲節點的本地目錄結構可以設計如下:
[0030]1、存儲節點包含的一個或多個存儲單元可以按一級目錄順序標示(如T1,T2,...,Tn);
[0031]2、樣本文件的文件名為文件的SHAl值,該SHAl值是16進位字符串;3、一級目錄(如Tl,Τ2,…,Tn)下可以增設次級目錄,並且次級目錄的名稱以其存儲的文件的文件名中的預定位置的一個或多個字母來表示。在一個實施例中,一級目錄下可以增設二級、三級子目錄以加快樣本文件的檢索定位。二級子目錄和三級子目錄的名稱可以分別以存儲的文件的文件名的前m個和次m個字母表示,所述m可以是大於或等於I的正整數。例如,樣本文件的定位方法可以如下:取文件名(SHA1值)的前2個字母來表示二級目錄的名稱,取文件名的次2個字母來表示三級目錄的名稱。於是二級目錄最多可分為256個子目錄(00?FF),三級目錄也最多可分為256個子目錄(00?FF)。
[0032]在本發明的一些實施例中,每個存儲單元還劃分優先級。如果一個存儲節點只包含一個存儲單元,則該存儲單元具有第一優先級(即最高優先級)。如果一個存儲節點包含多個存儲單元,則可以對這些存儲單元從高到低指定優先級。優選地,可以規定每個存儲單元具有不同的優先級,一個節點的多個存儲單元可以編號並且按編號分為I級、2級、…、η級,其中η是該存儲節點的存儲單元的數目。
[0033]圖2示意性地示出了根據本發明實施例的管理節點110的框圖。管理節點110負責保存各存儲節點的配置信息、存儲容量信息,並且還負責發布調度指令等。如果所示,管理節點I1可以包括資料庫112、存儲單元選擇模塊114和存儲容量均衡模塊116。
[0034]存儲單元選擇模塊114配置為:針對要存儲的或要移動的文件,選擇具有指定的優先級的存儲單元中的與其文件名相符的目錄作為目標存儲位置。
[0035]下面通過樣本文件的存儲單元選擇算法的示例來介紹存儲單元選擇模塊114的操作。該示例既適用於要存儲的樣本文件,也適用於數據均衡中的要移動的樣本文件。
[0036]在該示例中,如前所述,各個存儲節點的存儲單元可以按優先級分級。如果存儲節點只有唯一存儲單元時,此存儲單元設為I級。如果存儲節點擁有多個存儲單元,則各存儲單元可以進行編號,並且按編號分為I級、2級、…、η級。
[0037]任意給定一個樣本文件,指定要求的存儲單元優先級級別,則最終的目標存儲位置按可以按照如下規則進行選定:
[0038]I)選定目標存儲節點和存儲單元:
[0039]查詢管理節點資料庫112中各存儲單元的信息。如果存在具有所要求的優先級且未使用的存儲單元,則優先選擇該存儲單元作為目標存儲單元。如果存在多個上述未使用的存儲單元,則可以隨機選擇其中之一作為目標存儲節點。如果具有所要求的優先級的存儲單元都已經被使用,則可以選擇剩餘存儲空間較大的存儲單元作為目標存儲單元。顯然,在目標存儲單元確定的情況下,其所在的存儲節點即目標存儲節點。於是,可以選定目標存儲位置中的目標存儲節點和目標一級目錄(對應於目標存儲單元)。
[0040]在該實施例中,如果樣本文件是要存儲的文件,則所要求的存儲單元的優先級總是第一級。而在數據均衡中,在執行數據上移時,所要求的存儲單元優先級是文件當前所在存儲單元的優先級的上一優先級,而在執行數據下移時,所要求的存儲單元優先級則是文件當前所在存儲單元的優先級的次一優先級。
[0041]2)選定目標存儲子目錄:
[0042]可以按照上文所述的次級目錄生成規則,根據樣本文件的文件名生成次級目錄名稱。如果在目標存儲節點的目標一級目錄之下已經存在該次級目錄名稱,則選擇該次級目錄作為目標存儲子目錄,否則可以在該目標一級目錄之下創建所生成的次級目錄以作為目標存儲子目錄。應該理解,此處的次級目錄可以是單級目錄,也可以是多級目錄,例如包括二級目錄和三級目錄,甚至更多級目錄。
[0043]3)存儲樣本文件,並更新資料庫中的對應記錄:
[0044]可以在選定的目標存儲位置下存儲該樣本文件。該樣本文件的存儲(或移動)將改變文件的存儲位置,並且使得存儲單元的存儲容量信息發生變化。於是,可以在資料庫(或者具體地,資料庫中的文件存儲位置表以及存儲節點存儲單元信息表)中添加或更新對應的記錄。
[0045]存儲容量均衡模塊116可以配置為:在特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預定閾值時,觸發數據均衡進行數據下移或上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元或上移到上一優先級的存儲單元,直到所述特定存儲節點的所述特定優先級的存儲單元的容量佔用率降到第二預設閾值。
[0046]具體地,存儲容量均衡模塊可以包括下移模塊和上移模塊。下移模塊可以配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且無上一優先級或上一優先級的存儲單元的容量佔用率大於第三預設閾值時,觸發數據均衡進行數據下移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元。優選地,當數據下移過程中,所述次一優先級的存儲單元中的容量佔用率達到第五預設閾值的存儲單元不再參與數據均衡。
[0047]上移模塊可以配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且上一優先級的存儲單元的容量佔用率小於第四預設閾值時,觸發數據均衡進行數據上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件上移到上一優先級的存儲單元。優選地,當在數據上移過程中,所述上一優先級的存儲單元中的容量佔用率達到第六預設閾值的存儲單元不再參與數據均衡。
[0048]下面將通過示例詳述存儲容量均衡模塊執行的存儲單元數據均衡策略:
[0049]I)下移策略:
[0050]當某個存儲節點的I級存儲單元容量佔用率超過預設容量閾值Thl (如60% )時,觸發存儲容量均衡程序進行數據下移,即把此I級存儲單元中的樣本文件轉移到其他2級存儲單元中。
[0051]被轉移的樣本文件可以在此I級存儲單元中隨機選擇。
[0052]當此I級存儲單元中的容量佔用率降低到預設容量閾值Th2(如30%)時,結束均衡操作。
[0053]在均衡過程中,當某個2級存儲單元容量佔用率超過預設容量閾值Th3 (如90% )時,可以標記為下移存儲單元容量滿,於是此2級存儲單元不再參與數據下移均衡。
[0054]2級存儲單元數據下移到3級存儲單元時,下移策略與上面所述的I級存儲單元的數據下移到2級存儲單元時的情形相同。
[0055]各級存儲單元數據下移策略可以依次類推。
[0056]2)上移策略
[0057]當2級存儲單元容量佔用超預設容量閾值Th4(如90% )同時I級存儲單元容量小於預設容量閾值Th5(如30% )時,可以觸發容量均衡程序進行數據上移。
[0058]當2級存儲單元容量佔用降低到預設容量閾值Th6(如60% )時,可以結束均衡操作。
[0059]當某個I級存儲單元容量佔用率超預設容量閾值Th7 (如60% )時,可以標記為上移存儲單元滿,於是此存儲單元不再參與數據上移均衡。
[0060]3級存儲單元數據上移到2級存儲單元時,上移策略與上面所述的2級存儲單元的數據上移到I級存儲單元時的情形相同。
[0061]各級存儲單元數據上移策略可以依次類推。
[0062]3)容量均衡檢查的觸發
[0063]容量均衡的執行頻率可以根據數據增速來設定。例如,可以設定固定時間間隔(如每周/每月)執行一次均衡。
[0064]此外,還可以根據系統100中的存儲節點的數量來改變均衡周期。例如,隨著機器數量增大,可以適當增大均衡周期。
[0065]4)均衡文件的選擇:
[0066]在數據均衡中,要移動的文件可以在本地文件中隨機選擇
[0067]要移動的文件的目標存儲位置可以根據上述的存儲單元選擇算法來確定。
[0068]在文件移動成功完成後,可以刪除本地文件,從而降低本地的容量佔用率。
[0069]5)為了提高均衡效率,還可以考慮存儲單元之間的定向均衡。
[0070]資料庫112可以存儲各存儲節點的配置信息、存儲容量信息等等。例如,資料庫112可以包括節點基本存儲單元信息表,文件存儲位置表等等。下面的表I和表2示出了根據本發明的資料庫的示例。
[0071]表I節點基本存儲單元信息表的示例
[0072]
【權利要求】
1.一種分布式文件存儲系統,其中存儲的文件的文件名為文件的SHAl值,所述系統包括: 多個存儲節點; 管理節點,其與所述多個存儲節點通信耦合,並且管理所述多個存儲節點; 其中,所述存儲節點以一級目錄表達最小存儲管理單元,所述存儲節點的存儲容量按最小存儲管理單元劃分為一個或多個存儲單元並將其按優先級順序編號,以及所述存儲節點的次級目錄的名稱以其存儲的文件的文件名中的預定位置的一個或多個字母來表示。
2.根據權利要求1所述的系統,其中所述次級目錄包括二級目錄和三級目錄,所述二級目錄和三級目錄的名稱分別以存儲的文件的文件名的前m個和次m個字母表示,所述m是大於或等於I的正整數。
3.根據權利要求1所述的系統,還包括存儲單元選擇模塊,配置為:針對要存儲的或要移動的文件,選擇具有指定的優先級的存儲單元中的與其文件名相符的目錄作為目標存儲位置。
4.根據權利要求1所述的系統,還包括存儲容量均衡模塊,配置為:在特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預定閾值時,觸發數據均衡進行數據下移或上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單元或上移到上一優先級的存儲單元,直到所述特定存儲節點的所述特定優先級的存儲單元的容量佔用率降到第二預設閾值。
5.根據權利要求4所述的系統,其中所述存儲容量均衡模塊進一步配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且無上一優先級或上一優先級的存儲單元的容量佔用率大於第三預設閾值時,觸發數據均衡進行數據下移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件下移到次一優先級的存儲單兀。
6.根據權利要求5所述的系統,其中所述存儲容量均衡模塊進一步配置為:當數據下移過程中,所述次一優先級的存儲單元中的容量佔用率達到第五預設閾值的存儲單元不再參與數據均衡。
7.根據權利要求4所述的系統,其中所述存儲容量均衡模塊進一步配置為:在所述特定存儲節點的特定優先級的存儲單元的容量佔用率超過第一預設閾值並且上一優先級的存儲單元的容量佔用率小於第四預設閾值時,觸發數據均衡進行數據上移以將所述特定存儲節點的所述特定優先級的存儲單元中的部分文件上移到上一優先級的存儲單元。
8.根據權利要求6所述的系統,其中所述存儲容量均衡模塊還配置為:當在數據上移過程中,所述上一優先級的存儲單元中的容量佔用率達到第六預設閾值的存儲單元不再參與數據均衡。
9.一種在如權利要求1所述的分布式文件存儲系統中存儲文件的方法,包括: 選擇具有足夠空閒容量的第一優先級的存儲單元; 在所選擇的存儲單元中選擇或創建與要存儲的文件的文件名相符的目錄作為目標存儲位置;以及 在所述目標存儲位置存儲文件,並且更新管理節點的資料庫中的對應記錄。
10.根據權利要求9所述的方法,還包括:在特定的存儲節點的容量佔用率超過第一預定閾值時,觸發數據均衡進行數據下移或下移以將所述特定優先級的存儲單元中的部分文件轉移到次一優先級或上移優先級的存儲單元,直到所述特定優先級的存儲單元的容量佔用率降到第二預設閾值。
【文檔編號】H04L29/08GK104202428SQ201410497559
【公開日】2014年12月10日 申請日期:2014年9月25日 優先權日:2014年9月25日
【發明者】鄭輝 申請人:北京網秦天下科技有限公司