TWI395104B - 在分散式儲存系統中資料之基元多重修改 - Google Patents
在分散式儲存系統中資料之基元多重修改 Download PDFInfo
- Publication number
- TWI395104B TWI395104B TW098134955A TW98134955A TWI395104B TW I395104 B TWI395104 B TW I395104B TW 098134955 A TW098134955 A TW 098134955A TW 98134955 A TW98134955 A TW 98134955A TW I395104 B TWI395104 B TW I395104B
- Authority
- TW
- Taiwan
- Prior art keywords
- stream
- streams
- modifications
- data
- metadata
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本發明係關於分散式儲存系統內資料的基元多重修改。
分散式系統,包含伺服器基地、網路服務以及分散式網路儲存系統已經越來越常見,其提供鉅量的計算與儲存資源。分散式儲存系統運用橫跨遍及潛在廣域網路的多個節點之儲存空間,用於存取分散式儲存系統內節點上所儲存資料的資料存取例式必須管理需要同時存取的多個用戶端,不過,為了維持資料一致性外觀,修改存取必須限制成一次只能有一部主機可進行。此外,執行多重修改的用戶端作業必須保持遍及多重修改的應用當中資料之一致性。
本發明的具體實施例由底下的申請專利範圍所定義,而非本發明內容。基於上述理由,此處提供本發明許多態樣的詳細概觀,提供本發明所揭示事項的概觀,並且對在底下實施方式段落會更進一步描述的觀念選擇做介紹。本發明內容並無意於識別所主張申請標的之關鍵特徵或基本特徵,也無意於用來單獨幫助決定所主張申請之標的之範疇。
本發明的具體實施例係關於將對於一或多個串流執行多重修改當成單一基元單元,其被稱為一個基元多重修改。在某些具體實施例內,若有多重修改的其中之一不成功(例如若未符合先決條件),則表示該修改套用成功的情形被逆轉,在基元多重修改開始之前將串流復原至其原始狀態。
此處特地以特徵描述本發明的標的以符合法定需求。不過,此敘述本身並無意於限制本專利的範疇。而是,發明者考慮到所主張申請標的也可用其他方式具體實施、包含不同步驟或結合類似於本文件內所描述之步驟的步驟組合、與其他目前或未來技術結合。再者,雖然此處可能會使用術語「步驟」以及/或「方塊」等暗示運用不同的方法元件,不過除非有明確描述個別步驟的順序,否則不應該將這些術語解譯為暗示此處揭示的許多步驟之間的任何特定順序。
本發明的具體實施例針對以分散方式儲存在儲存節點網路之間的資料進行多重修改。在由分散在大型網路內多個節點所構成的網路中,可能同時有複數個用戶端作業(client sessions)存取每一資料單元。更進一步,要維持通過網路的不同資料片段之一致性。為了讓通過存取資料的所有用戶端作業之資料維持一致的外觀,資料的修改就必須經過協調。若資料修改上並未協調,則可能發生兩個用戶端以不一致的方式修改兩段資料,導致無法預期的結果。更進一步,在沒有多重相依修改的基元應用當中,可能發生修改用戶端作業失敗,造成資料不一致狀態,或讓第二用戶端作業讀取到代表中間不一致狀態的資料。
若要避免這種不一致,需要進行基本操作來協調資料的修改。尤其是,當個別修改的獨立應用建立一暫時不一致狀態時,要有能力套用多重相依修改至一或多個資料片段做為基元異動,藉此避免讓分散式網路內其他用戶端作業資料看起來不一致。更進一步,若一或多個多重修改無法成功套用時,也要可取消整個多重修改集合,藉此避免因為部分成功異動所導致資料看起來不一致。此外,吾人想要指定在成功套用一特定修改之前,必須符合的一或多個預期之先決條件,藉此允許用戶端作業以「最佳化」方式協調獨立、潛在衝突異動的應用,而不需要使用分散式鎖定。
依照範例,用戶端作業X和用戶端作業Y都執行一種演算法,需要X、Y讀取資料A的值,並且根據之前的資料A的值以及由個別用戶端作業所決定的其他外部資料(用戶端作業X的資料Cx
以及用戶端作業Y的資料Cy
)計算資料A和資料B的新值。然後可將A和B的新值寫入成為基元運算。不過,因為讀取資料A的值與寫入資料A和資料B的新值之間未維持鎖定,所以用戶端作業X與用戶端作業Y可能同時讀取資料A,各自計算資料A和資料B的新值。先是用戶端作業X然後是用戶端作業Y將嘗試使用基元修改異動來寫入資料A和資料B的各自的新值,而兩者都將順利完成。不過,由用戶端作業X所套用的修改效果會遭到由用戶端作業Y所套用的修改所覆蓋,導致相對於外部資料的潛在性不一致。為了避免發生此狀況,許多傳統網路式檔案系統要求用戶端作業宣告跨越資料A讀取到資料A和資料B寫入的分散式鎖定,藉此避免直到用戶端作業X已經完成更新資料A和資料B之前,用戶端作業Y讀取資料A的值。不過使用分散式鎖定會引入重大管理負擔,並且導致更脆弱的分散式系統;例如若用戶端作業X無法釋放鎖定,則會無限期停止用戶端作業Y進一步處理。本發明藉由讓用戶端作業X和用戶端作業Y當其嘗試寫入資料A與資料B的新值時,指定必須符合的先決條件,來避免明確的分散式鎖定的需要。在此範例中,用戶端作業X和用戶端作業Y都要求在取代資料A和資料B之前,資料A之值必須從被讀取後就未改變。因為在讀取資料A與寫入資料A和資料B之間並無修改發生,所以用戶端作業Y將成功更新。不過,因為資料A的值在讀取資料A與嘗試更新之間已經變更,所以用戶端作業X將無法成功更新資料。用戶端作業X可自由放棄操作,或再次藉由讀取資料A重新啟動整個程序。在任何情況下,所有資料在內部以及外部狀態下都保持一致。
已經儲存在網路內的特定資料可為許多不同形式,常見形式包含檔案以及類似檔案的群組。根據本發明的某些具體實施例,將資料組織成串流,其中每一串流都為由雜項串流元資料特性(例如串流名稱、存取控制政策、有效期限等)以及參照範圍的排序序列所構成之一資料實體。每一範圍都由附加方塊的連貫排序序列所構成。每一附加區塊都不變,並且由位元組值的連貫排序序列所構成。新範圍參照可附加至串流末端,但是一旦附加之後,就無法從串流當中刪除範圍參照。可讓超過一個串流含有對於相同範圍的參照,或甚至讓單一串流內含有對於相同範圍的多個參照。新附加方塊可附加至範圍,直到範圍封閉,之後範圍變成不可變。一旦範圍已封閉,就無法解封。不管範圍是否封閉,附加區塊可不會修改或從範圍當中移除。因此,串流與範圍的尺寸只會變大。
根據本發明的一個具體實施例,利用將範圍資料儲存在大型獨立、鬆散耦合的範圍伺服器群組內,以及將描述每一串流的元資料儲存在集中式伺服器或小型、緊密耦合的伺服器群組內,將串流組織在一檔案系統內。若要將資料附加至一個範圍,用戶端作業與正確的獨立範圍伺服器互動,因此附加至範圍具備高度可縮放性,但是對於附加至各別範圍的協調沒有幫助。對照之下,所有相關串流的元資料都保留在集中式伺服器,如此可有效協調對於串流元資料的更新。
經由範例,與每一串流相關的元資料應包含像是目前串流名稱、全域唯一識別碼(globally unique identifier,GUID)、存取控制政策、有效期限以及參照至組成串流的範圍之排序清單之資訊。此組織的一項優點為範圍參照可從一個串流複製到另一個,不需要移動網路內任何資料。取而代之,只改變儲存在集中式伺服器上元資料內的參照清單。因為複製操作只影響到串流元資料,因此可有效包含作為基元多重修改的一部分。在本發明的其他具體實施例內,元資料本身可散佈在網路內多重節點之間。熟習此項技術者將了解,本發明可套用於串流以外的資料格式。
根據某些具體實施例,本發明提供來批次處理多重串流先決條件限制以及轉換操作成為操作清單,並且使其作為一個基元多重修改來執行的能力。操作包含:串流元資料先決條件限制、串流建立、串流刪除、串流重新命名、從其他串流當中複製現有範圍參照以及像是有效期限、唯讀旗標、存取控制資訊以及複製政策這些雜項串流特性的設定。此外,本發明的某些具體實施例提供以參照方式將跨串流操作表示成相同多重修改內的其他修改操作的能力。例如:在多重修改當中,可在由多重修改所建立的串流當中套用其他操作。類似地,在多重修改當中,可在由多重修改操作所刪除或重新命名的串流當中套用其他操作。利用將多重修改內記錄的每一個別操作與目標串流識別產生相關,並且利用所執行多重修改內索引的各別紀錄參照在跨串流操作內的來源串流,在多重修改過程中任何時間上都可參照多重修改期間已建立識別或已變更名稱的串流。例如:若在要執行的操作清單內有5筆紀錄,則若第三操作正建立新串流,任何其他操作都可參照當成操作3內串流的該串流。
根據一個具體實施例,本發明提供將非修改先決條件限制表示成多重修改內操作之能力。這些操作本身不會導致串流狀態的任何改變;不過,若不符合先決條件時會導致整個多重修改失敗。這讓多個用戶端不需要使用外部鎖定或其他同步機制而能實施串流狀態的協調操縱。可指定的先決條件範例包含:串流存在、串流名稱、串流識別(透過重新命名保留下來的唯一ID,不過可透過刪除/重新建立來變更)、串流版本編號、串流有效期限以及範圍參照計數。
根據進一步具體實施例,本發明提供有效複製部分串流內容成為新串流當成基元多重修改一部分之能力。串流可依照參照排序序列塑造成分散在儲存節點網路內的連續資料區塊(範圍)。簡單讀取串流內容並以相同資料寫入新串流內,如此就可複製串流,只不過係在新範圍內。不過,不僅是將大量資料從一個範圍複製到另一個會牽涉到多個網路節點的昂貴網路/磁碟密集活動,而且超過一個串流可能參照相同範圍。只要複製範圍就可有效將非常大的串流區段複製到一不同串流內(可能在一不同位置內);此動作無足輕重並且不需要複製實際串流資料內容。更進一步,可由中央元資料伺服器維護經過操縱來執行這種複製的所有狀態。此模型的結論就是,將潛在大部分串流內容從一個串流複製到另一個,可當成基元多重修改的一部分來執行,而不需要長時間保持鎖定。用戶端可將此能力用於許多目的,包含串流串接、垃圾收集、紀錄/日誌截斷、單一實體以及頻疊。此外,可將大量不相關的操作批次處理到一基元多重修改當中,以減少完成特定工作量所需的異動數量。因為元資料修改屬於耐久性異動,所以在認為完成之前必須重複確保持續儲存。耐久性儲存(磁碟)的潛伏/效能確保操作可為異動系統可擴充性/效能當中一主要的限制因素,並且優點在於具備可將許多操作合併成單一承諾的能力。另外,因為伺服器可在套用任何變更之前試驗所有操作,則可進行其他方式無法實施的最佳化。
根據某些具體實施例,本發明促進表示「全或無」語意以及「同時操作」之能力。全或無語意保證多重修改內若有任何操作失敗,則整個多重修改失敗,並且選擇用於修改的串流狀態維持在開始多重修改之前的狀態。這允許用戶端可信賴該狀態的一致性,以及該多重修改的基元數。多重修改系統的同時操作讓在單一基元多重修改當中發生特定修改集合,不過若是操作要嚴格依序執行時就會變的困難或無效率。經由範例,在相同多重修改當中可用一次操作將串流「A」重新命名為「B」,並且在另一次操作當中將串流「B」重新命名為「A」(即是用兩次操作交換命名空間中的兩串流)。這兩次操作若依序執行的話就會失敗,因為第一次操作由於命名空間衝突而失敗。依序執行交換需要三次操作,以及導入暫時串流名稱(即是將「A」重新命名為「C」、將「B」重新命名為「A」、將「C」重新命名為「B」)。若一項操作在其他操作成功之後失敗,則將部分完成的多重修改「解開」(全或無語意)的處理也會複雜化。基元多重修改屬於一種同時套用的無排序操作集合、免除用戶端表示中間一致性狀態之需要,並且讓伺服器將基元多重修改實施最佳化。
根據本發明進一步的具體實施例,本發明提供使用基元多重修改實施簡單用戶端可存取分散式鎖定與分散式租約之能力。串流元資料包含有效期限特性,除非有效期限經過延長,否則此特性會在一指定時間間隔之後,用來自動刪除串流。藉由將有效期限與基元多重修改連用,用戶端集合可利用嘗試建立具有一致名稱的新串流來競爭租約或鎖定,並且可利用延長已經成功建立的串流上之有效期限來延長租約。利用新增自建式租約串流的存在,以及其持續佔有一致的名稱做為多重修改的額外先決條件,租約/鎖定的所有權可有效新增成為任何其他串流元資料基元多重修改的先決條件。若用戶端無法維持租約/鎖定,則租約或鎖定檔案在到期時會被自動刪除,讓其他用戶端主張該租約。因為該租約或鎖定代表一般串流,則可用於串流的工具與機制(例如命名空間組織、存取控制、瀏覽/檢視等)基本上也可用於租約與鎖定。
因此,本發明的具體實施例係針對具體化用於執行一種方法的電腦可執行指令之電腦可讀取儲存媒體,其中該方法對於一或多個串流執行多重修改作為單一基元單元。選取一或多個串流來修改成為選取的串流。而在與該等選取的串流相關的一或多個元資料上獲取一鎖定。與該等選取的串流相關的名稱會自該選取的串流解耦合,然後在該等選取的串流上執行複數個修改,與該等選取的串流相關的名稱會重新與該等選取的串流耦合。之後釋放與該一或多個選取的串流相關的該元資料有關之鎖定。
根據其他具體實施例,本發明係針對具體化用於執行一種方法的電腦可執行指令之電腦可讀取儲存媒體,其中該方法對於一或多個串流執行多重修改作為單一基元單元。選取一或多個串流來修改成為選取的串流。在與該等選取的串流相關的元資料上獲取一鎖定。與每一選取的串流相關的名稱會自該等選取的串流解耦合,然後在該選取的串流上執行第一次修改,判定若執行第二次修改會產生不一致。對於該等選取串流的第一次修改已逆轉,然後與該等選取串流相關的名稱會重新與該等選取的串流耦合。之後釋放與該等選取串流相關的元資料上之該鎖定。
根據更進一步具體實施例,本發明係針對儲存用於執行一種方法的電腦可執行指令之電腦可讀取媒體,其中該方法對於一或多個串流執行多重修改作為單一基元單元。選取一或多個只附加(append-only)的串流來修改成
為選取的串流。在與該等選取串流相關的元資料上獲取一鎖定,在此獲取該鎖定包括使用作為鎖定串流的一預定名稱來修改一串流。與每一選取串流相關的名稱會與其相關的選取串流解耦合,在該選取的串流上套用第一次修改。判定若套用第二次修改是否會產生不一致。若修改會產生不一致,則逆轉對於該選取串流的第一次修改。若第二次修改不會產生不一致,則將第二次修改套用至該等選取串流。然後與該選取串流相關的名稱會重新與該等選取的串流耦合。之後釋放與該等選取串流相關的該元資料有關之鎖定。
前述已說明本發明具體實施例的概觀,底下說明可實施本發明具體實施例的一示例性作業環境,以便提供本發明許多態樣的一般內容。一開始請特別參閱第1圖,典型網路拓撲100由許多互連的網路區段101、102、103、104所組成,其中每一區段都連接至大型網路115。網路區段101具有主機106以及參與資料儲存的兩節點105、107。網路區段102具有參與資料儲存的兩節點108、109。網路區段103具有主機111以及參與資料儲存的兩節點110、112。最後,網路區段104具有參與資料儲存的兩節點113、114。
經由範例,網路上的任何節點都可作為描述網路上所儲存串流的元資料位置,包含每一串流內範圍參照的清單以及保有每一範圍的節點集合。主機111和主機106上的用戶端作業可同時想要對節點112和節點109上所儲存具備範圍實體的串流執行基元多重修改。節點110可作為元資料控制器。在此情況下,主機111和106會同時傳送要求給節點110來變更所要的串流之元資料,並且產生競爭。利用規定適當先決條件限制,發出第一要求讓節點110成功處理的節點將被允許去修改與該串流相關的元資料。第二節點的要求將失敗,例如藉由要求第二節點放棄操作或從一致點重新啟動來處理先決條件失敗情況。此為樂觀並行模型內的所需行為。若第一與第二節點需要協調牽涉到多重各別異動的更複雜活動,則可在其多重修改要求內建立內含先決條件的鎖定與租約,並且操縱專屬的鎖定/租約串流,要求一遺失節點等待直到釋放該鎖定來執行其修改。
此時請參閱第2圖,其中顯示一示例性節點並且一般被指定為計算裝置200。計算裝置200只為合適之計算環境的一個範例,並且不對本發明的使用範疇或功能性建議任何限制。也不可將計算裝置200解譯成具有任何與圖示的任一組件或組件組合有關之相依性或要件。
本發明可在電腦程式碼或機械可用的指令的一般範圍來描述,包含可由電腦或其他機器(像是個人資料助理或其他手持式裝置)執行的電腦可執行指令,像是程式模組。一般而言,程式模組包含例式、程式、物件、組件、資料結構等等,參照執行特定工作或實施特定抽象資料類型之程式碼。本發明可在許多種系統組態內實行,包含手持式裝置、消費型電子設備、一般用途電腦、特製計算裝置等。本發明也可在分散式計算環境中實行,其中工作由透過通訊網路連接的遠端處理裝置所執行。
請參閱第2圖,計算裝置200包含匯流排201,其直接或間接與下列裝置耦合:網路裝置202、CPU 203、記憶體204、儲存裝置205以及輸入/輸出(input/output,I/O)裝置206。匯流排201代表可能是一或多個匯流排(像是位址匯流排、資料匯流排或這些的組合)。雖然第2圖的許多方塊為了清晰起見都用線條表示,事實上,用線條描繪許多組件並不是很清楚,比喻來說,線條會更精確地為灰色並且模糊。例如,許多處理器具有記憶體。吾人知道此技術之性質如此,並且重複說明第2圖的圖式僅說明可與本發明一或多個具體實施例連用的示例性計算裝置。在像是「工作站」、「伺服器」、「膝上型電腦」、「手持式裝置」等等這些類別之間並不做區別,這全都被考量在第2圖的範疇內,並且意指為「計算裝置」或「節點」。
計算裝置200典型上包含許多電腦可讀取媒體,電腦可讀取的媒體可以為任何可獲得的媒體(可由計算裝置200存取),並且包含揮發以及非揮發性媒體、可移除與不可移除媒體。經由範例並且不受限於此範例,電腦可讀取的媒體可包括電腦儲存媒體以及通訊媒體。電腦儲存媒體包含在任何方法或技術內實施的揮發與非揮發性、可移除與不可移除媒體,用於儲存像是電腦可讀取指令、資料結構、程式模組或其他資料的資訊。電腦儲存媒體包含但不受限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(digital versatile disk,DVD)或其他光學碟片儲存、磁匣、磁帶、磁碟片儲存或其他磁性儲存裝置,或其他任何可用於儲存所要資訊並且可由計算裝置200存取的媒體。
記憶體204包含揮發性記憶體形式的電腦儲存媒體。示例性硬體裝置包含固態記憶體,像是RAM。儲存裝置205包含非揮發性記憶體形式的電腦儲存媒體。該記憶體可為可移除式、不可移除式或這兩者的組合。示例性硬體裝置包含固態記憶體、硬碟、光碟機等等。計算裝置200包含一或多個從許多實體,像是記憶體204、儲存裝置205或I/O裝置206讀取資料的處理器(CPU)203。I/O裝置206讓計算裝置200邏輯耦合至其他包含有些可能是內建之輸入組件與輸出組件之裝置。例示的組件包含麥克風、搖桿、遊戲控制器、衛星碟、掃描器、印表機、無線裝置等等。計算裝置200包含便於與其他網路裝置通訊的網路裝置202,網路裝置202作為一額外的I/O裝置。
熟習此項技術者將了解,儲存在計算裝置(稱為節點或儲存節點)的網路內之資料可用許多方式格式化。經由範例,常見於獨立資料檔,像是音樂檔、視訊檔、文字處理文件以及以分散式方式儲存的同類檔案。根據本發明的一具體實施例,將資料塑造成串流的集合,其可組織成為一傳統階層式命名空間。第3圖描述串流300作為一示例性資料格式,用於資料儲存並且其上可根據本發明的某些具體實施例進行基元多重修改。串流300為邏輯上相關的資料之集合。根據本發明的某些具體實施例,串流300屬於只附加型並且尺寸可能非常大,可能超出網路節點單獨儲存容量好幾倍。串流300可由握把(handle)或名稱所存取,並且每一串流,例如串流300,具備維持與存取政策。根據本發明的某些具體實施例,每一串流也具有相關的全域唯一識別碼(globally unique identifier,GUID),這在串流壽命期間無法改變(即,與名稱不同,該名稱可被修改,GUID永久識別與其相關的串流)。例如,串流300可看待成一系列位元組。串流300由一系列有排序的範圍301、302、303所構成,範圍301、302、303為串流300的配置單元。範圍301、302、303
也屬於只附加型,並且每一範圍301、302、303都使用一全域唯一識別碼(GUID)來識別。範圍301、302、303可分散在網路內許多節點之間。範圍301、302、303可被共同複製,並且範圍301、302、303的複製可分散在網路內許多節點之間。範圍301、302、303具有尺寸限制(例如2 GB),並且是有許多用途的一分割單元。範圍301、302、303的尺寸有時受到限制,以便將串流區分成可平行處理的厚片段,用於故障恢復、負載平衡、複製、搜尋以及/或資料探勘。範圍的尺寸也受到儲存系統故障恢復模式的限制。
根據本發明的某些具體實施例,串流300儲存對於每一範圍的參照以及/或每一範圍複製的位置或複數個位置的參照。例如:範圍301的複製儲存在節點(伺服器)304上,並且範圍302和303的實體都儲存在節點(伺服器)305上。應特別注意的是範圍可以複製。在這些情境當中,可將範圍資料存取在許多位置上,這就是其複製的位置。範圍的GUID將不會改變,但是其複製的編號與位置可隨時間而變。為了清晰與簡化起見,此範例只說明非複製範圍的情境。儲存參照的一項優點為其可新增一範圍參照至串流,而不用複製或移動與該範圍相關的任何資料。經由範例,若要將範圍301的其他複製新增至串流300,並不需要改變或複製節點(伺服器)304上的資料。反而,一額外範圍參照新增至已經在串流300內的範圍參照清單。
串流由元資料表示,根據本發明的具體實施例,元資料其本身可分散遍及網路或儲存在集中式伺服器上。此時請參閱第4圖,經由圖示,元資料400為含有關於串流之資訊的資料集合。根據本發明某些具體實施例,與串流相關的元資料400包含目前與串流401相關的名稱。串流名稱定位目錄結構內由用戶端存取資料所使用的串流,名稱可隨串流移動與修改而變。根據本發明的某些具體實施例,主機依照名稱401存取串流。元資料400也包含GUID 402,此為總體唯一、永久並且專屬相關於串流的識別符(即是一串流的GUID 402永遠不變,並且沒有兩個串流分享相同的GUID)。與串流相關的元資料400也含有組成串流的範圍參照403的清單。每一範圍參照403都識別一特定範圍,並允許用戶端或伺服器定位出網路內範圍的所有複製,提供實際資料之實體存取。
基元多重修改牽涉到對一或多個串流執行多重修改。經由範例,修改包含建立新串流、刪除串流、重新命名串流、串接兩或多個串流、建立一現有串流的複本以及將一串流範圍的子集複製到第二串流。熟習此項技術者將了解,有許多其他可能的修改可組合用來組成基元多重修改。此時請翻閱第5圖,考慮基元多重修改的一範例。指令503的多重修改集合由將串流501從「A」重新命名為「B」並且將串流502從「B」重新命名為「A」所組成。熟習此項技術者就會了解,使用標準資料複製方法需要一暫時儲存區來執行這種修改,並且讓故障恢復更複雜,因為如果發生錯誤,復原邏輯需要清除暫存區,並更需要確定串流501和串流502在從故障恢復之後到達總體一致狀態。不過,根據本發明的一個具體實施例,基元多重修改當成一個步驟來執行,藉此簡化復原邏輯,因為串流501和串流502在面對故障時都呈現一致狀態,並且無暫存區要清除。經由範例,首先從串流501和串流502的元資料當中移除其名稱(分別為「A」和「B」),如此兩串流都變成無名稱。這種將串流與串流命名空間的解耦合允許多重修改發生。
修改集合503內的第一次修改509已執行。在此情況下,串流501將被重新命名為「B」。要達成此情況,串流501的名稱設定為「B」,並且串流501重新附加至串流命名空間。其可在無命名空間衝突之下達成,因為當串流502與串流命名空間分離時,名稱「B」變成可用。來自修改集合503的第二次修改512也已執行。在此情況下,串流502將被重新命名為「A」。要達成此情況,串流502的名稱設定為「A」,並且串流502重新附加至
串流命名空間。其可在無命名空間衝突之下達成,因為當串流501與串流命名空間分離時,名稱「A」變成可用。
此時請參閱第6圖,其繪示了提供根據本發明具體實施例用於在一或多選取的串流上執行基元多重修改的方法600之流程圖。選取一或多個串流來修改,如方塊601上所示。熟習此項技術者將了解,有許多方式可選取串流用於修改。經由範例,一應用程式可提供一串流清單,每一都由其目前名稱或GUID所參照,要包含成為選取用於修改的串流。名稱及/或GUID的清單用於找出每一串流的元資料,包含與串流相關的範圍參照清單。根據本發明的某些具體實施例,也根據元資料內的資訊來定位每一串流的實體位置。
在相關於選取每個用於修改的一或多個串流的元資料上,以及多重修改涵蓋的串流命名空間上獲取一鎖定,如方塊602上所示。一旦已獲取一鎖定,主要用於刪除或重新命名的選取串流會與其各別名稱解耦合,如方塊603上所示。根據本發明的某些具體實施例,這幫助多重修改的應用,該等修改影響串流的方式猶如修改同時發生。經由範例,利用建立暫時映射儲存串流GUID的原始耦合來命名每一選取串流,如此可將串流與其相關名稱解耦合。
多重修改可用作為基元多重修改的方式來製作,雖然第6圖內顯示兩修改,熟習此項技術者將了解,任何數量的修改都可結合形成單一基元多重修改,而在一或多個選取的串流上操作。第一次修改在一或多個串流上執行,如方塊604上所示,並且執行第二次修改,如方塊605上所示。根據本發明的某些具體實施例,這些修改同時發生,相對於依序發生。經由範例,修改包含建立新串流、刪除串流、重新命名串流、更新串流的元資料、建立現有串流的複本、串接兩或多個串流以及將串流範圍的子集複製到第二串流。
一旦基元多重修改內所有修改都已完成,則串流與名稱重新連結,如方塊606上所示。根據本發明的某些具體實施例,基於由套用至對應串流的每一修改對暫時映射進行之變更,將串流名稱耦合至串流。串流的GUID用於追蹤這些變更,並且影響重新耦合。元資料上之一鎖定或複數個鎖定與一或多個串流的每一個都相關,以及多重修改涵蓋的串流命名空間已釋放,如方塊607上所示。
此時請翻閱第7圖,其繪示了提供根據本發明具體實施例用於在一或多個選取串流上執行基元多重修改的方法700之流程圖,其中該多重修改內的修改無法成功完成。在執行期間有可能使修改組成基元多重修改,該修改的其中之一在執行後無法成功完成。經由範例,多重修改內的兩修改都嘗試造成具有相同名稱的串流(例如透過串流建立或重新命名)。因此,若讓多重修改成功,則結果狀態取決於修改執行的排序,並且無法執行該等修改猶如他們同時發生。一旦發現這種情況,則逆轉到目前為止執行過屬於基元多重修改一部分的所有修改,並且將串流元資料重設成基元多重修改開始之前的狀態。類似於第6圖的方法600,選擇一或多個串流用於基元多重修改的應用,如方塊701上所示,並且在與每一選取串流相關的元資料上獲取一鎖定,如方塊702上所示。
每一選取的串流都與其相關名稱解耦合,如方塊703上所示,並且第一次修改套用到一或多個選取的串流,如方塊704上所示,這類似於第6圖的方塊603和604。然後做出對於選取串流的第二次修改未成功完成之判定,如方塊705上所示。熟習此項技術者可了解,有許多方式可做出這種判定。根據本發明的某些具體實施例,暫時往復突變(reversible mutation)歷史用來額外提供一機制,以解開執行基元多重修改處理內之任何步驟。
一旦已經判定基元多重修改應用內將發生失敗,則逆轉已經套用的修改,如方塊706上所示。在逆轉對於選取串流所做任何修改之後,串流重新與其各別原始名稱耦合,並且刪除新建立的串流,如方塊707上所示。一
旦已經逆轉修改、串流重新與其原始名稱耦合,並且刪除新建立的串流,則釋放鎖定,如方塊708上所示,這類似於第6圖內的方塊607。
根據本發明的某些具體實施例,底下第8圖的流程圖中說明用於在一或多選取串流上執行基元多重修改之方法。若偵測到組成基元多重修改的修改中之一者將失敗,則中斷該基元多重修改並且讓串流回到開始基元多重修改之前的狀態。選擇一或多個串流用於修改,如方塊801上所示,並且在與選取串流相關的元資料上獲取一鎖定,如方塊802上所示,這類似於第6圖的方塊601和602。
目標在於刪除或重新命名的每一串流都與其相關名稱解耦合,如方塊803上所示,並且執行第一次修改,如方塊804上所示,這類似於第6圖的方塊603和604。然後判定第二次修改的應用是否無法成功完成,如方塊805上所示。此判定之作出可以類似於第7圖的方塊705之判定的方式。例如,若套用第二次修改將相關於一串流,該串流名稱已經由第一次修改相關於其他串流,或在之前的異動內,判定第二次修改將不會成功完成。
若判定第二次修改可被成功執行,則執行第二次修改,如方塊806上所示,串流會重新耦合至其最終相關名稱,如方塊808上所示,並且釋放與選取用於修改和串流命名空間的串流相關之元資料上的一鎖定與複數個鎖定,如方塊809上所示。這些步驟的每一個可分別以類似於第6圖的步驟605、606和607來執行。
不過,若判定第二次修改會失敗,則逆轉第一次修改,如方塊807上所示,串流重新耦合至其原始相關名稱,如方塊808上所示,刪除任何新建立的串流,並且釋放與選取用於修改和串流命名空間的串流相關之元資料上的一鎖定與複數個鎖定,如方塊809上所示。這些步驟的每一個可分別以類似於第7圖的步驟706、707和708來執行。
如圖所示,第9圖展示已執行的多重修改範例。第9圖的範例包含在系統內說明狀態的「檢查點+紀錄」系統的實施。在這種系統內,系統狀態由含有完整狀態資訊的快照,稱為檢查點,以及許多含有從最後已知檢查點所做之變更的更小差量所表示。紀錄含有這些差量的清單。若要到達系統的目前狀態,用戶端應該對於最後快照套用記錄內在最後快照之後所發生的所有差量。發生在最近快照之前的快照與差量都已過時並且不再需要,因此垃圾收集處理可定期清除過期的快照與差量。熟習此項技術者將了解,對於基元多重修改而言還有許多其他系統應用。
例如:考量儲存相簿的系統,其中用三個串流代表相簿:ALBUM.CHECKPOINTS 901、ALBUM.DELTA 902以及ALBUM.DATA 903。ALBUM.CHECKPOINTS 901儲存所有相片的完整清單,以及相簿內特定時間點上的註釋。相片的刪除與新增都儲存在ALBUM.DELTA 902內。實際相片則儲存在ALBUM.DATA 903內。此相簿可同時由數千個用戶端存取,每一用戶端都可新增相片、編輯與取代相片、刪除相片、重新命名相片、註釋相片等等,ALBUM.DELTA 902檔會定期地變得非常大並導致用戶端歷經非常長的載入時間。另外,ALBUM.DATA 903內的範圍不再有來自任何最近檢查點或差量的任何參照(例如在那些範圍內的相片已經被刪除)。
數千個用戶端的每一個都可一一開啟這些串流,垃圾收集處理最終可決定從串流當中移除不需要的項目,例如:假設ALBUM.CHECKPOINTS 901由兩範圍構成,第一個具有舊檢查點904並且第二個具有最新檢查點905。因為新檢查點含有完整系統快照,因此可移除舊檢查點。ALBUM.DELTA 902也由多個範圍構成,此範例中,假設來自目前檢查點905的相關差量全都在ALBULM.DELTA的最後範圍906內。ALBUM.DATA 903含有許多範圍並且散布其中的是無參照串流的範圍,換言之,就是可移除的範圍。例如:只有ID是R、S、Y、Z(912、913、914、915)的範圍要保留在ALBUM.DATA串流內。若要清除不需要的範圍,垃圾收集處理可執行下列修改:從ALBUM.CHECKPOINTS 901當中移除舊範圍、從ALBUM.DELTA 902當中移除舊範圍,以及移除ALBUM.DATA 903內ALBUM.CHECKPOINTS 901和ALBUM.DELTA 902當中剩餘範圍內無參照的任何範圍。垃圾收集處理可使用基元多重修改以達成這些修改。
垃圾收集處理可使用的基元多重修改範例含有下列修改,修改1:建立名為ALBUM.CHECKPOINTS 907的新串流、刪除具備STREAM_IDABCD
901的串流以及將EXTENT_IDB
910附加至新串流,其指派為IDQRST
。修改2:建立名為ALBUM.DELTA 908的新串流、刪除具備STREAM_IDAFDE
902的串流以及將EXTENT_IDL
911附加至新串流,其指派為STREAM_IDVCDE
。修改3:建立名為ALBUM.DATA 909的新串流、刪除具備STREAM_IDDEFF
903的串流以及將EXTENT_IDR
912、EXTENT_IDS
913、EXTENT_IDY
914和EXTENT_IDZ
915附加至新串流,其指派為IDRSTV
。因為所有修改都以基元方式執行,所以用戶端所見都是一致的相簿。在此特定範例中,在個別多重修改異動內修改每一串流,在邏輯上也是正確的。為了效率,這些串流在單一多重修改異動內被修改(以減少異動量)。但是熟習此項技術者將了解,在許多情境內還是有多個串流必須在一個基元多重修改內修改,以確保這些串流之間的一致性,並且這些情境中可使用多重修改支援。
在不背離本發明精神與範疇之下,可能有許多已說明的組件以及未顯示組件的許多不同配置。已說明的本發明具體實施例在於圖示而並非設限,熟習此項技術者將瞭解不背離其範疇的替代具體實施例。在不背離本發明範疇之下,精通的技師可發展出實施前述改良的替代裝置。
吾人將瞭解,特定特徵與子集都有其用處,可在不參照其他特徵與子集之下運用並且被考量在申請專利範圍的範疇內。許多圖式內列出的所有步驟並不需要依照說明的特定順序執行。
100...網路拓撲
101...網路區段
102...網路區段
103...網路區段
104...網路區段
105...節點
106...主機
107...節點
108...節點
109...節點
110...節點
111...主機
112...節點
113...節點
114...節點
115...大型網路
200...計算裝置
201...匯流排
202...網路裝置
203...CPU
204...記憶體
205...儲存裝置
206...輸入/輸出裝置
300...串流
301...範圍
302...範圍
303...範圍
304...節點(伺服器)
305...節點(伺服器)
400...元資料
401...串流/名稱
402...GUID
403...範圍參照
501...串流
502...串流
503...指令/修改集合
509...第一次修改
512...第二次修改
601-607...步驟流程
701-708...步驟流程
801-809...步驟流程
901...ALBUM.CHECKPOINTS
902...ALBUM.DELTA
903...ALBUM.DATA
904...舊檢查點
905...最新/目前檢查點
906...最後範圍
907...ALBUM.CHECKPOINTS
908...ALBUM.DELTA
909...ALBUM.DATA
910...EXTENT_IDB
911...EXTENT_IDL
912...EXTENT_IDR
913...EXTENT_IDS
914...EXTENT_IDY
915...EXTENT_IDZ
底下將參閱附圖詳細說明本發明的具體實施例,其中:
第1圖說明適合用來實施本發明的示例性網路環境之圖式;
第2圖說明適合用來實施本發明的示例性計算裝置之方塊圖;
第3圖為根據本發明之具體實施例的示例性串流之方塊圖;
第4圖為根據本發明之具體實施例的示例性元資料方塊之方塊圖;
第5圖為根據本發明之具體實施例的示例性多重修改之方塊圖;
第6圖說明顯示根據本發明之具體實施例用於執行多重修改至一或多個串流作為單一基元單元的方法之流程圖;
第7圖說明顯示根據本發明之具體實施例用於若判定在一或多個選取串流內第二次修改將失敗時,逆轉成功修改的方法之流程圖;
第8圖說明顯示根據本發明具體實施例用於執行多重修改至一或多個串流作為單一基元單元,包含判定該多重修改的其中之一是否導致不一致或失敗的方法之流程圖;以及
第9圖說明根據本發明具體實施例的多重修改之範例。
601-607...步驟流程
Claims (15)
- 一種儲存用於執行一方法的電腦可執行指令之電腦可讀取媒體,其中該方法對於一或更多個串流執行多重修改以成為一單一基元單元,該方法包含以下步驟:選取一或更多個串流來修改成為一或更多個選取的串流,其中該一或更多個串流係為只附加(append-only)串流;在與該一或更多個選取串流相關的一或更多個元資料上獲取一鎖定,其中該一或更多個元資料包括與每一串流相關之一或更多個名稱;將該一或更多個選取串流之每一者從相關於每一串流的該一或更多個名稱解耦合(decouple);對該一或更多個選取串流執行複數個修改;將該一或多個選取串流之每一者與該一或更多個名稱之至少一者重新耦合(re-couple);其中該解耦合與重新耦合之步驟係使用一暫時映射至該一或更多個名稱來執行,該暫時映射儲存一或更多個選取串流全域唯一識別碼(GUID)之原始耦合;以及釋放該一或更多個選取串流的該一或更多個元資料上的該鎖定。
- 如申請專利範圍第1項所述之媒體,其中該解耦合步驟包含下列步驟:從與每一串流相關的該名稱中維持一暫時映射,該暫時映射儲存該一或更多個選取串流之每一者的一原始耦合。
- 如申請專利範圍第1項所述之媒體,其中該複數個修改步驟包含一或更多個下列步驟:建立一新串流、附加至一現有串流、建立一現有串流的一複本、刪除一串流、重新命名一串流、更新一串流的該元資料以及將一串流的該等範圍(extent)之一子集複製到一第二串流。
- 如申請專利範圍第1項所述之媒體,其中將該一或多個選取串流之每一者與該一或更多個名稱之至少一者重新耦合之該步驟包含下列步驟:將該一或更多個選取串流的一或更多個GUID與該一或更多個名稱產生相關。
- 如申請專利範圍第1項所述之媒體,其中該複數個修改藉由改變一或更多個指標器至範圍而不移動該一或更多個範圍的該資料,以影響該一或更多個選取串流。
- 一種儲存用於執行一方法的電腦可執行指令之電腦可讀取媒體,其中該方法對於一或更多個串流執行多重修改以成為一單一基元單元,該方法包含以下步驟:選取一或更多個串流來修改成為一或更多個選取的串流;在與該一或更多個選取串流相關的一或更多個元資料上獲取一鎖定,其中該一或更多個元資料包括與每一串流相關之一或更多個名稱;將該一或更多個選取串流之每一者從相關於每一串流的一名稱解耦合;對該一或更多個選取串流執行一第一複數個修改;判定對該一或更多個選取串流的一第二複數個修改會產生與該第一複數個修改之一不一致;逆轉對該一或更多個選取串流的該第一複數個修改; 將該一或更多個選取串流之每一者與相關於每一串流的至少一個名稱耦合;其中該解耦合與耦合之步驟係使用一暫時映射至該一或更多個名稱來執行,該暫時映射儲存一或更多個選取串流GUID之原始耦合;以及釋放該一或更多個選取串流的該一或更多個元資料上的該鎖定。
- 如申請專利範圍第6項所述之媒體,其中該一或更多個串流係為只附加串流。
- 如申請專利範圍第6項所述之媒體,其中該複數個修改影響該暫時映射內之一或更多個變更。
- 如申請專利範圍第6項所述之媒體,其中該複數個修改之每一者建立該暫時映射的一新複本,在與該暫時映射的該新複本相關之該複數個修改中一修改應用之後,每一複本指示該一或更多個選取串流的一快照。
- 如申請專利範圍第6項所述之媒體,其中該逆轉該第一複數個修改之步驟包含下列步驟: 逆轉對該選取串流之每一者的變更。
- 如申請專利範圍第6項所述之媒體,其中該複數個修改步驟包含一或多個下列步驟:建立一新串流、附加至一現有串流、建立一現有串流的一複本、刪除一串流、重新命名一串流、更新一串流的該元資料以及將一串流的該等範圍之一子集複製到一第二串流。
- 如申請專利範圍第6項所述之媒體,其中該複數個修改藉由改變一或更多個指標器至範圍而不移動該一或更多個範圍的該資料,以影響該一或更多個選取串流。
- 一種儲存用於執行一方法的電腦可執行指令之電腦可讀取媒體,其中該方法對於一或更多個串流執行多重修改以成為一單一基元單元,該方法包含以下步驟:選取一或更多個只附加串流來修改成為一或更多個選取的串流,其中該一或更多個串流係為只附加(append-only)串流;在與該一或更多個選取串流相關的一或更多個元資料上獲取一鎖定,其中獲取該鎖定之步驟包含使 用一預定名稱來修改一串流以成為一鎖定串流之步驟;將該一或更多個選取串流之每一者從相關於每一串流的一或更多個名稱解耦合;對該一或更多個選取串流執行一第一複數個修改;判定對該一或更多個選取串流的一第二複數個修改是否會產生與該第一複數個修改之一不一致;若該第二複數個修改會產生一不一致,則逆轉對該一或更多個選取串流的該第一複數個修改;若該第二複數個修改不會產生一不一致,則對該一或更多個選取串流執行一第二複數個修改;將該一或更多個選取串流之每一者與相關於每一串流的至少一個名稱耦合;其中該解耦合與耦合之步驟係使用一暫時映射至該一或更多個名稱來執行,該暫時映射儲存一或更多個選取串流GUID之原始耦合;以及釋放該一或更多個選取串流的該一或更多個元資料上的該鎖定。
- 如申請專利範圍第13項所述之媒體,其中該複數個修改藉由改變一或更多個指標器至範圍而不移動該 一或更多個範圍的該資料,以影響該一或更多個選取串流。
- 如申請專利範圍第13項所述之媒體,其中該複數個修改步驟包含一或更多個下列步驟:建立一新串流、附加至一現有串流、建立一現有串流的一複本、刪除一串流、重新命名一串流、更新一串流的該元資料以及將一串流的該等範圍之一子集複製到一第二串流。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/258,025 US8255373B2 (en) | 2008-10-24 | 2008-10-24 | Atomic multiple modification of data in a distributed storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201029393A TW201029393A (en) | 2010-08-01 |
TWI395104B true TWI395104B (zh) | 2013-05-01 |
Family
ID=42119902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098134955A TWI395104B (zh) | 2008-10-24 | 2009-10-15 | 在分散式儲存系統中資料之基元多重修改 |
Country Status (11)
Country | Link |
---|---|
US (1) | US8255373B2 (zh) |
EP (1) | EP2356560B1 (zh) |
JP (1) | JP5657550B2 (zh) |
KR (1) | KR101573965B1 (zh) |
CN (1) | CN102197365B (zh) |
AU (1) | AU2009307842B2 (zh) |
BR (1) | BRPI0919072A2 (zh) |
CA (1) | CA2736961C (zh) |
RU (1) | RU2011116176A (zh) |
TW (1) | TWI395104B (zh) |
WO (1) | WO2010048027A2 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101143670B1 (ko) * | 2007-08-20 | 2012-05-09 | 노키아 코포레이션 | 스트리밍된 데이터의 조직화 방법, 컴퓨터 판독가능한 저장 매체, 수신기 및 장치 |
US9015136B2 (en) * | 2010-01-22 | 2015-04-21 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
US8473953B2 (en) | 2010-07-21 | 2013-06-25 | International Business Machines Corporation | Batching transactions to apply to a database |
US9697216B2 (en) * | 2011-07-20 | 2017-07-04 | Simplivity Corporation | Method and apparatus for differentiated data placement |
US9501501B2 (en) * | 2013-03-15 | 2016-11-22 | Amazon Technologies, Inc. | Log record management |
US11030055B2 (en) | 2013-03-15 | 2021-06-08 | Amazon Technologies, Inc. | Fast crash recovery for distributed database systems |
US9672237B2 (en) | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
US9514007B2 (en) | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
US10180951B2 (en) | 2013-03-15 | 2019-01-15 | Amazon Technologies, Inc. | Place snapshots |
US10747746B2 (en) | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
US9208032B1 (en) | 2013-05-15 | 2015-12-08 | Amazon Technologies, Inc. | Managing contingency capacity of pooled resources in multiple availability zones |
US10303564B1 (en) | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
US9047189B1 (en) | 2013-05-28 | 2015-06-02 | Amazon Technologies, Inc. | Self-describing data blocks of a minimum atomic write size for a data store |
US10216949B1 (en) | 2013-09-20 | 2019-02-26 | Amazon Technologies, Inc. | Dynamic quorum membership changes |
US9460008B1 (en) | 2013-09-20 | 2016-10-04 | Amazon Technologies, Inc. | Efficient garbage collection for a log-structured data store |
US10223184B1 (en) | 2013-09-25 | 2019-03-05 | Amazon Technologies, Inc. | Individual write quorums for a log-structured distributed storage system |
US9699017B1 (en) | 2013-09-25 | 2017-07-04 | Amazon Technologies, Inc. | Dynamic utilization of bandwidth for a quorum-based distributed storage system |
US9880933B1 (en) | 2013-11-20 | 2018-01-30 | Amazon Technologies, Inc. | Distributed in-memory buffer cache system using buffer cache nodes |
US9223843B1 (en) | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
US10657113B2 (en) | 2014-01-14 | 2020-05-19 | Baker Hughes, A Ge Company, Llc | Loose coupling of metadata and actual data |
US10242222B2 (en) | 2014-01-14 | 2019-03-26 | Baker Hughes, A Ge Company, Llc | Compartment-based data security |
US10002077B2 (en) | 2014-01-31 | 2018-06-19 | Hewlett Packard Enterprise Development Lp | Persistent memory controller based atomicity assurance |
US9519510B2 (en) * | 2014-03-31 | 2016-12-13 | Amazon Technologies, Inc. | Atomic writes for multiple-extent operations |
CN106339176B (zh) * | 2015-07-08 | 2020-04-10 | 阿里巴巴集团控股有限公司 | 中间文件处理方法、客户端、服务器和系统 |
US10789223B2 (en) | 2016-03-24 | 2020-09-29 | Microsoft Technology Licensing, Llc | Hybrid garbage collection in a distributed storage system |
DE102017210076B4 (de) * | 2017-06-14 | 2023-08-24 | Elektrobit Automotive Gmbh | Verfahren und System zur Multikern-Kommunikation mit Sicherheitseigenschaften |
CN109101341B (zh) * | 2017-06-21 | 2022-02-22 | 阿里巴巴集团控股有限公司 | 分布式锁的分配方法及设备 |
US10872066B2 (en) * | 2017-06-27 | 2020-12-22 | Salesforce.Com, Inc. | Systems and methods of database tenant migration |
KR102457400B1 (ko) | 2017-11-16 | 2022-10-21 | 삼성전자주식회사 | 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
US11914571B1 (en) | 2017-11-22 | 2024-02-27 | Amazon Technologies, Inc. | Optimistic concurrency for a multi-writer database |
KR102089291B1 (ko) * | 2018-06-19 | 2020-03-16 | 주식회사 티맥스데이터 | 데이터 익스텐트 이동 방법 |
CN109240848A (zh) * | 2018-07-27 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据对象标识生成方法及装置 |
US11237829B2 (en) * | 2019-02-13 | 2022-02-01 | International Business Machines Corporation | Performing composable transactions in a dispersed storage network |
US10834194B2 (en) | 2019-02-13 | 2020-11-10 | International Business Machnes Corporation | Batching updates in a dispersed storage network |
US11334561B2 (en) | 2019-07-24 | 2022-05-17 | Vmware, Inc. | Flexible byzantine fault tolerant protocol using message delay upper bound for client commit decision |
US11341122B2 (en) | 2019-07-24 | 2022-05-24 | Vmware, Inc. | Byzantine fault tolerance that supports heterogeneous clients |
US11341163B1 (en) | 2020-03-30 | 2022-05-24 | Amazon Technologies, Inc. | Multi-level replication filtering for a distributed database |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5946685A (en) * | 1997-06-27 | 1999-08-31 | Sun Microsystems, Inc. | Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism |
US6687701B2 (en) * | 2001-09-25 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
TW583586B (en) * | 2001-09-28 | 2004-04-11 | Intel Corp | Method for atomically updating a plurality of files |
TW200612255A (en) * | 2004-10-01 | 2006-04-16 | Microsoft Corp | System and method for determining target failback and target priority for a distributed file system |
TW200719147A (en) * | 2005-08-15 | 2007-05-16 | Ibm | Copying storage units and related metadata to storage |
TW200720940A (en) * | 2005-11-10 | 2007-06-01 | Ibm | Reconciliation of independently updated distributed data |
US20070276838A1 (en) * | 2006-05-23 | 2007-11-29 | Samy Khalil Abushanab | Distributed storage |
TW200807266A (en) * | 2006-07-11 | 2008-02-01 | Dell Products Lp | System and method of dynamically changing file representations |
TW200841190A (en) * | 2007-02-09 | 2008-10-16 | Microsoft Corp | Efficient knowledge representation in data synchronization systems |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313629A (en) * | 1989-10-23 | 1994-05-17 | International Business Machines Corporation | Unit of work for preserving data integrity of a data-base by creating in memory a copy of all objects which are to be processed together |
US5933834A (en) * | 1997-10-16 | 1999-08-03 | International Business Machines Incorporated | System and method for re-striping a set of objects onto an exploded array of storage units in a computer system |
US6240413B1 (en) * | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US6173293B1 (en) * | 1998-03-13 | 2001-01-09 | Digital Equipment Corporation | Scalable distributed file system |
US6697846B1 (en) * | 1998-03-20 | 2004-02-24 | Dataplow, Inc. | Shared file system |
JP4286857B2 (ja) * | 1998-11-18 | 2009-07-01 | 富士通株式会社 | ノード間共用ファイル制御方法 |
US6523078B1 (en) * | 1999-11-23 | 2003-02-18 | Steeleye Technology, Inc. | Distributed locking system and method for a clustered system having a distributed system for storing cluster configuration information |
US6981005B1 (en) * | 2000-08-24 | 2005-12-27 | Microsoft Corporation | Partial migration of an object to another storage location in a computer system |
US7165096B2 (en) * | 2000-12-22 | 2007-01-16 | Data Plow, Inc. | Storage area network file system |
US7788335B2 (en) * | 2001-01-11 | 2010-08-31 | F5 Networks, Inc. | Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system |
US7062490B2 (en) * | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US6715050B2 (en) * | 2001-05-31 | 2004-03-30 | Oracle International Corporation | Storage access keys |
US20030041097A1 (en) | 2001-07-11 | 2003-02-27 | Alexander Tormasov | Distributed transactional network storage system |
US7406473B1 (en) * | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
KR100453228B1 (ko) | 2002-03-21 | 2004-10-15 | 한국전자통신연구원 | 공유 디스크 파일 시스템의 저널링 및 회복 방법 |
US7222119B1 (en) * | 2003-02-14 | 2007-05-22 | Google Inc. | Namespace locking scheme |
CA2422161C (en) * | 2003-03-14 | 2009-10-06 | Ibm Canada Limited - Ibm Canada Limitee | Decoupled object identification for object switching in database systems |
CN100430916C (zh) * | 2003-05-17 | 2008-11-05 | 微软公司 | 用于将转换应用到多部分文件的方法和系统 |
US7243089B2 (en) * | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data |
US7349926B2 (en) * | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
US7685128B2 (en) * | 2004-06-10 | 2010-03-23 | International Business Machines Corporation | Remote access agent for caching in a SAN file system |
US20050289143A1 (en) | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
US7650336B1 (en) * | 2004-12-02 | 2010-01-19 | Adobe Systems Incorporated | File system atomic lock |
US7680835B2 (en) * | 2005-02-28 | 2010-03-16 | Microsoft Corporation | Online storage with metadata-based retrieval |
US20060195460A1 (en) * | 2005-02-28 | 2006-08-31 | Microsoft Corporation | Data model for object-relational data |
US7650514B2 (en) * | 2005-12-30 | 2010-01-19 | Microsoft Corporation | Scalable leases |
US7392335B2 (en) | 2006-02-10 | 2008-06-24 | Oracle International Corporation | Anticipatory changes to resources managed by locks |
US7809685B2 (en) * | 2006-04-21 | 2010-10-05 | Ricoh Co., Ltd. | Secure and efficient methods for logging and synchronizing data exchanges |
JP4890931B2 (ja) * | 2006-05-01 | 2012-03-07 | キヤノン株式会社 | コンテンツ管理方法、装置、及びシステム |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
US7836226B2 (en) * | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
-
2008
- 2008-10-24 US US12/258,025 patent/US8255373B2/en active Active
-
2009
- 2009-10-15 KR KR1020117008649A patent/KR101573965B1/ko active IP Right Grant
- 2009-10-15 JP JP2011533238A patent/JP5657550B2/ja active Active
- 2009-10-15 CN CN200980142635.2A patent/CN102197365B/zh active Active
- 2009-10-15 AU AU2009307842A patent/AU2009307842B2/en not_active Ceased
- 2009-10-15 WO PCT/US2009/060847 patent/WO2010048027A2/en active Application Filing
- 2009-10-15 RU RU2011116176/08A patent/RU2011116176A/ru not_active Application Discontinuation
- 2009-10-15 BR BRPI0919072A patent/BRPI0919072A2/pt active Search and Examination
- 2009-10-15 EP EP09822458.7A patent/EP2356560B1/en active Active
- 2009-10-15 TW TW098134955A patent/TWI395104B/zh not_active IP Right Cessation
- 2009-10-15 CA CA2736961A patent/CA2736961C/en not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5946685A (en) * | 1997-06-27 | 1999-08-31 | Sun Microsystems, Inc. | Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism |
US6687701B2 (en) * | 2001-09-25 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
TW583586B (en) * | 2001-09-28 | 2004-04-11 | Intel Corp | Method for atomically updating a plurality of files |
TW200612255A (en) * | 2004-10-01 | 2006-04-16 | Microsoft Corp | System and method for determining target failback and target priority for a distributed file system |
TW200719147A (en) * | 2005-08-15 | 2007-05-16 | Ibm | Copying storage units and related metadata to storage |
TW200720940A (en) * | 2005-11-10 | 2007-06-01 | Ibm | Reconciliation of independently updated distributed data |
US20070276838A1 (en) * | 2006-05-23 | 2007-11-29 | Samy Khalil Abushanab | Distributed storage |
TW200807266A (en) * | 2006-07-11 | 2008-02-01 | Dell Products Lp | System and method of dynamically changing file representations |
TW200841190A (en) * | 2007-02-09 | 2008-10-16 | Microsoft Corp | Efficient knowledge representation in data synchronization systems |
Non-Patent Citations (1)
Title |
---|
Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung,"The Google File System", SOSP'03: Proceedings of the 19th ACM Symposium on Operating Systems Principles, October 19-22, 2003 * |
Also Published As
Publication number | Publication date |
---|---|
WO2010048027A2 (en) | 2010-04-29 |
US8255373B2 (en) | 2012-08-28 |
CN102197365B (zh) | 2014-03-05 |
RU2011116176A (ru) | 2012-10-27 |
EP2356560B1 (en) | 2019-03-20 |
CA2736961A1 (en) | 2010-04-29 |
WO2010048027A3 (en) | 2010-06-17 |
JP2012507072A (ja) | 2012-03-22 |
EP2356560A2 (en) | 2011-08-17 |
CN102197365A (zh) | 2011-09-21 |
JP5657550B2 (ja) | 2015-01-21 |
CA2736961C (en) | 2016-07-12 |
BRPI0919072A2 (pt) | 2015-12-15 |
AU2009307842B2 (en) | 2014-05-22 |
US20100114848A1 (en) | 2010-05-06 |
KR20110079655A (ko) | 2011-07-07 |
TW201029393A (en) | 2010-08-01 |
KR101573965B1 (ko) | 2015-12-02 |
AU2009307842A1 (en) | 2010-04-29 |
EP2356560A4 (en) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI395104B (zh) | 在分散式儲存系統中資料之基元多重修改 | |
JP6309103B2 (ja) | スナップショットおよびクローンの複製 | |
JP5387757B2 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
US7979441B2 (en) | Method of creating hierarchical indices for a distributed object system | |
TWI492077B (zh) | 檔案系統的檢查點 | |
JP6725742B2 (ja) | ファイルストレージ、オブジェクトストレージ、およびストレージシステム | |
US8849759B2 (en) | Unified local storage supporting file and cloud object access | |
US8972347B1 (en) | Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity | |
CA2734675C (en) | Shared namespace for storage clusters | |
US7860907B2 (en) | Data processing | |
US7882064B2 (en) | File system replication | |
JP2008541225A (ja) | データベースとファイルシステムとの間でのリンクレベル整合性の維持 | |
US7685186B2 (en) | Optimized and robust in-place data transformation | |
JP2008097087A (ja) | 階層構造オブジェクトのコピー方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |