專利名稱:一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng)的制作方法
一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng)技術領域
本發(fā)明屬于分布式文件系統(tǒng),具體涉及一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng),以提高分布式文件系統(tǒng)的寫性能、恢復性能。
背景技術:
互聯(lián)網和多媒體應用使得數字信息呈爆炸式增長趨勢,在質和量兩方面對存儲的需求也越來越大,面對這樣的海量數據存儲需求,運行于成百上千甚至成千上萬存儲設備的大規(guī)模分布式文件系統(tǒng)應運而生,并迅速應用于多種領域。分布式文件系統(tǒng)包括多個元數據管理節(jié)點和多個客戶節(jié)點,每個客戶節(jié)點分別連接各元數據管理節(jié)點,每個元數據管理節(jié)點又連接多個數據存儲節(jié)點。隨著分布式文件系統(tǒng)使用的存儲設備增多,分布式文件系統(tǒng)遭遇不可預料事件的概率也大大增加,為保障系統(tǒng)提供服務的時間,保證系統(tǒng)運行的正確性,必須使用日志系統(tǒng)。許多分布式文件系統(tǒng)如Lustre, Google FileSystem, Hadoop File System等都使用了日志系統(tǒng)。
日志系統(tǒng)由管理日志記錄的各類模塊和日志構成,首先文件系統(tǒng)在磁盤上為日志系統(tǒng)開辟額外存儲空間,在文件系統(tǒng)對文件數據進行修改操作之前會將這些操作生成日志記錄并寫入到日志中,固定日志記錄。在這種情況下,一旦遭遇宕機,日志系統(tǒng)就可以利用日志中的日志記錄將文件系統(tǒng)恢復到宕機前的狀態(tài)。日志系統(tǒng)的最大缺陷是所有文件更新都必須先固定日志記錄,每次文件更新操作都要經歷兩次寫操作,一次寫入日志的固定日志記錄操作,一次才是真正寫入文件系統(tǒng),額外的固定日志記錄操作會造成文件系統(tǒng)性能下降,特別是使用磁盤這種低速存儲設備來固定日志記錄,文件系統(tǒng)性能下降更為嚴重。
因為分布式文件系統(tǒng)下元數據管理節(jié)點或數據存儲節(jié)點都是獨立運行,都擁有自己的存儲設備并且獨自存取自己的日志記錄。當存儲設備出現(xiàn)設備故障時可能導致日志記錄無法讀取,導致系統(tǒng)恢復操作無法進行,最終致使整體分布式文件系統(tǒng)無法使用。發(fā)明內容
本發(fā)明提供一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng),解決因為設備故障導致日志記錄丟失致使系統(tǒng)恢復操作無法進行的問題,提高分布式文件系統(tǒng)的寫性能、恢復性倉泛。
為描述方便起見,本發(fā)明所提供的協(xié)作式日志系統(tǒng),運行在一個元數據管理節(jié)點及其連接的N個數據存儲節(jié)點上,每個數據存儲節(jié)點上存儲有自身的日志,N > 2 ;
本發(fā)明所提供的一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng),包括日志請求模塊、分發(fā)模塊、N個傳輸模塊、N個一致性保證模塊、N個記錄添加模塊、N個記錄回收模塊和 N個恢復模塊,N ^ 2 ;其特征在于
(I)日志請求模塊,運行于元數據管理節(jié)點或數據存儲節(jié)點,
當收到文件系統(tǒng)的修改操作命令時,判斷記錄添加模塊是否發(fā)出暫停請求,是則等待記錄回收模塊發(fā)送的回收結束信號,收到該回收結束信號 ,再形成日志記錄添加請求,否則直接形成日志記錄添加請求;然后將日志記錄添加請求發(fā)送到分發(fā)模塊;日志記錄添加請求由請求類型和多條日志記錄組成,請求類型為添加記錄,各條日志記錄均具有序號;
當收到文件系統(tǒng)的恢復命令時,形成恢復請求,將恢復請求發(fā)送到分發(fā)模塊并等待,接收到恢復模塊傳送的各條日志記錄后,將它們傳送到文件系統(tǒng);恢復請求由請求類型和多個日志記錄序號組成,請求類型為恢復;
(2)分發(fā)模塊,運行于元數據管理節(jié)點或數據存儲節(jié)點,分別向各傳輸模塊發(fā)送連接請求,建立網絡傳輸通道;接收到日志記錄添加請求或恢復請求后,將其通過組播方式并行傳輸到各傳輸模塊;連接請求由請求類型、本地網絡地址、目標網絡地址和端口號組成,請求類型為連接,本地網絡地址為分發(fā)模塊所在節(jié)點的IP地址、目標網絡地址為傳輸模塊所在節(jié)點的IP地址,端口號為網絡傳輸通道占用的端口號碼;
(3) N個傳輸模塊完全相同,分別運行于各數據存儲節(jié)點,接收到連接請求后,建立網絡傳輸通道;接收到日志記錄添加請求后,將其發(fā)送到所在數據存儲節(jié)點的一致性保證模塊;接收到恢復請求后,將其發(fā)送到所在數據存儲節(jié)點的恢復模塊;接收到記錄回收請求后,將其發(fā)送到各記錄回收模塊;
(4)N個一致性保證模塊完全相同,分別運行于各數據存儲節(jié)點,向其它各數據存儲節(jié)點的一致性保證模塊發(fā)送所接收日志記錄添加請求中的日志記錄最大序號,同時接收其它各數據存儲節(jié)點的一致性保證模塊所發(fā)送的日志記錄最大序號,并記載與自身發(fā)送的日志記錄最大序號相同的所接收的日志記錄最大序號的數目,判斷該數目是否超過數據存儲節(jié)點總數的一半,是則將所接收的日志記錄添加請求發(fā)送到所在數據存儲節(jié)點的記錄添加模塊,否則繼續(xù)等待傳輸模塊的下一個日志記錄添加請求;
(5)N個記錄添加 模塊完全相同,分別運行于各數據存儲節(jié)點,判斷所在數據存儲節(jié)點上日志剩余空間是否滿足所述日志記錄添加請求中各條日志記錄的總長度,是則將各條日志記錄添加到日志中;否則向所在數據存儲節(jié)點的傳輸模塊發(fā)出記錄回收請求,并向日志請求模塊發(fā)出暫停請求;記錄回收請求由請求類型和回收記錄數目組成,請求類型為回收,回收記錄數目為日志記錄添加請求中日志記錄條數的M倍,M彡2 ;
(6)N個記錄回收模塊完全相同,分別運行于各數據存儲節(jié)點,收到記錄回收請求后,從本數據存儲節(jié)點上日志起始位置開始回收記錄回收請求中回收記錄數目的日志記錄,回收完成后向日志請求模塊發(fā)送回收結束信號;
(7) N個恢復模塊完全相同,分別運行于各數據存儲節(jié)點,接收到恢復請求后,根據恢復請求中的日志記錄序號將相應序號的日志記錄傳輸到日志請求模塊。
客戶節(jié)點向元數據管理節(jié)點發(fā)出元數據操作請求,元數據管理節(jié)點產生相應的操作日志記錄需要存儲,通過日志請求模塊形成日志記錄添加請求;元數據管理節(jié)點宕機重啟后需要一部分日志記錄進行恢復,通過日志請求模塊形成恢復請求;分發(fā)模塊同樣運行在元數據管理節(jié)點上并且已經與多個數據存儲節(jié)點建立了網絡傳輸通道;傳輸模塊運行在數據存儲節(jié)點上接收請求;一致性保證模塊運行在數據存儲節(jié)點上,通過與各數據存儲節(jié)點的一致性保證模塊通信,發(fā)送日志記錄添加請求中最大日志記錄序號,只有接收到超過半數的數據存儲節(jié)點發(fā)送的編號與其相同才將日志記錄添加請求發(fā)送到記錄添加模塊;記錄添加模塊運行在數據存儲節(jié)點上進行日志記錄的添加與固定;記錄回收模塊運行在數據存儲節(jié)點上接收記錄回收請求后進行日志記錄回收操作并通知日志請求模塊;恢復模塊運行在數據存儲節(jié)點上根據恢復請求中的日志記錄序號將相應序號的日志記錄傳輸到日志請求模塊。
本發(fā)明利用分布式文件系統(tǒng)中網絡傳輸效率高于存儲設備低速傳輸效率的特點, 將單個元數據管理節(jié)點或數據存儲節(jié)點產生的日志數據通過網絡以組播方式并行傳輸到各個數據存儲節(jié)點,將日志記錄固定操作分配到多個節(jié)點上同時進行,提高了單個節(jié)點的寫性能。同時由于將重要的日志記錄分布式存儲在多個數據存儲節(jié)點上,避免了單個數據存儲節(jié)點的存儲設備故障造成的不可恢復的危害,提高了分布式文件系統(tǒng)整體的可靠性。
本發(fā)明在系統(tǒng)恢復時通過高速網絡并行從各個數據存儲節(jié)點獲得部分日志記錄, 最終拼接形成完整日志記錄信息,相比單個數據存儲節(jié)點從存儲設備讀取完整日志記錄進行恢復操作擁有更高的性能,提高了分布式文件系統(tǒng)恢復的性能。
本發(fā)明符合日志系統(tǒng)的基本功能要求,包括可用性和通用性,并且不降低文件系統(tǒng)性能,解決了因為設備故障導致日志記錄丟失致使系統(tǒng)恢復操作無法進行的問題,提高分布式文件系統(tǒng)的寫性能和恢復性能。
圖1為分布式文件系統(tǒng)結構示意圖2為本發(fā)明的實施例示意圖3為日志記錄格式不意圖4為日志記錄分布到各數據存儲節(jié)點過程示意圖5為數據存儲節(jié)點進行日志記錄添加與回收的流程示意圖
圖6為日志恢復過程示意圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明進一步說明。
如圖1所示,分布式文件系統(tǒng)由多個元數據管理節(jié)點、多個客戶節(jié)點、多個數據存儲節(jié)點以及用于節(jié)點間互連的高速網絡構成。每個客戶節(jié)點分別連接各元數據管理節(jié)點, 每個元數據管理節(jié)點又連接多個數據存儲節(jié)點,客戶節(jié)點是使用整個分布式文件系統(tǒng)的客戶終端;元數據管理節(jié)點負責管理文件系統(tǒng)的元數據信息;數據存儲節(jié)點負責向客戶節(jié)點提供存儲空間和存儲服務。
如圖2所不,本發(fā)明的實施例,包括日志請求模塊、分發(fā)模塊、3個傳輸模塊、3個一致性保證模塊、3個記錄添加模塊、3個記錄回收模塊和3個恢復模塊;本實施例運行在一個元數據管理節(jié)點及其連接的3個數據存儲節(jié)點上,每個數據存儲節(jié)點上存儲有自身的日志;
日志請求模塊和分發(fā)模塊運行于元數據管理節(jié)點,3個數據存儲節(jié)點上均運行傳輸模塊、一致性保證模塊、記錄添加模塊、記錄回收模塊和恢復模塊;
如圖3所示, 一條日志記錄包括七個部分幻數(Magic Number)、日志編號 (Journal Number)、記錄序號(Sequence Number)、記錄類型(Type)、記錄長度(Length)、 日志記錄數據(Log data)和校驗和(Checksum)。其中,幻數用來驗證日志記錄的合法性;日志編號就是此條日志記錄所屬的日志的編號,數據存儲節(jié)點上可能管理著多個系統(tǒng)的日志,故需要使用日志編號來確定某條日志記錄是屬于哪個日志;記錄序號是日志記錄本身在日志中的序號,日志請求模塊可以根據這個記錄序號計算日志記錄分布在哪個數據存儲節(jié)點上,記錄添加模塊也會根據這個記錄序號將日志記錄插入到對應的位置上進行管理; 記錄類型用來表示日志記錄的類型,包括事務開始類型,寫操作類型,刪除操作類型,事務結束類型等;記錄長度用來表示這條日志記錄需要的空間大小,因為日志記錄類型不同,日志記錄數據長度也可能有變化;日志記錄數據就是文件系統(tǒng)產生的操作記錄數據,文件系統(tǒng)宕機后可以通過這些數據進行恢復;校驗和用來驗證日志記錄存儲的完整性。
如圖4所示,本實施例需要將記錄序號為O到2的日志記錄添加到三個數據存儲節(jié)點;具體描述如下
日志請求模塊形成日志記錄添加請求發(fā)送到分發(fā)模塊;該日志記錄添加請求由請求類型和三條日志記錄組成,請求類型為添加記錄,三條日志記錄的記錄序號分別為0,1, 2 ;
分發(fā)模塊已經與三個數據存儲節(jié)點建立了網絡傳輸通道;接收到日志記錄添加請求后將其通過組播方式并行傳輸到三個數據存儲節(jié)點上的傳輸模塊;
傳輸模塊接收到日志記錄添加請求后發(fā)送到所在數據存儲節(jié)點上的一致性保證模塊;向其它兩個數據存儲節(jié)點的一致性保證模塊發(fā)送所接收日志記錄添加請求中的日志記錄最大序號,應該等于2 ;同時接收其它兩個數據存儲節(jié)點發(fā)送的日志記錄最大序號,并記載與自身發(fā)送的日志記錄最大序號相同的所接收的日志記錄最大序號的數目,當數目等于2時,則將所接收的日志記錄添加請求發(fā)送到所在數據存儲節(jié)點的記錄添加模塊;
記錄添加模塊負責將日志記錄添加請求中的三條日志記錄添加到所在數據存儲節(jié)點上的日志中。
如圖5所示,數據存儲節(jié)點進行日志記錄添加與回收,過程如下
1.日志請求模塊接收到文件系統(tǒng)命令后產生相應日志添加請求;
2.添加模塊接收到請求后嘗試進行日志添加操作,需要判斷日志剩余空間是否滿足所述日志記錄添加請求中各條日志記錄的總長度,如果滿足則跳轉到第3步,否則跳轉到第4步;
3.日志剩余空間滿足,協(xié)調一致性保證模塊與記錄添加模塊進行日志記錄的添加操作,添加操作完成后跳轉到第7步;
4.日志剩余空間不滿足,向日志請求模塊發(fā)出暫停請求,要求暫停產生日志記錄添加請求,同時向所在數據存儲節(jié)點的傳輸模塊發(fā)出記錄回收請求;
5.傳輸模塊接收日志記錄回收請求后通知記錄回收模塊,開始日志記錄回收操作,從日志起始位置開始回收日志記錄;
6.如果日志記錄回收成功則向日志請求模塊發(fā)送回收結束信號,恢復產生日志記錄添加請求并跳轉到第I步重新開始,否則繼續(xù)第7步;
7.操作完畢。
如圖6所示,本實施 例需要記錄序號為O到2的日志記錄進行恢復,具體描述如下
日志請求模塊形成恢復請求發(fā)送到分發(fā)模塊;該恢復請求由請求類型和三個日志記錄序號組成,請求類型為恢復,三個日志記錄序號分別為0,1,2 ;
分發(fā)模塊已經與三個數據存儲節(jié)點建立了網絡傳輸通道;接收到恢復請求后將其通過組播方式并行傳輸到三個數據存儲節(jié)點上的傳輸模塊;
傳輸模塊接收到 恢復請求后發(fā)送到所在數據存儲節(jié)點上的恢復模塊,恢復模塊根據恢復請求中的日志記錄序號將相應序號的日志記錄傳輸到日志請求模塊;其中第一個數據存儲節(jié)點傳輸記錄序號為O和I的日志記錄,第二個數據存儲節(jié)點傳輸記錄序號為I 和2的日志記錄,第三個數據存儲節(jié)點傳輸記錄序號為O和2的日志記錄;
現(xiàn)在日志請求模塊已經完整接收到記錄序號為O到2的日志記錄,將它們傳送到文件系統(tǒng),文件系統(tǒng)可以利用這些日志記錄進行恢復。
權利要求
1.一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng),包括日志請求模塊、分發(fā)模塊、N個傳輸模塊、N個一致性保證模塊、N個記錄添加模塊、N個記錄回收模塊和N個恢復模塊,N > 2 ;其特征在于 (1)日志請求模塊,運行于元數據管理節(jié)點或數據存儲節(jié)點, 當收到文件系統(tǒng)的修改操作命令時,判斷記錄添加模塊是否發(fā)出暫停請求,是則等待記錄回收模塊發(fā)送的回收結束信號,收到該回收結束信號,再形成日志記錄添加請求,否則直接形成日志記錄添加請求;然后將日志記錄添加請求發(fā)送到分發(fā)模塊;日志記錄添加請求由請求類型和多條日志記錄組成,請求類型為添加記錄,各條日志記錄均具有序號; 當收到文件系統(tǒng)的恢復命令時,形成恢復請求,將恢復請求發(fā)送到分發(fā)模塊并等待,接收到恢復模塊傳送的各條日志記錄后,將它們傳送到文件系統(tǒng);恢復請求由請求類型和多個日志記錄序號組成,請求類型為恢復; (2)分發(fā)模塊,運行于元數據管理節(jié)點或數據存儲節(jié)點,分別向各傳輸模塊發(fā)送連接請求,建立網絡傳輸通道;接收到日志記錄添加請求或恢復請求后,將其通過組播方式并行傳輸到各傳輸模塊;連接請求由請求類型、本地網絡地址、目標網絡地址和端口號組成,請求類型為連接,本地網絡地址為分發(fā)模塊所在節(jié)點的IP地址、目標網絡地址為傳輸模塊所在節(jié)點的IP地址,端口號為網絡傳輸通道占用的端口號碼; (3)N個傳輸模塊完全相同,分別運行于各數據存儲節(jié)點,接收到連接請求后,建立網絡傳輸通道;接收到日志記錄添加請求后,將其發(fā)送到所在數據存儲節(jié)點的一致性保證模塊;接收到恢復請求后,將其發(fā)送到所在數據存儲節(jié)點的恢復模塊;接收到記錄回收請求后,將其發(fā)送到各記錄回收模塊; (4)N個一致性保證模塊完全相同,分別運行于各數據存儲節(jié)點,向其它各數據存儲節(jié)點的一致性保證模塊發(fā)送所接收日志記錄添加請求中的日志記錄最大序號,同時接收其它各數據存儲節(jié)點的一致性保證模塊所發(fā)送的日志記錄最大序號,并記載與自身發(fā)送的日志記錄最大序號相同的所接收的日志記錄最大序號的數目,判斷該數目是否超過數據存儲節(jié)點總數的一半,是則將所接收的日志記錄添加請求發(fā)送到所在數據存儲節(jié)點的記錄添加模塊,否則繼續(xù)等待傳輸模塊的下一個日志記錄添加請求; (5)N個記錄添加模塊完全相同,分別運行于各數據存儲節(jié)點,判斷所在數據存儲節(jié)點上日志剩余空間是否滿足所述日志記錄添加請求中各條日志記錄的總長度,是則將各條日志記錄添加到日志中;否則向所在數據存儲節(jié)點的傳輸模塊發(fā)出記錄回收請求,并向日志請求模塊發(fā)出暫停請求;記錄回收請求由請求類型和回收記錄數目組成,請求類型為回收,回收記錄數目為日志記錄添加請求中日志記錄條數的M倍,M彡2 ; (6)N個記錄回收模塊完全相同,分別運行于各數據存儲節(jié)點,收到記錄回收請求后,從本數據存儲節(jié)點上日志起始位置開始回收記錄回收請求中回收記錄數目的日志記錄,回收完成后向日志請求模塊發(fā)送回收結束信號; (7)N個恢復模塊完全相同,分別運行于各數據存儲節(jié)點,接收到恢復請求后,根據恢復請求中的日志記錄序號將相應序號的日志記錄傳輸到日志請求模塊。
全文摘要
一種面向分布式文件系統(tǒng)的協(xié)作式日志系統(tǒng),屬于分布式文件系統(tǒng),解決設備故障導致日志記錄丟失致使系統(tǒng)恢復操作無法進行的問題,提高分布式文件系統(tǒng)的寫性能、恢復性能。本發(fā)明包括日志請求模塊、分發(fā)模塊、N個傳輸模塊、N個一致性保證模塊、N個記錄添加模塊、N個記錄回收模塊和N個恢復模塊,日志請求模塊和分發(fā)模塊運行于元數據管理節(jié)點或數據存儲節(jié)點,各數據存儲節(jié)點上均運行傳輸模塊、一致性保證模塊、記錄添加模塊、記錄回收模塊和恢復模塊。本發(fā)明利用分布式文件系統(tǒng)中網絡傳輸效率高于存儲設備低速傳輸效率的特點,在保證日志可靠性及發(fā)揮正常日志作用的前提下,提高了分布式文件系統(tǒng)的寫性能和恢復性能。
文檔編號H04L29/08GK103051681SQ20121052167
公開日2013年4月17日 申請日期2012年12月6日 優(yōu)先權日2012年12月6日
發(fā)明者李潔瓊, 王芳, 馮丹, 鄭超, 杜鑫 申請人:華中科技大學