專利名稱:一種分布式文件系統中的并發寫入方法及裝置的制作方法
技術領域:
本發明涉及計算機應用技術領域,尤其涉及一種分布式文件系統中的并發寫入方法及裝置。
背景技術:
隨著互聯網和多媒體產業的迅猛發展,海量的媒體文件存儲對存儲技術和系統提出了更高的要求。為保證高可靠性、大容量和性價比,IT廠商和互聯網服務商通常采用分布式文件系統來存儲數據。分布式文件系統采用冗余存儲的方式來保證存儲數據的可靠性,以高可靠軟件來彌補硬件的不可靠,從而提供廉價可靠的海量分布式存儲和計算系統。如圖I所示,在分布式文件系統中,一般主要包括元數據服務器、文件存儲服務器和文件訪問服務器,其中元數據服務器主要負責管理文件路徑、文件名稱等信息,以及文件數據塊在文件存儲服務器上的分布情況;文件存儲服務器主要負責管理文件數據塊在本地硬盤上的存儲,通常是在硬盤上創建本地文件系統,然后將數據塊作為文件保存在本地硬盤上;文件訪問服務器(即客戶端)負責提供用戶訪問接口,通過與元數據服務器交互元數據信息,以及與文件存儲服務器交互數據塊信息,為用戶提供文件訪問服務。在上述的實現模式下,分布式文件系統的性能常常受到本地文件系統性能的很大影響。其原因在于,本地文件系統在進行數據塊的文件存儲時,雖然可以保證文件名稱的連續分配,但不能保證數據塊文件在硬盤扇區的連續存放。一般來說,對硬盤扇區的隨機讀寫性能很差,而順序讀寫性能很好。綜上所述,當分布式文件系統提供文件并發寫入時,如何控制文件存儲服務器上并發寫入數據塊的分布連續,以提升文件存儲服務器上硬盤的寫入速度,是現有技術中急需解決的技術問題。
發明內容
本發明解決的技術問題是提供一種分布式文件系統中的并發寫入方法及裝置,能夠大幅提升分布式文件系統的文件并發寫入性能。為解決上述技術問題,本發明提供了一種分布式文件系統中的并發寫入方法,元數據服務器維護文件存儲服務器的存儲資源信息;所述元數據服務器接收到多個文件訪問服務器并發的寫入請求時,根據維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址。進一步地,所述方法還包括所述元數據服務器將為所述并發寫入的數據分配的相鄰的存儲地址包含在元數據信息中發送給文件存儲服務器;所述文件存儲服務器接收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中;并根據所述元數據信息中包含的所述存儲地址對所述數據塊寫入隊列中的數據塊進行排序,待滿足寫入條件時,將所述數據塊寫入隊列中存儲地址相鄰的數據塊依序寫入硬盤。進一步地,所述存儲資源信息,包括文件存儲服務器信息,文件存儲服務器的硬盤信息以及硬盤物理塊信息;所述元數據服務器為所述并發寫入的數據分配的所述相鄰的存儲地址,具體為同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊地址。進一步地,所述滿足寫入條件,具體包括 對所述數據塊寫入隊列中的數據塊進行排序時,若存儲地址相鄰的數據塊達到預先設定的數目閾值、或者超出預先設定的時間間隔,則判定滿足寫入條件。進一步地,所述元數據服務器維護文件存儲服務器的存儲資源信息,具體包括對同一個硬盤上的空閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照所包含的空閑硬盤物理塊的數目進行降序排列。進一步地,所述元數據服務器為所述并發寫入的數據分配相鄰的存儲地址,包括從包含的空閑硬盤物理塊數目最多的地址簇中選取連續的硬盤物理塊地址。進一步地,所述元數據服務器維護文件存儲服務器的存儲資源信息,還包括當硬盤上的硬盤物理塊釋放時,所述元數據服務器對空閑硬盤物理塊和地址簇進行更新。此外,本發明還提供了一種分布式文件系統中的并發寫入裝置,所述裝置包括元文件服務器中的存儲資源管理模塊和并發寫入處理模塊,其中所述存儲資源管理模塊用于,維護文件存儲服務器的存儲資源信息;所述并發寫入處理模塊用于,接收到多個文件訪問服務器并發的寫入請求時,根據所述存儲資源管理模塊維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址。進一步地,所述裝置還包括文件存儲服務器中的數據塊寫入模塊,所述并發寫入處理模塊還用于,將為所述并發寫入的數據分配的相鄰的存儲地址包含在元數據信息中發送給所述文件存儲服務器;所述數據塊寫入模塊用于,接收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中;并根據所述元數據信息中包含的所述存儲地址對所述數據塊寫入隊列中的數據塊進行排序,待滿足寫入條件時,將所述數據塊寫入隊列中存儲地址相鄰的數據塊依序寫入硬盤。進一步地,所述存儲資源管理模塊用于,維護如下存儲資源信息文件存儲服務器信息,文件存儲服務器的硬盤信息以及硬盤物理塊信息;所述并發寫入處理模塊用于,為所述并發寫入的數據分配的所述相鄰的存儲地址,包括同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊地址。進一步地,所述數據塊寫入模塊用于,對所述數據塊寫入隊列中的數據塊進行排序時,若存儲地址相鄰的數據塊達到預先設定的數目閾值、或者超出預先設定的時間間隔,則判定滿足寫入條件。進一步地,所述存儲資源管理模塊用于,按照以下方式維護文件存儲服務器的存儲資源信息對同一個硬盤上的空閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照所包含的硬盤物理塊的數目進行降序排列;以及,當硬盤上的硬盤物理塊釋放時,對空閑硬盤物理塊和地址簇進行更新;所述并發寫入處理模塊用于,在為所述并發寫入的數據分配相鄰的存儲地址時,從包含的空閑硬盤物理塊數目最多的地址簇中選取連續的硬盤物理塊地址。本發明所提供的一種分布式文件系統中基于裸盤方式提升文件并發寫入性能的方法及裝置,通過將并發且分散的文件訪問客戶端上用戶請求寫入的文件數據塊存放到單個硬盤的連續扇區中,使得這些數據塊可以高速地寫入硬盤,通過“分布式寫文件,集中式寫入硬盤”的方式,實現硬盤連續讀寫性能的飛躍,使得文件并發寫入性能得到顯著提升。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中圖I為分布式文件系統中并發寫入處理的示意圖;圖2為本發明實施例的分布式文件系統中的并發寫入裝置的示意框圖。
具體實施例方式本實施方式提供了一種分布式文件系統中的并發寫入方法,具體采用如下技術方案元數據服務器維護各文件存儲服務器的存儲資源信息;當元數據服務器收到并發寫入請求,即多個文件訪問服務器在設定的一個較短的時間內同時發起多個數據寫入請求時,根據維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址(也即存儲位置)。其中,所述存儲資源信息,包括文件存儲服務器信息,硬盤信息,以及硬盤物理塊信息。其中,所述文件存儲服務器信息包括各文件存儲服務器的信息,按照文件存儲服務器的網絡地址進行標識;硬盤信息按照硬盤序列號進行標識;硬盤物理塊信息按照硬盤物理塊編號進行標識。進一步地,所述元數據服務器為所述并發寫入的數據分配的所述相鄰的存儲地址,是指同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊。進一步地,所述元數據服務器維護各文件存儲服務器的存儲資源信息,具體包括對同一個硬盤上的空閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照包含的空閑硬盤物理塊的數目進行降序排列。進一步地,所述元數據服務器維護各文件存儲服務器的存儲資源信息,還包括當硬盤上的硬盤物理塊釋放時,所述元數據服務器對空閑硬盤物理塊和地址簇進行更新。進一步地,所述文件存儲服務器根據所述元數據服務器的元數據信息,在收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中,并對所述數據塊寫入隊列中的數據塊根據待寫入的硬盤物理塊地址進行排序;待滿足寫入條件時,將硬盤物理塊地址連續的數據塊先寫入硬盤中。具體地,寫入條件可以包括以下實現方式其一,當并發寫入較多,排序后當連續物理地址的數據塊達到預先設定的數目閾值時,判定滿足寫入條件;其二,當并發寫入較少,排序后超過預先設定的時間間隔,即使連續物理地址的數據塊仍未達到預先設定的數目閥值,也判定滿足寫入條件,進行寫入。 此外,本實施方式還提供一種分布式文件系統中的并發寫入系統,包括元數據服務器、文件存儲服務器和文件訪問服務器等。其中所述元數據服務器,用于負責管理分布式文件系統中的文件元數據信息,包括文件目錄/文件名,以及文件數據塊在存儲服務器上的分布信息(即文件數據塊在存儲服務器的硬盤中的存儲位置信息)。并對空閑硬盤物理塊按照連續性進行組織,當多個客戶端用戶同時發起文件寫操作的時候,盡量將為各個客戶端分配的數據塊存放到同一個存儲服務器的同一個硬盤的相鄰硬盤物理塊中。所述文件存儲服務器,用于根據元數據服務器發送的元數據信息,管理文件數據塊的在硬盤上的存取位置,并與文件訪問服務器進行數據塊傳輸。其中,與現有技術不同的是,本實施方式中,文件存儲服務器在存儲文件數據塊時,在硬盤上不再創建本地文件系統,而是采用裸盤方式管理方法,每次操作的硬盤物理塊大小與文件數據塊大小一致。因為,如果仍在硬盤上創建本地文件系統,則無法保證數據塊在硬盤扇區的連續存放。此外,當文件存儲服務器收到文件訪問服務器發送的數據塊的時候,并不立刻將該數據塊寫入硬盤物理塊,而是把數據塊先緩存到數據塊寫入隊列;然后對寫入隊列的數據塊根據待寫入的硬盤物理塊地址進行排序,優先將硬盤物理地址順序排列的數據塊寫入硬盤。所述文件訪問服務器,用于負責提供訪問接口給用戶,提供文件服務功能。當用戶寫文件數據的時候,與元數據服務器交互獲取文件數據塊待存放的文件存儲服務器信息,然后發送數據塊給文件存儲服務器完成數據塊的傳輸。為使本發明的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。如圖I所示,本發明的分布式文件系統中,主要包括元數據服務器、文件存儲服務器和文件訪問服務器等。其中元數據服務器,用于負責管理分布式文件系統中的文件元數據信息,包括文件目錄/文件名,文件數據塊在文件存儲服務器上的分布。其中對存儲資源進行了三級管理第一級為文件存儲服務器,按照文件存儲服務器的網絡地址進行標識;第二級為硬盤,按照硬盤序列號進行標識;第三級為硬盤物理塊,為扇區的整數倍,具體可以與文件數據塊大小(文件數據塊大小固定)一致,按照硬盤物理塊編號進行標識。同時,對同一個硬盤上的空閑硬盤物理塊按照連續性進行組織地址連續的形成一個地址簇,按順序排列;同時將間隔的地址簇也集合起來,按照物理塊的數目降序排列。當元數據服務器申請硬盤物理塊存放數據的時候,優先從空閑硬盤物理塊數目最多的地址簇選取,并進行連續分配。當釋放硬盤物理塊的時候,則對空閑硬盤物理塊進行管理,進行必要的地址簇合并處理等。例如,當三個客戶端用戶同時發起文件A、文件B、文件C的寫操作的時候,元數據服務器選擇簇合適的物理地址簇Pa-Ph,將這些并發操作使用的數據塊存放到同一個存儲服務器的同一個硬盤的相鄰硬盤物理塊中。所述文件存儲服務器,用于根據主控服務器元數據信息,管理文件數據塊的在硬盤上的存取位置,并與文件訪問服務器進行數據塊傳輸。文件數據塊在存儲服務器上采用裸盤方式管理方法,每次操作的硬盤物理塊大小與文件數據塊大小一致。當文件存儲服務器收到文件訪問服務器發送的數據塊的時候,并不立刻將該數據塊寫入硬盤物理塊,而是先將數據塊緩存到數據塊寫入隊列;然后對數據塊寫入隊列中的數據塊根據元數據信息中的待寫入的硬盤物理塊地址進行排序,優先將硬盤物理地址順序排列的數據塊寫入磁盤。例如,當文件A的三個數據塊(Al,A2,A3)、文件B的二個數據塊(B1、B2)、文件C的三個數據塊(C1、C2、C3)隨機到達文件存儲服務器后,并沒有立刻被單獨寫入硬盤,而是等到滿足寫入條件時,將這三個文件的八個數據塊一起寫入到八個連續的硬盤物理塊Pa-Ph中。例 如,當并發寫入較多,排序后當連續物理地址的數據塊達到預先設定的數目閾值時,滿足寫入條件;或者,當并發寫入較少,排序后超過預先設定的時間間隔,則即使連續物理地址的數據塊仍未達到預先設定的數目閥值,也判定滿足寫入條件。所述文件訪問服務器,用于負責提供訪問接口給用戶,提供文件服務功能。當用戶寫文件數據的時候,與元數據服務器交互獲取文件數據塊待存放的文件存儲服務器信息,然后發送數據塊給文件存儲服務器完成數據塊的傳輸。例如,三個文件訪問服務器上分別創建了文件A、文件B、文件C,同時都提交到了元數據服務器進行處理。綜上所述,本發明在分布式文件系統中,對于文件存儲服務器上的文件數據塊采用了裸盤管理的方法和對數據塊寫入隊列采用了緩存排序的方法,對于元數據服務器上不同文件同時請求的數據塊進行了在硬盤物理地址級別連續分配的方法,達到了分布式寫入文件、集中式寫入硬盤的效果,充分適應了硬盤順序寫入性能高的特性,使得分布式文件系統中文件并發寫入的性能得到顯著提升。如圖2所示,本發明實施例的分布式文件系統中的并發寫入裝置,主要包括元文件服務器中的存儲資源管理模塊和并發寫入處理模塊,其中所述存儲資源管理模塊用于,維護文件存儲服務器的存儲資源信息;所述并發寫入處理模塊用于,接收到多個文件訪問服務器并發的寫入請求時,根據所述存儲資源管理模塊維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址。進一步地,上述裝置還包括文件存儲服務器中的數據塊寫入模塊,所述并發寫入處理模塊還用于,將為所述并發寫入的數據分配的相鄰的存儲地址包含在元數據信息中發送給所述文件存儲服務器;所述數據塊寫入模塊用于,接收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中;并根據所述元數據信息中包含的所述存儲地址對所述數據塊寫入隊列中的數據塊進行排序,待滿足寫入條件時,將所述數據塊寫入隊列中存儲地址相鄰的數據塊依序寫入硬盤。進一步地,所述存儲資源管理模塊用于,維護如下存儲資源信息文件存儲服務器信息,文件存儲服務器的硬盤信息以及硬盤物理塊信息;所述并發寫入處理模塊用于,為所述并發寫入的數據分配的所述相鄰的存儲地址,包括同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊地址。進一步地,所述數據塊寫入模塊用于,對所述數據塊寫入隊列中的數據塊進行排序時,若存儲地址相鄰的數據塊達到預先設定的數目閾值、或者超出預先設定的時間間隔,則判定滿足寫入條件。進一步地,所述存儲資源管理模塊用于,按照以下方式維護文件存儲服務器的存儲資源信息對同一個硬盤上的空 閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照所包含的硬盤物理塊的數目進行降序排列;以及,當硬盤上的硬盤物理塊釋放時,對空閑硬盤物理塊和地址簇進行更新;所述并發寫入處理模塊用于,在為所述并發寫入的數據分配相鄰的存儲地址時,從包含的空閑硬盤物理塊數目最多的地址簇中選取連續的硬盤物理塊地址。以上僅為本發明的優選實施案例而已,并不用于限制本發明,本發明還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員可根據本發明做出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,并且在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的硬件和軟件結合。
權利要求
1.一種分布式文件系統中的并發寫入方法,其特征在于,元數據服務器維護文件存儲服務器的存儲資源信息;所述元數據服務器接收到多個文件訪問服務器并發的寫入請求時,根據維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址。
2.如權利要求I所述的方法,其特征在于,所述方法還包括所述元數據服務器將為所述并發寫入的數據分配的相鄰的存儲地址包含在元數據信息中發送給文件存儲服務器;所述文件存儲服務器接收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中;并根據所述元數據信息中包含的所述存儲地址對所述數據塊寫入隊列中的數據塊進行排序,待滿足寫入條件時,將所述數據塊寫入隊列中存儲地址相鄰的數據塊依序寫入硬盤。
3.如權利要求I或2所述的方法,其特征在于,所述存儲資源信息,包括文件存儲服務器信息,文件存儲服務器的硬盤信息以及硬盤物理塊信息;所述元數據服務器為所述并發寫入的數據分配的所述相鄰的存儲地址,具體為同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊地址。
4.如權利要求2所述的方法,其特征在于,所述滿足寫入條件,具體包括對所述數據塊寫入隊列中的數據塊進行排序時,若存儲地址相鄰的數據塊達到預先設定的數目閾值、或者超出預先設定的時間間隔,則判定滿足寫入條件。
5.如權利要求3所述的方法,其特征在于,所述元數據服務器維護文件存儲服務器的存儲資源信息,具體包括對同一個硬盤上的空閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照所包含的空閑硬盤物理塊的數目進行降序排列。
6.如權利要求5所述的方法,其特征在于,所述元數據服務器為所述并發寫入的數據分配相鄰的存儲地址,包括從包含的空閑硬盤物理塊數目最多的地址簇中選取連續的硬盤物理塊地址。
7.如權利要求5所述的方法,其特征在于,所述元數據服務器維護文件存儲服務器的存儲資源信息,還包括當硬盤上的硬盤物理塊釋放時,所述元數據服務器對空閑硬盤物理塊和地址簇進行更新。
8.一種分布式文件系統中的并發寫入裝置,其特征在于,所述裝置包括元文件服務器中的存儲資源管理模塊和并發寫入處理模塊,其中所述存儲資源管理模塊用于,維護文件存儲服務器的存儲資源信息;所述并發寫入處理模塊用于,接收到多個文件訪問服務器并發的寫入請求時,根據所述存儲資源管理模塊維護的所述存儲資源信息為所述并發寫入的數據分配相鄰的存儲地址。
9.如權利要求8所述的裝置,其特征在于,所述裝置還包括文件存儲服務器中的數據塊寫入模塊,所述并發寫入處理模塊還用于,將為所述并發寫入的數據分配的相鄰的存儲地址包含在元數據信息中發送給所述文件存儲服務器;所述數據塊寫入模塊用于,接收到文件訪問服務器發送的請求寫入的數據塊時,緩存到數據塊寫入隊列中;并根據所述元數據信息中包含的所述存儲地址對所述數據塊寫入隊列中的數據塊進行排序,待滿足寫入條件時,將所述數據塊寫入隊列中存儲地址相鄰的數據塊依序寫入硬盤。
10.如權利要求8或9所述的裝置,其特征在于,所述存儲資源管理模塊用于,維護如下存儲資源信息文件存儲服務器信息,文件存儲服務器的硬盤信息以及硬盤物理塊信息;所述并發寫入處理模塊用于,為所述并發寫入的數據分配的所述相鄰的存儲地址,包括同一個文件存儲服務器的同一個硬盤中的連續硬盤物理塊地址。
11.如權利要求9所述的裝置,其特征在于,所述數據塊寫入模塊用于,對所述數據塊寫入隊列中的數據塊進行排序時,若存儲地址相鄰的數據塊達到預先設定的數目閾值、或者超出預先設定的時間間隔,則判定滿足寫入條件。
12.如權利要求10所述的裝置,其特征在于,所述存儲資源管理模塊用于,按照以下方式維護文件存儲服務器的存儲資源信息對同一個硬盤上的空閑硬盤物理塊,將地址連續的按順序排列,形成地址簇;并對間隔的地址簇按照所包含的硬盤物理塊的數目進行降序排列;以及,當硬盤上的硬盤物理塊釋放時,對空閑硬盤物理塊和地址簇進行更新;所述并發寫入處理模塊用于,在為所述并發寫入的數據分配相鄰的存儲地址時,從包含的空閑硬盤物理塊數目最多的地址簇中選取連續的硬盤物理塊地址。
全文摘要
本發明公開了一種分布式文件系統中的并發寫入方法及裝置,元數據服務器維護文件存儲服務器的存儲資源信息;元數據服務器接收到多個文件訪問服務器并發的寫入請求時,根據維護的存儲資源信息為并發寫入的數據分配相鄰的存儲地址。本發明通過將并發且分散的文件訪問客戶端上并發寫入的文件數據塊存放到單個硬盤的連續扇區中,使得并發寫入的文件數據塊可以高速連續地寫入硬盤,從而使得文件并發寫入性能得到顯著提升。
文檔編號G06F17/30GK102622412SQ20121003701
公開日2012年8月1日 申請日期2012年2月17日 優先權日2011年11月28日
發明者丁毅, 王魏強 申請人:中興通訊股份有限公司