分離存儲事務日志的制作方法
【專利摘要】本文公開了用于維護存儲單元事務日志的系統(tǒng)、非暫時性計算機可讀介質以及方法。從控制器所接收的存儲單元事務日志被分離。
【專利說明】
分離存儲事務曰志
【背景技術】
[0001]迄今為止的一些分布式文件系統(tǒng)使用控制器的網絡來管理去往和來自存儲單元的事務。這樣的控制器可以在它們自己之間復制事務日志。在控制器故障的情況下,事務日志可以用于確定當控制器故障時在進行中的事務。
【附圖說明】
[0002]圖1是根據(jù)本公開內容的方面的示例性系統(tǒng)的框圖。
[0003]圖2是根據(jù)本公開內容的方面的示例性方法的流程圖。
[0004]圖3是根據(jù)本公開內容的方面的工作示例。
[0005]圖4是根據(jù)本公開內容的方面的另外的工作示例。
【具體實施方式】
[0006]如以上所指出的,網絡中的控制器可以在它們自己之間復制事務日志以用于故障容忍的目的。如果一個控制器故障,則另一個控制器可以代替故障的控制器。通過分析事務日志,代替的控制器可以從故障的控制器結束的地方繼續(xù)。一些控制器忽略所接收的事務日志,直到發(fā)送控制器故障為止。這樣的控制器可以已知為“被動接收者”。該方法具有對系統(tǒng)非破壞性的優(yōu)點。在該情況下,接收者在接收時不對所接收的事務日志進行認證并且簡單地忽略它們;此外,發(fā)送控制器不等待來自接收者的確認。
[0007]然而,雖然被動接收者控制器是非破壞性的,但是如果復制的事務日志損壞并且發(fā)送控制器故障,則可能出現(xiàn)問題。在該情況下,代替的控制器可能不能確定事務日志與哪個存儲單元相關聯(lián)并且整個系統(tǒng)可能自動停止。支持工程師可能需要通過檢查每個控制器的存儲器中的日志并且撤銷某些事務來使系統(tǒng)穩(wěn)定。拼合事務日志可能是繁重的、冗長的過程。事務日志可以跨不同的存儲器地址而分散;因此,不僅難以確定哪個存儲單元生成了每個事務日志,而且日志的無序或以其它方式隨機的布置使得難以確定日志的正確時間順序。
[0008]鑒于前述內容,本文中所公開的示例通過提供用于維護事務日志的系統(tǒng)、計算機可讀介質和方法來解決這些問題。在一個示例中,從控制器所接收的存儲單元事務日志被分離到不同的列表或序列中,使得每個列表或序列包含由一個存儲單元所生成的事務日志。因而,日志可以按存儲單元隔離,而不是隨機地布置在存儲器中。如果來自故障的控制器的事務日志不可讀,則故障的控制器可以被另一個控制器代替而不停止整個系統(tǒng),因為日志的發(fā)送者可以被自動確定,盡管日志損壞。在還另外的示例中,校驗和可以用于對日志的內容和次序進行認證。當參考以下的示例描述和附圖來考慮時,將領會本公開內容的方面、特征和優(yōu)點。以下描述并不限制本申請;相反,本公開內容的范圍由隨附權利要求和等同物來限定。
[0009]圖1表示用于執(zhí)行本文中公開的技術的說明性計算機裝置100的示意圖。計算機裝置100可以是類似配置的計算機的網絡中的一個控制器??刂破鞯木W絡可以管理去往和來自多個存儲單元的事務。計算機裝置100可以包括通常結合計算機所使用的所有組件。例如,它可以具有鍵盤和鼠標和/或各種其它類型的輸入設備,諸如筆式輸入、操縱桿、按鈕、觸摸屏等等,以及顯示器,所述顯示器可以包括例如CRT、LCD、等離子體屏幕監(jiān)視器、TV、投影儀等等。計算機裝置100還可以包括網絡接口(未示出)來與網絡中的其它計算機通信。計算機裝置100還可以包含處理器110,所述處理器可以是任何數(shù)目的眾所周知的處理器,諸如來自Intel?公司的處理器。在另一示例中,處理器110可以是專用集成電路(“ASIC")。非暫時性計算機可讀介質(“CRM”)112可以存儲可以由處理器110檢索和執(zhí)行的指令。如將在以下更詳細地討論的,指令可以包括故障容忍模塊116。非暫時性的CRM 112可以由能夠從非暫時性CRM 112取出或獲得邏輯并且執(zhí)行其中所包含的指令的任何指令執(zhí)行系統(tǒng)使用或與所述指令執(zhí)行系統(tǒng)結合地使用。
[0010]非暫時性計算機可讀介質可以包括許多物理介質中的任一個,諸如例如電子、磁性、光學、電磁或半導體介質。合適的非暫時性計算機可讀介質的更具體的示例包括但不限于便攜式磁性計算機盤(諸如軟盤或硬驅動器)、只讀存儲器(“ROM”)、可擦除可編程只讀存儲器、便攜式壓縮盤或可以直接或間接耦合到計算機裝置100的其它存儲設備。可替換地,非暫時性CRM 112可以是隨機存取存儲器(“RAM”)設備或可以被劃分成組織為雙列直插式存儲器模塊(“DMM”)的多個存儲器分段。非暫時性CRM 112還可以同樣包括一個或多個前述和/或其它設備的任何組合。雖然在圖1中示出了僅僅一個處理器和一個非暫時性CRM,但是計算機裝置100可以實際上包括可以或可以不存儲在相同的物理外殼或位置內的附加的處理器和存儲器。
[0011]駐留在非暫時性CRM112中的指令可以包括將由處理器110直接(諸如機器代碼)或間接(諸如腳本)執(zhí)行的任何指令集。在這方面,術語“指令”、“腳本”和“應用”在本文中可以可互換地使用。計算機可執(zhí)行指令可以以任何計算機語言或格式來存儲,諸如以目標代碼或源代碼模塊。此外,應理解的是,指令可以以硬件、軟件或硬件和軟件的組合的形式來實現(xiàn),并且本文中的示例僅僅是說明性的。
[0012]如以上所指出的,文件系統(tǒng)可以包括控制器的網絡,所述控制器管理去往和來自至少一個存儲單元的事務并且維護包含事務詳情的事務日志。網絡中的每個控制器可以與圖1的計算機裝置100類似地被配置。在一個示例中,網絡中的給定控制器可以執(zhí)行故障容忍模塊116。在執(zhí)行時,故障容忍模塊116可以指示處理器110將接收自網絡的事務日志隔離到被分配在存儲器中的分離的列表中,使得每個列表包含由一個存儲單元所生成的事務日志。在另外的示例中,故障容忍模塊116可以指示處理器110得出針對每個所接收的事務日志中的內容的內容校驗和并且得出針對使每個列表中所接收的事務日志對相關聯(lián)的每個地址的指針或鏈接校驗和。
[0013]在圖2-4中示出了所述系統(tǒng)、方法和非暫時性計算機可讀介質的工作示例。特別地,圖2圖示了用于維護事務日志的示例性方法200的流程圖。圖3-4均示出了根據(jù)本文中所公開的技術的工作示例。以下將關于圖2的流程圖來討論圖3-4中所示的動作。
[0014]如圖2的塊202中所示的,可以從控制器的網絡或集群接收事務日志?,F(xiàn)在參考圖3,包括兩個說明性的控制器302和318的示例性集群被示出為通過網絡316進行通信。網絡316可以包括各種配置并且使用各種協(xié)議,包括內聯(lián)網、虛擬專用網絡、本地以太網網絡、使用專有于一個或多個公司的通信協(xié)議的專用網絡、蜂窩和無線網絡(例如WiFi)以及前述的各種組合。盡管在圖3中描繪了僅僅兩個控制器,但是應當領會的是典型的網絡可以包括更大量的聯(lián)網控制器。
[0015]圖3還示出了經由網絡316與控制器302和318通信的三個存儲單元320、322和324。在圖3的示例中,控制器318(即控制器A)可以管理去往和來自存儲單元320和322(即分別為存儲單元A和存儲單元B)的事務。此外,在圖3的示例中,存儲單元324(即存儲單元C)可以由控制器302(即控制器B)管理。每個存儲單元320、322和324可以包括物理塊設備,所述物理塊設備提供可以從中讀取或向其寫入的線性尋址的數(shù)據(jù)塊的集合。存儲單元的一些示例可以包括但不限于盤驅動器、固定或可移除的磁性介質驅動器(例如硬驅動器、軟驅動器或基于zip的驅動器)、可寫或只讀光學介質驅動器(例如⑶或DVD)、磁帶驅動器或固態(tài)大容量存儲設備。在另一示例中,存儲單元可以是駐留在存儲網絡上的存儲設備,諸如使用光纖信道、無限帶寬技術(Infiniband)或因特網協(xié)議(“IP”)接口而被呈現(xiàn)給存儲區(qū)域網絡(“SAN”)的小型計算機系統(tǒng)接口( “SCSI”)設備。應理解的是,每個存儲單元320、322和324可以包括任何其它類型的存儲單元并且前述內容是非窮舉的列表。在另一示例中,存儲單元320、322和324可以被配置為可以經由操作系統(tǒng)的邏輯接口而訪問的卷(vo Iume )。
[0016]圖3還示出了控制器之一、控制器302的靠近圖示,其被示出為具有布置在其中的存儲器301。雖然存儲器301被示出為對于控制器302本地的存儲器,但應理解的是,一些示例可以使用遠程存儲器來實現(xiàn)。在該示例中,存儲器塊304被映射到控制器318。存儲器塊304可以用于維護針對由控制器318管理的每一個存儲單元(其在本示例中是存儲單元320和322)的事務日志。控制器302還可以分配存儲器塊312來維護針對其自己的存儲單元(其在本示例中是存儲單元324)的事務日志。雖然圖3的示例示出了被映射到每個控制器的一個存儲器塊,但是應理解的是,其它示例可以將多個存儲器塊映射到每個控制器。
[0017]參考回到圖2,事務日志可以被分離,如塊204中所示的。在一個示例中,事務日志可以分布在事務日志的分離的列表或系列之中。每個列表可以是例如鏈表數(shù)據(jù)結構,使得每個事務日志還可以包括向下一個事務日志的地址指針。
[0018]參考回到圖3的示例,存儲器塊304包含兩個不同的事務日志序列,即列表306和列表308。在該示例中,列表306和列表308采用鏈表數(shù)據(jù)結構來保持對產生于每個存儲單元的事務日志的跟蹤。每個列表可以包括表頭記錄,所述表頭記錄指示每個列表中的事務日志起源于哪個存儲單元。例如,列表306包括表頭記錄307并且列表308包括表頭記錄309。表頭記錄307指示列表306中的事務日志產生于存儲單元320(即存儲單元A)并且表頭記錄309指示列表308中的事務日志產生于存儲單元322(即存儲單元B)。在控制器318故障的情況下,表頭記錄可以被讀取以確定由控制器318所管理的存儲單元。圖3還示出了具有表頭記錄315的列表314。表頭記錄315指示列表314中的事務起源于存儲單元324(即存儲單元C)。控制器302可以維護列表314以跟蹤來自其自己的存儲單元324的事務日志。
[0019]控制器302可以將列表314的拷貝復制到控制器318,使得在控制器302故障的情況下,控制器318可以使用列表314的拷貝來代替控制器302。控制器318還可以在其自己的存儲器中保存列表306和列表314的本地拷貝。雖然圖3示出了控制器302管理存儲單元324并且控制器318管理兩個存儲單元320和322,但是應理解的是,圖3中的配置僅僅是說明性的,并且控制器可以與以任何組合的存儲單元相關聯(lián)。如以上所指出的,應理解的是,可以配置附加的存儲單元和控制器。
[0020]在由控制器(例如控制器302)接收到每個事務日志時,可以針對每個所接收的事務日志而得出內容校驗和,并且可以針對使每個列表中的所接收的事務日志對相關聯(lián)的每個指針或鏈接而得出指針校驗和。如以下將進一步討論的,這些校驗和可以用于認證每個事務日志的內容以及事務日志的每個列表或系列中的事務日志的次序。在一個示例中,日志的次序可以被定義為事務日志以其生成的時間次序。
[0021]現(xiàn)在參考圖4,控制器302可以確定網絡中的控制器是否已經故障。在圖4的示例中,控制器318故障并且控制器302可以定位從由控制器318所管理的存儲單元之一產生的事務日志的每個列表。控制器302被示出為使用從由控制器318所管理的存儲單元之一產生的事務日志的每個列表代替控制器318來執(zhí)行后續(xù)事務。如以上所指出的,在接收到每個事務日志時所得出的內容校驗和可以用于認證從由故障的控制器所管理的存儲單元之一產生的每個事務日志中所包含的內容。此外,指針校驗和可以用于認證從由故障的控制器所管理的存儲單元之一產生的每個列表中的事務日志的次序。控制器302可以自動代替控制器318并且可以撤銷由于日志損壞而不可解決的任何改變。
[0022]有利地,前述系統(tǒng)、方法和非暫時性計算機可讀介質可以將事務日志分布或以其它方式隔離到分離的列表中,使得每個列表包括來自一個存儲單元的事務日志。在這方面,系統(tǒng)可以通過對指示每個列表中的日志所起源于的存儲單元的表頭記錄進行校驗而自動從故障的控制器恢復。繼而,本文中所公開的技術可以防止系統(tǒng)在事務日志的認證失敗時停下來。代替地,以無縫且對系統(tǒng)非破壞性的方式來替換故障的遠程控制器。
[0023]盡管已經參考特定示例描述了本文的公開內容,但是要理解的是,這些示例僅僅說明本公開內容的原理。因此要理解的是,可以對示例做出許多修改并且可以設想到其它的布置而不脫離于如由隨附權利要求所限定的本公開內容的精神和范圍。此外,雖然在附圖中以特定次序示出了特定過程,但是這樣的過程不限于任何特定的次序,除非這樣的次序在本文中被明確闡明;相反,過程可以以不同的次序或并發(fā)地執(zhí)行并且可以添加或省略步驟。
【主權項】
1.一種系統(tǒng),包括: 用于管理去往和來自多個存儲單元的事務并且用于維護包含事務詳情的事務日志的控制器的網絡; 故障容忍模塊,其在執(zhí)行時指示至少一個處理器: 將接收自網絡的事務日志隔離到被分配在存儲器中的分離列表中,使得每個列表包含由一個存儲單元所生成的事務日志; 得出針對每個所接收的事務日志中的內容的內容校驗和;以及 得出針對使每個列表中的所接收的事務日志對相關聯(lián)的每個地址的指針校驗和。2.根據(jù)權利要求1所述的系統(tǒng),其中所述故障容忍模塊在執(zhí)行時還指示至少一個處理器: 確定網絡中的控制器是否已經故障;以及 如果控制器已經故障,則定位從由控制器所管理的存儲單元之一產生的事務日志的每個列表。3.根據(jù)權利要求2所述的系統(tǒng),其中,如果控制器已經故障,則故障容忍模塊在執(zhí)行時還指示至少一個處理器使用從由控制器所管理的存儲單元之一產生的事務日志的每個列表代替控制器來執(zhí)行后續(xù)事務。4.根據(jù)權利要求2所述的系統(tǒng),其中,如果控制器已經故障,則故障容忍模塊在執(zhí)行時還指示至少一個處理器: 使用內容校驗和來認證從由控制器所管理的存儲單元之一產生的每個事務日志中所包含的內容;以及 使用指針校驗和來認證從由控制器所管理的存儲單元之一產生的每個列表中的事務日志的次序。5.根據(jù)權利要求1所述的系統(tǒng),其中事務日志的每個列表包括表頭記錄,所述表頭記錄指示每個列表中的事務日志起源于哪個存儲單元。6.—種其中具有指令的非暫時性計算機可讀介質,所述指令在執(zhí)行時指示至少一個處理器: 與管理去往和來自多個存儲單元的事務并且維護包含事務詳情的事務日志文件的控制器的集群中的每個控制器建立通信; 讀取從集群所接收的事務日志;以及 將所接收的事務日志分離到事務日志的不同系列中,使得每個系列包含由一個存儲單元所生成的事務日志。7.根據(jù)權利要求6所述的非暫時性計算機可讀介質,其中,所述介質中的指令在執(zhí)行時還指示至少一個處理器: 確定集群中的控制器是否已經故障;以及 如果控制器已經故障,則定位從由控制器所管理的存儲單元之一產生的事務日志的每個系列。8.根據(jù)權利要求7所述的非暫時性計算機可讀介質,其中,所述介質中的指令在執(zhí)行時還指示至少一個處理器:如果控制器已經故障,則使用從由控制器所管理的存儲單元之一產生的事務日志的每個系列代替控制器來執(zhí)行后續(xù)事務。9.根據(jù)權利要求7所述的非暫時性計算機可讀介質,其中,所述介質中的指令在執(zhí)行時還指示至少一個處理器: 計算針對每個所接收的事務日志中的內容的內容校驗和; 計算針對使事務日志的每個系列中的所接收事務日志對相關聯(lián)的每個鏈接的鏈接校驗和; 如果控制器已經故障,則使用內容校驗和來認證從由控制器所管理的存儲單元之一產生的每個事務日志中所包含的內容;以及 如果控制器已經故障,則使用鏈接校驗和來認證從由控制器所管理的存儲單元之一產生的每個系列中的事務日志的次序。10.根據(jù)權利要求6所述的非暫時性計算機可讀介質,其中事務日志的每個列表包括表頭記錄,所述表頭記錄指示每個列表中的事務日志起源于哪個存儲單元。11.一種方法,包括 使用至少一個處理器來讀取由控制器的集群所管理的存儲單元事務的事務日志; 使用至少一個處理器來將事務日志分布在事務日志的分離序列之中,使得每個序列包含由一個存儲單元所生成的事務日志; 使用至少一個處理器來確定針對由控制器的集群所接收的每個事務日志中的內容的內容校驗和;以及 使用至少一個處理器來確定針對使事務日志的每個序列中的所接收事務日志對相關聯(lián)的每個地址指針的指針校驗和。12.根據(jù)權利要求11所述的方法,還包括: 使用至少一個處理器來確定控制器是否已經故障;以及 如果控制器已經故障,則使用至少一個處理器來定位從由控制器所管理的存儲單元之一產生的事務日志的每個序列。13.根據(jù)權利要求12所述的方法,還包括如果控制器已經故障,則使用至少一個處理器通過讀取從由控制器所管理的存儲單元之一產生的事務日志的每個序列代替控制器來執(zhí)行后續(xù)事務。14.根據(jù)權利要求12所述的方法,還包括: 如果控制器已經故障,則使用至少一個處理器利用內容校驗和來認證從由控制器所管理的存儲單元之一產生的每個事務日志中所包含的內容;以及 如果控制器已經故障,則使用至少一個處理器利用指針校驗和來認證從由控制器所管理的存儲單元之一產生的每個序列中的事務日志的次序。15.根據(jù)權利要求11所述的方法,其中事務日志的每個序列包括表頭記錄,所述表頭記錄指示每個序列中的事務日志起源于哪個存儲單元。
【文檔編號】G06F12/00GK105900073SQ201380080623
【公開日】2016年8月24日
【申請日】2013年8月29日
【發(fā)明人】S.納扎里, J.王, S.D.默蒂, M.馬
【申請人】慧與發(fā)展有限責任合伙企業(yè)