容錯集群存儲系統中的寫入性能的制作方法
【專利摘要】本發明實施例涉及支持提交到穩定存儲器的事務數據。簇中的提交數據存儲在持久緩存層中,被復制并且存儲在一個或多個次級節點的緩存層中。在獨占寫入鎖定分配給原版并且共享寫入鎖定擴展為副本的情況下,一個拷貝被指定為原版拷貝,所有其它拷貝被指定為副本。在數據已經復制到指定為接收副本的每個節點的確認之后,傳送接收數據的確認。提供管理器和引導器以支持文件系統內的原版拷貝和副本的管理,包括副本的無效、與保存原版拷貝的節點的故障關聯的容錯、從故障節點恢復、從功率故障恢復文件系統以及在文件系統內傳送原版和副本拷貝。
【專利說明】容錯集群存儲系統中的寫入性能
【技術領域】
[0001]本發明涉及集群文件系統中的寫入性能。更具體地說,本發明涉及將集群存儲系統的文件系統緩存與分布式存儲器層進行集成以啟用同步寫入事務的效率。
【背景技術】
[0002]具有多個同步寫入操作或高比例提交操作的工作量被認為遭受性能損失。這些工作量在具有高比例提交的數據庫工作量中是常見的。相似地,基于web的工作量當關閉文件時執行要求提交到穩定存儲器的一系列文件操作。虛擬機具有它們自身的塊層,并且在虛擬化環境中到達底層存儲器的所有寫入事務是同步的,并且要求立即提交到穩定存儲器。這些操作中的每一個要求在將確認返回到客戶機之前,將工作量數據寫入到存儲子系統。因為盤存取延時是比動態RAM (在此又稱為DRAM)延時更高的量值級別,所以性能損失反映在增加的寫入延時中。此外,提交操作不允許文件系統通過對存儲子系統將多個寫入事務聚合為單個I/O來延遲寫入事務。相應地,要求將數據寫入到存儲子系統的各種類型的操作以及關聯的確認通信受性能損失影響。
【發明內容】
[0003]本發明包括用于減小容錯集群文件系統中與同步寫入事務關聯的性能損失的方法、系統和物品。
[0004]在一個方面中,提供一種用于減小容錯文件系統中與同步寫入事務關聯的性能損失的方法。所述文件系統中的頁面緩存層與穩定存儲器層進行集成,以在簇中的各節點的分布式非易失性存儲器中臨時保存提交數據。響應于在所述文件系統中接收同步寫入事務,與所述事務關聯的數據被放置在層中并且在所述簇中的至少一個節點的層內被復制。在接收到的數據的原版拷貝與副本之間進行區分。所述區分包括:將現有緩存策略應用于所述原版拷貝。在將所述原版拷貝刷新(flush)到持久存儲器之后,使得所述節點上的每個副本無效。
[0005]在另一方面中,提供一種用于在文件系統中將穩定存儲器層與頁面緩存層進行集成的計算機程序產品。所述計算機程序產品包括具有嵌入至其的程序代碼的計算機可讀存儲介質。所述程序代碼可由處理器執行。更具體地說,提供用于在簇中的各節點的分布式非易失性存儲器中臨時保存提交數據的程序代碼。響應于在所述文件系統中接收同步寫入事務,與接收到的寫入事務關聯的數據被放置在層中并且在所述文件系統中的一個或多個遠程節點的層內被復制。還提供用于在接收到的數據的原版拷貝與副本之間進行區分的程序代碼。所述區分包括:將現有緩存策略應用于接收到的數據的原版拷貝。響應于將所述原版拷貝刷新到持久存儲器,使得各個遠程節點上的每個副本無效。
[0006]在又一方面中,提供一種系統,其配備有在文件系統中與頁面緩存層集成的穩定存儲器層以在簇中節點的分布式非易失性存儲器中保存提交數據。每個節點配備有與存儲器進行通信的處理單元。提供與所述處理單元中的至少一個進行通信的功能單元。所述功能單元包括用于支持容錯文件系統中的寫入事務的工具。所述工具包括放置管理器、引導器和無效管理器,但不限于此。所述放置管理器負責將與所接收到的寫入事務關聯的數據放置在至少一個節點的層中。與所述放置管理器進行通信的引導器負責在接收到的數據的原版拷貝與接收到的數據的副本之間進行區分。所述引導器的功能包括:將現有緩存策略應用于接收到的數據的原版拷貝。與所述引導器進行通信的無效管理器響應于將所述原版拷貝刷新到持久存儲器而使得每個副本無效。
[0007]在再一方面中,提供一種方法,用于減小容錯文件系統中與寫入事務關聯的性能損失。在文件系統中將穩定存儲器層與頁面緩存層進行集成,以在簇節點的非易失性存儲器中保存提交到穩定存儲器的數據。響應于在所述文件系統中接收同步寫入事務,與接收到的事務關聯的數據被放置在層中并且在層內被復制。維持接收到的數據的原版拷貝和副本。所述原版拷貝和所述副本具有區別特征。將現有緩存策略應用于接收到的數據的原版拷貝,在將原版拷貝刷新到持久存儲器之后,使得所述副本無效。
[0008]結合附圖,從本發明目前優選實施例的以下詳細描述中,本發明的其它特征和優
點將變得清楚。
【專利附圖】
【附圖說明】
[0009]在此引用的附圖形成說明書的一部分。附圖中所示的特征旨在說明本發明的僅某些實施例,而不是本發明所有實施例,除非另外明確地指示。
[0010]圖1是描述對文件系統的同步寫入事務的到達的流程圖。
[0011]圖2是描述當簇中的一個或多個節點已經歷經故障時防止數據的丟失的流程圖。
[0012]圖3是描述原版節點將字節范圍的原版拷貝刷新到盤存儲子系統的流程圖。
[0013]圖4是描述當簇從功率故障返回時防止提交數據的丟失的處理的流程圖。
[0014]圖5是描述用于傳送鎖定的處理的流程圖,其也可以傳送原版拷貝與副本之間的指定。
[0015]圖6是示出具有用于支持容錯文件系統中的事務的工具的系統的框圖。
[0016]圖7描述示出用于實現本發明實施例的系統的框圖。
【具體實施方式】
[0017]應容易理解,可以通過各種不同配置來布置和設計在此一般描述以及在附圖中示出的本發明的各組件。因此,附圖中所提出的本發明的裝置、系統和方法的實施例的以下詳細描述并非意圖限制本發明的范圍,如所要求的那樣,而是僅表示本發明的所選實施例。
[0018]貫穿說明書對“選擇實施例”、“ 一個實施例”或“實施例”的引用表示本發明的至少一個實施例中包括結合實施例描述的特定特征、結構或特性。因此,貫穿該說明書在各個地方的短語“在選擇實施例中”、“在一個實施例中”或“在實施例中”的出現不一定指代相同的實施例。
[0019]所描述的特征、結構或特性可以在一個或多個實施例中以任何合適的方式組合。在以下描述中,提供大量具體細節,例如放置管理器、計算管理器等的示例,以提供本發明實施例的透徹理解。然而,本領域技術人員應理解,可以在沒有一個或多個具體細節的情況下或以其它方法、組件、材料等實踐本發明。在其它實例中,并未詳細示出或描述公知結構、材料或操作,以免模糊本發明的各方面。
[0020]在各實施例的以下描述中,參照附圖,其形成實施例的一部分,并且通過說明的方式示出可以實踐本發明的具體實施例。應理解,因為可以在不脫離本發明的范圍的情況下進行結構改變,所以可以利用其它實施例。
[0021]該說明書中所描述的功能單元已經標記有管理器和引導器的形式的工具。可以以可編程硬件器件(例如現場可編程門陣列、可編程陣列邏輯、可編程邏輯器件等)來實現所述工具。也可以以用于通過各種類型的處理器來進行處理的軟件來實現所述工具。所標識的可執行代碼的工具可以例如包括計算機指令的一個或多個物理或邏輯塊,其可以例如被組織為對象、過程、函數或其它構造。然而,所標識的工具的可執行無需物理上定位在一起,而是可以包括不同位置中所存儲的全異指令,其當邏輯上結合在一起時包括所述工具并且實現所聲明的所述工具的目的。
[0022]實際上,可執行代碼可以是單個指令,或很多指令,并且甚至在不同應用之中,可以分布在若干不同代碼段上,并且遍及若干存儲器設備。相似地,操作數據可以被標識并且在此示出在管理器內,并且可以通過任何合適的形式來實施并且在任何合適類型的數據結構內被組織。操作數據可以收集為單個數據集,或可以分布在包括在不同存儲設備上的不同位置上,并且可以至少部分地存在為系統或網絡上的電子信號。
[0023]貫穿說明書對“選擇實施例”、“ 一個實施例”或“實施例”的引用表示本發明至少一個實施例中包括結合實施例描述的特定特征、結構或特性。因此,貫穿該說明書在各個地方的短語“在選擇實施例中”、“在一個實施例中”或“在實施例中”出現不一定指代相同的實施例。
[0024]此外,所描述的特征、結構或特征可以在一個或多個實施例中以任何合適的方式組合。在以下描述中,提供大量具體細節,例如放置管理器、無效管理器、故障管理器、恢復管理器、傳送管理器、引導器等的示例,以提供本發明實施例的透徹理解。然而,本領域技術人員應理解,可以在沒有一個或多個具體細節的情況下或以其它方法、組件、材料等實踐本發明。在其它實例中,并未詳細示出或描述公知結構、材料或操作,以免模糊本發明的各方面。
[0025]將通過參照附圖來最佳地理解本發明的所示實施例,其中相同部分始終由相同標號表示。以下描述僅意圖通過示例的方式,并且僅示出與在此所要求的本發明一致的設備、系統和處理的特定的所選實施例。
[0026]集群存儲系統的文件系統緩存與穩定分布式存儲器層進行集成。這種集成使得能夠高效確認同步寫入事務,其包括要求在響應于客戶機請求之前將所更新的數據物理地存儲在穩定存儲器(例如盤、SSD)上的任何事務。在一個實施例中,同步寫入事務包括提交事務。具體地說,所述集成使得能夠維持文件系統緩存中的提交數據并且延遲將提交數據刷新到盤子系統(disk subsystem)。同時,所述集成確保數據不會由于簇節點故障或功率故障而丟失。相應地,減小了同步寫入延時。
[0027]圖1是描述對文件系統的同步寫入事務的到達的流程圖(100)。如所示那樣,文件系統中的節點之一接收事務(102)。使用現有緩存策略在接收方節點的頁面緩存中放置與事務關聯的數據(104)。頁面緩存是分區為多個頁面的存儲器中的緩沖器,其表示存儲器中的文件系統塊。頁面緩存層是文件系統中的軟件機制,其允許文件系統塊反映在存儲器子系統中,從而可以滿足對這些頁面的存取,而無需首先必須存取物理存儲器。然后將接收到的數據復制到文件系統中的至少一個次級節點(106)。在一個實施例中,次級節點是并非接收方節點的文件系統中的任何節點。接收副本的次級節點的數量基于系統的可靠性和可用性特征。對于接收到的每個副本,將所復制的數據放置在關聯次級節點的頁面緩存中
(108),并且次級節點將確認通信發送到接收方節點(110)。在一個實施例中,副本數據在持久DRAM (例如,閃速背式RAM (flash backed RAM))中。一旦接收到用于每一個副本的所有確認通信,接收方節點就將主要確認發送到事務發源的客戶機(112)。相應地,事務數據在文件系統的緩存層內被復制,并且對于事務發源的客戶機被確認,而不將數據刷新到盤子系統。
[0028]當接收異步寫入事務時,對于同步寫入事務,據圖1中所展示的情況,在文件系統的行為方面不存在改變。當文件系統接收到提交操作時,將臟頁面復制到文件系統中的一個或多個節點。在從已經復制數據的節點中的每一個確認復制之后,將提交確認回到發起提交操作的客戶機。相應地,與提交操作關聯的數據在一個或多個副本節點的緩存層中被復制并且對于發起客戶機被確認,而不將數據刷新到盤子系統。
[0029]如圖1所示,在文件系統的緩存層中維持提交數據,并且延遲將數據刷新到盤或盤子系統。同時,緩存層(例如電池背式DRAM(battery backed DRAM)、閃速背式DRAM或閃速器件)的持久特征確保提交數據不會因數據中心功率故障而丟失,副本確保提交數據不會因簇節點故障而丟失。
[0030]文件系統包括與盤子系統或數據中心進行通信的兩個或更多個節點。如圖1所示,對于從同步寫入事務接收到的數據,在至少一個副本節點上維持副本。在數據的原版拷貝與副本之間進行區分。具體地說,原版拷貝保存關于數據的獨占簇寬寫入鎖定,而副本節點保存關于數據的共享簇寬寫入鎖定。故此,在關聯的緩存層中通過具有數據的節點所維持的鎖定的特征來區分拷貝。在一個實施例中,原版拷貝用于在緩存層中選擇字節范圍。例如,選擇節點可以是緩存層中用于第一字節范圍的原版拷貝和緩存層中用于第二字節的副本拷貝。相應地,每個節點的緩存層可以包括原版和副本拷貝二者,其中,每個拷貝由關聯的字節范圍區分,并且原版拷貝具有原版字節范圍上的獨占簇寬寫入鎖定,而副本拷貝具有副本字節范圍上的共享簇寬寫入鎖定。
[0031]處理讀取事務的到達與在集群文件系統中傳統地完成的相同。響應于對文件系統的讀取事務,如果數據在接收方節點的本地頁面緩存中,則從本地頁面緩存讀取所請求的字節范圍。否則,如果所請求的字節范圍在任何遠程節點的頁面緩存中,則將所請求的字節范圍的原版拷貝刷新到盤子系統,將數據從盤子系統讀取到接收方節點的頁面緩存,并且從本地頁面緩存服務于讀取。
[0032]文件系統中的一個或多個節點可能經歷故障,包括原版節點和副本節點。圖2是描述當簇中的一個或多個節點已經歷經故障時防止數據的丟失的流程圖(200)。響應于檢測到簇節點故障(202),簇中的節點之一(例如接管節點)獲取故障節點所保存的丟失字節范圍(204)。然后確定故障節點是否具有緩存層中丟失字節范圍內的原版字節范圍(206)。如果存在原版字節范圍,則接管節點獲取用于其已經獲取的原版字節范圍的獨占寫入鎖定(208)。相應地,響應于節點故障,接管原版字節范圍的任何節點獲取用于原版字節范圍的關聯獨占與入鎖定。[0033]在對在步驟(206)的確定的否定響應或在步驟(208)獲取獨占寫入鎖定之后,確定故障節點是否具有指定為副本范圍數據的緩存層中的任何字節范圍(210)。在對步驟(210)的確定的否定響應斷定解決關于故障節點的緩存層的任何問題(212)。然而,在對步驟(210)的確定的肯定響應后,接管節點向簇中的每個原版節點通知節點故障,對此,故障節點關于副本故障而保存其副本(214)。故障節點的字節范圍可以具有與簇中不同原版節點關聯的多個子范圍。例如,故障節點可以具有作為用于簇中一個原版節點的副本的第一字節范圍以及作為用于簇中第二原版節點的副本的第二字節范圍。對于故障節點中的每個副本字節范圍,關聯的原版節點接收屬于副本數據的節點故障的通知(216),并且關聯的原版節點請求簇中的新副本節點(218)。
[0034]一旦已經指定新副本節點,原版節點就可以從兩個可選擇動作中選取一個。第一可選擇動作針對原版節點,以將原版字節范圍寫入到新副本節點,并且針對副本節點,以獲取用于副本字節范圍的共享寫入鎖定(220)。第二可選擇動作針對原版節點,以將字節范圍的原版拷貝刷新到盤存儲子系統并且使得簇中副本節點上的字節范圍的每個副本無效(222)。在(220)或(222)的動作之后,用于主體字節范圍的原版節點將確認發送到接管節點(224),并且確定接管節點是否已經從用于故障節點中的比特范圍的每個原版節點接收到確認(226 )。對在步驟(226 )的確定的肯定響應斷定節點故障的矯正(212),對在步驟(226)的確定的否定響應后,等待所定義的時間間隔(228)并且返回到步驟(226)。相應地,用于故障節點中的副本字節范圍的原版節點設定兩個動作之一,以創建新副本節點或將主體字節范圍中的數據刷新到存儲子系統。
[0035]如圖2所示,原版節點可以將字節范圍的原版拷貝刷新到盤存儲子系統。圖3是描述該處理的細節的流程圖(300)。將字節范圍寫入到存儲子系統(302),此后,原版節點將無效消息發送到簇中的副本節點(304)。接收到無效消息(306)的每個副本節點使得其緩存層中的副本字節范圍無效(308),釋放用于副本字節范圍的對應共享寫入鎖定(310),并且將確認發送到原版節點(312)。一旦原版節點處于從用于字節范圍的每個副本節點的確認的接收中(314),原版節點就釋放用于字節范圍的對應獨占寫入鎖定(316)。
[0036]文件系統中的節點可能出故障。故障的原因并不重要。相反,重要的是在緩存層中維持數據的方式。故障的一種形式是當簇經歷功率故障時。圖4是描述當簇從功率故障返回時防止提交數據的丟失的處理的流程圖(400)。如所示那樣,以從功率故障返回的簇開始處理(402)。簇中的每個節點檢查其持久緩存層(例如電池背式DRAM或閃速背式DRAM)中的每個字節范圍的元數據(404)。然后確定字節范圍是否包含原版拷貝(406)。對在步驟(406)的確定的否定響應后,節點獲取用于字節范圍的共享寫入鎖定(408)。在一個實施例中,鎖定管理器將共享寫入鎖定分配給獲取節點。反之,對在步驟(406)的確定的肯定響應后,節點獲取用于字節范圍的獨占寫入鎖定(410)。在一個實施例中,鎖定管理器將獨占鎖定分配給獲取節點。在步驟(408)或(410)的鎖定獲取之后,確定是否成功地獲取鎖定(412)。在步驟(412)對確定的否定響應后,使得緩存層中的字節范圍無效(414)。在步驟(414)或對在步驟(412)的確定的肯定響應之后,確定是否所有簇節點驗證了緩存層中它們的字節范圍(416)。對在步驟(416)的確定的否定響應后,內部暫停(418)并且返回到步驟(416 )。一旦所有簇節點已經驗證緩存層中它們的字節范圍,如對在步驟(416 )的確定的肯定響應所示的那樣,簇就被看作已經從功率故障返回。[0037]可以在簇中的節點之間傳送鎖定。圖5是描述用于傳送鎖定的處理的流程圖(500),其也可以傳送原版拷貝與副本之間的指定。響應于文件系統中的節點請求獨占寫入鎖定(502),確定獨占寫入鎖定是否對于作為請求的主體的字節范圍可用(504)。對在步驟(504)的確定的否定響應后,將獨占寫入鎖定擴展到請求節點(506)。然而,對在步驟(504)的確定的肯定響應后,確定請求節點是否保存與鎖定請求關聯的副本字節范圍(508)。對在步驟(508)的確定的肯定響應后,改變字節范圍的指定(510)以及將獨占寫入鎖定傳送到請求節點(512)。反之,對在步驟(508)的確定的否定響應后,節點上的字節范圍被指定為具有獨占寫入鎖定的新原版拷貝(514),之后從緩存層移除先前原版拷貝。相應地,可以連同底層字節范圍的指定一起在文件系統內傳送寫入鎖定。
[0038]存在用于管理存儲器中副本空間的若干選項。一個選項是保留用于副本數據的每個節點上的分離緩存空間,并且原版副本可以執行用于每個副本的空間分配和管理。另一選項是不保留用于副本的分離緩存空間,其中,所復制的寫入被處理為任何其它寫入事務,并且可能產生副本節點上的頁面退出。副本也可以被退出,導致原版副本被刷新到盤。
[0039]系統跟蹤提交但未刷新的數據及其副本。如果保存原版拷貝的節點出故障,則從現有副本選取新的原版副本,并且創建新的副本。如果節點在提交但未刷新的數據的任何拷貝的情況下出故障,則將用于替代故障節點副本的又一副本放置在另一簇節點上。當崩潰的節點返回時,由于已經選取新副本,因此其緩存層得以恢復,并且所返回的節點的緩存內容被丟棄。最后,在簇故障的情況下,當返回功率時,以緩存層中的所有提交數據來恢復每個節點上的緩存的內容,那么可以使得非提交數據無效。
[0040]所屬【技術領域】的技術人員知道,本發明的各個方面可以實現為系統、方法或計算機程序產品。因此,本發明的各個方面可以具體實現為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統稱為“電路”、“模塊”或“系統”。此外,在一些實施例中,本發明的各個方面還可以實現為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0041]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0042]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者傳輸用于由指令執行系統、裝置或者器件使用或者與其結合使用的程序。
[0043]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0044]可以以一種或多種程序設計語言的任意組合來編寫用于執行本發明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。
[0045]下面將參照根據本發明實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數據處理裝置的處理器執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。
[0046]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產生出包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的指令的制造品(article of manufacture)0
[0047]計算機程序指令也可以加載到計算機、其它可編程數據處理裝置或其它設備,以產生要在計算機、其它可編程裝置或其它設備上執行的一系列操作步驟,以產生計算機實現的處理,從而在計算機或其它可編程裝置上執行的指令提供用于實現流程圖和/或框圖塊或各塊中指定的功能/動作的處理。
[0048]如圖1-5所示,提供一種用于改進容錯文件系統中的寫入性能的方法。更具體地說,緩存層被配置有用于支持寫入事務和提交操作的持久RAM。緩存層內的原版和副本字節范圍具有不同的鎖定,原版字節范圍具有獨占鎖定,并且副本字節范圍具有共享鎖定。僅在所有副本節點已經確認副本節點的副本字節范圍中的關聯數據的接收和存儲之后,將單個確認通信發送到發起寫入事務或提交操作的客戶機。圖6是示出計算機系統中嵌入以支持文件系統中的寫入事務或提交操作的工具的框圖(600)。文件系統(610)示出具有多個節點(620)和(640)。雖然僅示出兩個節點,但本發明不應受限于文件系統中的該節點數量。相應地,可以采用兩個或更多個節點來建構文件系統。
[0049]相似地配置節點中的每一個。更具體地說,節點O (620)具有穿過總線(626)與存儲器(624 )進行通信并且與數據存儲器(628 )進行通信的處理單元(622 ),節點I (640 )配備有穿過總線(646)與存儲器(644)進行通信并且與第二本地存儲器(648)進行通信的處理單元(642 )。節點(620 )和(640 )是與遠程數據存儲器(650 )進行通信的文件系統(610 )的一部分。節點(620)和(640)中的每一個示出為駐留在文件系統(610)中,節點(620)和(640)中的每一個包括分別形成簇中的文件系統緩存層(610)的文件系統緩存(630)和(632)。在一個實施例中,文件系統緩存(630)和(632)是持久動態隨機存取存儲器(“P-DRAM”)、閃速背式DRAM或非易失性RAM (“NVRAM”)的形式。相應地,文件系統緩存(630)和(632)優選地是RAM的持久形式,從而在故障的情況下保留數據。
[0050]在節點(620)和(640)中的至少一個內還提供功能單元,以支持文件系統中的寫入性能的管理。為了便于描述,示出節點O (620)具有與處理單元(622)進行通信的功能單元(640),并且具有嵌入其中的、用于在容錯文件系統中支持寫入事務或提交操作的工具。所述工具包括放置管理器(642)、引導器(644)、無效管理器(646)、故障管理器(648)、恢復管理器(660)以及傳送管理器(662),但不限于此。相應地,提供管理器或引導器的形式的工具,以支持寫入事務的接收以及文件系統內的關聯數據的容錯保留。
[0051]放置管理器(642)運作為響應于同步寫入事務的形式的事務。更具體地說,放置管理器(642)將與接收到的事務或操作關聯的數據放置在文件系統的緩存層中,并且在文件系統緩存層內復制與接收到的事務或操作關聯的數據。在一個實施例中,文件系統中的每個節點配備有用于接收到的數據的放置管理器(642)。引導器(644)被提供與放置管理器(642)進行通信,并且運作為在接收到的數據的原版拷貝和副本之間進行區分。引導器(644)基于分類而將不同的緩存技術應用于與事務關聯的數據。相應地,放置管理器(642)與引導器(644)結合管理與文件系統中的節點中的任一所接收到的寫入事務或提交操作關聯的數據的接收和放置。
[0052]無效管理器(646)、故障管理器(648)、恢復管理器(660)和傳送管理器(662)均結合引導器(644)而被提供,以使能數據的容錯復制的進一步功能。如圖1-5的流程圖中詳細描述的那樣,在文件系統的緩存層中復制接收到的數據,其中,一個拷貝指定為原版拷貝,并且每個副本指定為副本或副本拷貝。原版拷貝被標識并且與獨占簇寬寫入鎖定關聯,而副本被標識并且與共享簇寬寫入鎖定關聯。無效管理器(646)運作為響應于將文件系統中的原版拷貝刷新到持久存儲器而使得遠程節點的每個副本無效。由于只要原版拷貝處于緩存層中副本就運作為支持原版拷貝,因此一旦從緩存層移除原版拷貝,就可以從緩存層移除遠程節點上的每個副本。相應地,無效管理器(646)運作為通過使得原版拷貝已經刷新到持久存儲器的每個副本無效來維持緩存層的完整性。
[0053]故障管理器(648)被提供與引導器(644)進行通信。故障管理器(648)運作為支持文件系統的容錯特性。更具體地說,故障管理器(648)運作為在節點的緩存層經歷保存指定為原版拷貝的數據的故障的情況下響應于節點故障。在一個實施例中,緩存層可以包括具有指定為原版拷貝的字節范圍的一個子集以及指定為副本的字節范圍的另一子集的擴展字節范圍。基于指定原版拷貝的、經歷故障的節點上的字節范圍的至少一個子集的確定,故障管理器(668)選取文件系統中的其它節點以獲取數據的原版拷貝。所選取的節點獲取用于數據的新原版拷貝的獨占簇寬寫入鎖定。在一個實施例中,故障管理器(648)采用指定為具有緩存層中的原版拷貝的副本的簇中的節點。在另一實施例中,故障管理器(648)促進將數據復制到簇中的新次級節點,并且新次級節點獲取獨占簇寬寫入鎖定。相應地,在保存原版拷貝的節點的故障的情況下,故障管理器(648)促進新原版拷貝的指定。
[0054]恢復管理器(660)還被提供與引導器(644)進行通信,并且運作為恢復所恢復的故障節點上的內容,并且在另一實施例中運作為響應于從功率故障恢復文件系統而恢復數據。關于所恢復的故障節點,恢復管理器(660)運作為通過從生存節點的非易失性存儲器讀取數據來恢復所恢復的故障節點上的內容。在此情況下,簇并不經歷簇寬故障,故此,簇中的至少一個節點被看作已經生存。生存節點可以是簇的原版節點或簇中的可用節點。由于緩存層中的字節范圍與獨占鎖定或共享鎖定關聯,因此字節范圍的特征指示其中的數據是否為副本的原版拷貝。關于從功率故障恢復文件系統,恢復管理器(660)運作為基于每個字節范圍內的特征來標識原版和副本拷貝。更具體地說,恢復管理器(660)通過重新獲取包括用于原版拷貝的獨占簇寬寫入鎖定以及用于副本拷貝的共享簇寬寫入鎖定的適當鎖定,來驗證緩存層內的原版拷貝和副本拷貝。相應地,恢復管理器(660)被配置為促進從簇功率故障恢復簇中的單獨節點或簇。
[0055]傳送管理器(662)被提供與引導器(644)進行通信。傳送管理器(662)運作為在文件系統內傳送原版拷貝的指定。如指示的那樣,原版拷貝配備有用于關聯字節范圍的簇寬獨占寫入鎖定。傳送管理器(662)維持與原版拷貝的獨占寫入鎖定。更具體地說,如果原版拷貝傳送到簇中的請求器節點,則傳送管理器(662)撤消與原版拷貝的來自初始節點的獨占寫入鎖定,并且將獨占寫入鎖定傳送到請求器節點。相應地,可以在簇內傳送原版拷貝,并且傳送管理器(662)通過使得傳送伴隨穿過字節范圍的獨占寫入鎖定來促進原版拷貝的傳送。
[0056]放置管理器(642)、引導器(644)、無效管理器(646)、故障管理器(648)、恢復管理器(660)和傳送管理器(662)被配置為文件系統中的容錯。如上所述,放置管理器(642)、引導器(644)、無效管理器(646)、故障管理器(648)、恢復管理器(660)和傳送管理器(662)示出駐留在節點(620)的存儲器(624)中。在一個實施例中,放置管理器(642)、引導器(644)、無效管理器(646 )、故障管理器(648 )、恢復管理器(660 )和傳送管理器(662 )可以駐留在駐留于文件系統中的一個或多個服務器節點的本地的存儲器中。相似地,在一個實施例中,管理器和引導器(642)- (662)可以駐留為存儲器外部的硬件工具,并且可以實現為硬件和軟件的組合,或可以本地駐留到文件系統中的節點中的任一的存儲器。相似地,在一個實施例中,管理器和引導器(642)- (662)可以組合為合并分離條目的功能的單個功能條目。如在此所示的那樣,管理器中的每一個示出為對文件系統中的一個節點來說是本地的。然而,在一個實施例中,它們可以聯合地或單獨地穿過文件系統中的兩個或更多個節點而分布,并且運作為用于解決并且維持容錯的單元。相應地,管理器和引導器可以實現為軟件工具、硬件工具或軟件和硬件工具的組合。
[0057]現在參照圖7的框圖(700),現在關于實現本發明實施例來描述附加細節。計算機系統包括一個或多個處理器,例如處理器(702)。處理器(702)連接到通信基礎架構(704)(例如通信總線、交叉條或網絡)。
[0058]計算機系統可以包括顯示接口( 706 ),其從通信基礎架構(704 )(或從幀緩沖器(未示出))轉發圖形、文本和其它數據,以用于在顯示單元(708)上顯示。計算機系統還包括主級存儲器(710),優選地隨機存取存儲器(RAM),并且可以還包括次級存儲器(712)。次級存儲器(712)可以包括例如硬盤驅動器(714)(或替代的持久存儲器件)和/或表示例如軟盤驅動器、磁帶驅動器或光盤驅動器的可移除存儲驅動器(716)。可移除存儲驅動器(716)以本領域技術人員公知的方式來讀取自和/或寫入到可移除存儲單元(718)。可移除存儲單元(718)表示例如軟盤、壓縮盤、磁帶或光盤等,其由可移除存儲驅動器(716)讀取并且寫入。應理解,可移除存儲單元(718)包括具有其中存儲計算機軟件和/或數據的計算機可讀介質。
[0059]在替選實施例中,次級存儲器(712)可以包括用于允許計算機程序或其它指令加載到計算機系統中的其它相似部件。這些部件可以包括例如可移除存儲單元(720)和接口(722)。這些部件的示例可以包括(例如在視頻游戲設備中發現的)程序分組或分組接口、可移除存儲器芯片(例如EPROM或PR0M)和關聯套接以及允許將軟件和數據從可移除存儲單元(720)傳送到計算機系統的其它可移除存儲單元(720)和接口( 722)。
[0060]計算機系統還可以包括通信接口(724)。通信接口(724)允許在計算機系統與外部設備之間傳送軟件和數據。通信接口(724)的示例可以包括調制解調器、網絡接口(例如以太網卡)、通信端口或PCMCIA插槽或卡等。經由通信接口(724)所傳送的軟件和數據是信號的形式,其可以是例如能夠由通信接口(724)接收的電、電磁、光或其它信號。經由通信路徑(即信道)(726)將這些信號提供給通信接口(724)。該通信路徑(726)承載信號并且可以使用有線或纜線、光纖、電話線路、蜂窩電話鏈路、射頻(RF)鏈路和/或其它通信信道來實現。
[0061 ] 在本發明中,術語“計算機程序介質”、“計算機可用介質”和“計算機可讀介質”通常用于指代例如主級存儲器(710)和次級存儲器(712)、可移除存儲驅動器(716)以及安裝在硬盤驅動器或替代的持久存儲設備上的硬盤(714)的介質。
[0062]計算機程序(又稱為計算機控制邏輯)存儲在主級存儲器(710)和/或次級存儲器(712)中。也可以經由通信接口(724)來接收計算機程序。這些計算機程序當運行時使得計算機系統能夠執行在此所討論的本發明的特征。具體地說,計算機程序當運行時使得處理器(702)能夠執行計算機系統的特征。相應地,這些計算機程序表示計算機系統的控制器。
[0063]附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
[0064]在此所使用的術語僅用于描述特定實施例的目的,而并非意圖限制本發明。如在此使用的那樣,單數形式“一個”、“某個”以及“這個”意圖同樣包括復數形式,除非上下文另外清楚指明。還應理解,術語“包括”和/或“包含”當在本發明中使用時用于指定所聲明的特征、整體、步驟、操作、元件和/或組件的存在性,但不排除一個或多個其它特征、整體、步驟、操作、元件、組件或其群組的存在性或添加性。
[0065]以下權利要求中的所有手段或步驟加功能的對應結構、材料、動作和等同物意圖包括用于與具體要求的其它所要求的要素組合來執行功能的任何結構、材料或動作。已經為了說明和描述的目的陳述了本發明的描述,但并非意圖將本發明囊括或限制為所公開的形式。在不脫離本發明的范圍和金屬的情況下,很多修改和變化對于本領域技術人員將是明顯的。選取并且描述實施例以最佳地解釋本發明的原理和實際應用,并且使得本領域技術人員能夠針對具有適合于所預期的實際使用的各種修改的各種實施例理解本發明。相應地,增強云計算模型支持關于事務處理的靈活性,包括優化存儲系統并且響應于所優化的存儲系統來處理事務,但不限于此。
[0066]替代實施例
[0067]應理解,雖然為了說明的目的而在此已經描述了本發明特定實施例,但在不脫離本發明精神和范圍的情況下,可以進行各種修改。相應地,本發明的范圍僅由所附權利要求及其等同物限定。
【權利要求】
1.一種方法,包括: 在文件系統中將穩定存儲器層與頁面緩存層進行集成,以在簇中的各節點的分布式非易失性存儲器中臨時保存提交數據; 響應于在所述文件系統中接收到同步寫入事務,在所述層中放置與接收到的寫入事務關聯的數據,并且在所述簇中一個或多個遠程節點的層內復制接收到的數據; 在接收到的數據的原版拷貝與接收到的數據的副本之間進行區分,包括將現有緩存策略應用于接收到的數據的原版拷貝;以及 響應于將所述原版拷貝刷新到持久存儲器,使得所述一個或多個遠程節點上的每個副本無效。
2.如權利要求1所述的方法,還包括:所述原版拷貝保持獨占簇寬寫入鎖定,并且所述副本保持共孚族寬與入鎖定。
3.如權利要求2所述的方法,還包括:響應于保存所述原版拷貝的節點的故障而維持容錯,包括:選取遠程節點以通過獲取用于所述數據的獨占簇寬寫入鎖定來獲取所述原版拷貝。
4.如權利要求3所述的方法,還包括:響應于故障節點的恢復而恢復所恢復的故障節點上的內容,包括:從生存節點的非易失性存儲器讀取數據,其中,所述生存節點選自包括可用節點和所述原版節點的組。
5.如權利要求2所述的方法,還包括:將所述原版拷貝的指定傳送到請求器節點,包括:從所述原版拷貝撤消所述獨占寫入鎖定,并且將所述獨占寫入鎖定傳送到所述請求器節點。
6.如權利要求1所述的方法,還包括:響應于從功率故障恢復所述文件系統,從每個節點上的非易失性存儲器內容恢復數據,并且根據數據字節范圍的特性來標識原版和副本拷貝,通過重新獲取簇寬寫入鎖定來驗證原版和副本拷貝。
7.一種用于在文件系統中將穩定層與頁面緩存層進行集成的裝置,包括: 一模塊,適配為在簇中的各節點的分布式非易失性存儲器中臨時保存提交數據; 一模塊,適配為響應于在所述文件系統中接收到同步寫入事務,在所述層中放置與接收到的寫入事務關聯的數據,并且在所述簇中一個或多個遠程節點的層內復制接收到的數據; 一模塊,適配為在接收到的數據的原版拷貝與接收到的數據的副本之間進行區分,包括將現有緩存策略應用于接收到的數據的原版拷貝; 一模塊,適配為響應于將所述原版拷貝刷新到持久存儲器來使得所述一個或多個遠程節點上的每個副本無效。
8.如權利要求7所述的裝置,還包括:一模塊,適配為所述原版拷貝保存獨占簇寬寫入鎖定和所述副本保存共享簇寬寫入鎖定。
9.如權利要求8所述的裝置,還包括:一模塊,適配為響應于保存所述原版拷貝的節點的故障而維持容錯,包括:選取遠程節點以通過獲取用于所述數據的獨占簇寬寫入鎖定來獲取所述原版拷貝。
10.如權利要求9所述的裝置,還包括:一模塊,適配為響應于故障節點的恢復而恢復所恢復的故障節點上的內容,包括:從生存節點的非易失性存儲器讀取數據,其中,所述生存節點選自包括可用節點和所述原版節點的組。
11.如權利要求8所述的裝置,還包括:一模塊,適配為將所述原版拷貝的指定傳送到請求器節點,包括:從所述原版拷貝撤消所述獨占寫入鎖定,并且將所述獨占寫入鎖定傳送到所述請求器節點。
12.如權利要求7所述的裝置,還包括:響應于從功率故障恢復所述簇,一模塊,適配為從每個節點上的非易失性存儲器內容恢復數據,并且根據數據字節范圍的特性來標識原版和副本拷貝,通過重新獲取簇寬寫入鎖定來驗證原版和副本拷貝。
13.—種系統,包括: 頁面緩存層,在文件系統中與穩定存儲器層集成,以在簇中的各節點的分布式非易失性存儲器中臨時保存提交數據,每個節點具有與存儲器進行通信的處理單元; 功能單元,與所述處理單元中的至少一個進行通信,所述功能單元包括用于支持在容錯文件系統中支持寫入事務的工具,所述工具包括: 放置管理器,用于在所述層中放置與接收到的寫入事務關聯的數據,并且響應于接收同步寫入事務而在一個或多個節點的層內復制接收到的數據; 引導器,與所述放置管理器進行通信,所述引導器用于在接收到的數據的原版拷貝和副本之間進行區分,包括:所述引導器將現有緩存策略應用于所述原版拷貝;以及 無效管理器,與所述引導器進行通信,所述無效管理器用于響應于將所述原版拷貝刷新到持久存儲器而使得每個副本無效。
14.如權利要求13所述的系統,還包括:所述原版拷貝保持獨占簇寬寫入鎖定,并且所述副本保存共孚族寬與入鎖定。
15.如權利要求14所述的系統,還包括:故障管理器,與所述引導器進行通信,所述故障管理器響應于保存所述原版拷貝的節點的故障而維持容錯,包括:所述故障管理器選取所述簇中的遠程節點,以通過獲取用于所述數據的獨占簇寬寫入鎖定來獲取所述原版拷貝。
16.如權利要求15所述的系統,還包括:恢復管理器,與所述引導器進行通信,所述恢復管理器響應于故障節點的恢復而恢復所恢復的故障節點上的內容,包括:從生存節點的非易失性存儲器讀取數據,其中,所述生存節點選自包括可用節點和所述原版節點的組。
17.如權利要求14所述的系統,還包括:傳送管理器,與所述引導器進行通信,所述傳送管理器將所述原版拷貝的指定傳送到請求器節點,包括:從所述原版拷貝撤消所述獨占寫入鎖定,并且將所述獨占寫入鎖定傳送到所述請求器節點。
18.如權利要求14所述的系統,還包括:恢復管理器,與所述引導器進行通信,所述恢復管理器響應于從功率故障恢復所述簇而從所述簇中每個節點上的非易失性存儲器內容恢復數據,并且根據數據字節范圍的特性來標識原版和副本拷貝,并且通過重新獲取簇寬寫入鎖定來驗證原版和副本拷貝。
19.一種方法,包括: 在文件系統中將穩定存儲器層與頁面緩存層進行集成,以在簇中的各節點的非易失性存儲器中保存提交到穩定存儲器的數據; 在所述文件系統中接收同步寫入事務,包括:在所述文件系統的層中放置與所述事務關聯的數據,并且在所述層內復制接收到的數據;維持接收到的數據的原版拷貝和副本,所述原版拷貝具有與所述副本的區別特征;以及 將現有緩存策略應用于接收到的數據的原版拷貝;以及 在將所述原版拷貝刷新到持久存儲器之后,使得所述副本無效。
20.如權利要求19所述的方法,還包括:所述原版拷貝保持獨占簇寬寫入鎖定,并且所述副本保存共孚族寬與入鎖定。
21.如權利要求19所述的方法,還包括:從每個節點上的非易失性存儲器內容恢復數據,根據數據字節范圍的特性來標識原版和副本拷貝,并且響應于從功率故障的恢復而通過重新獲取簇寬寫入鎖定 來驗證原版和副本拷貝。
【文檔編號】G06F12/14GK103885895SQ201310618574
【公開日】2014年6月25日 申請日期:2013年11月28日 優先權日:2012年12月19日
【發明者】W.A.貝爾盧米尼, K.古普塔, D.希爾德布蘭德, A.S.波維茲納, H.普查, R.特沃里 申請人:國際商業機器公司