專利名稱:具有數(shù)據(jù)跟蹤的存儲復(fù)制系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,更具體地說,涉及具有數(shù)據(jù)跟蹤能力的存儲復(fù)制系統(tǒng)。
背景技術(shù):
數(shù)據(jù)的多個副本的維護是在數(shù)據(jù)不可用、損壞或丟失的情況下數(shù)據(jù)處理操作中安全功能的組成部分。數(shù)據(jù)處理系統(tǒng)的機構(gòu)用戶一般維護大量極重要的信息,并且耗費大量時間和金錢來防止數(shù)據(jù)因災(zāi)難或大災(zāi)難而造成的不可用性。維護冗余數(shù)據(jù)副本的一類技術(shù)稱作鏡像,其中,數(shù)據(jù)處理系統(tǒng)用戶在可移動存儲介質(zhì)中現(xiàn)場保存或者在位于本地或遠程的輔助鏡像存儲站點中保存有用信息的副本?,F(xiàn)場以外但在大城市距離內(nèi)、例如一直到大約200公里內(nèi)的遠程鏡像防止本地災(zāi)難,包括火災(zāi)、斷電或盜竊。跨過數(shù)百公里的地理距離的遠程鏡像可用于防止大災(zāi)難,例如地震、龍卷風(fēng)、颶風(fēng)、洪水等。許多數(shù)據(jù)處理系統(tǒng)采用設(shè)置在多個地理距離的多級冗余度來保護數(shù)據(jù)。
多站點數(shù)據(jù)復(fù)制和鏡像技術(shù)的一個方面是響應(yīng)站點之一的故障和災(zāi)難狀況。通常,可能需要某種數(shù)據(jù)重正化或調(diào)和來使各種幸存站點或節(jié)點達到同步,即通常涉及幸存節(jié)點中要重正化的邏輯單元(lun)的完整復(fù)制的過程。復(fù)制導(dǎo)致性能和可用性降級,這是企業(yè)類高可用性和災(zāi)難容許應(yīng)用不可接受的。
發(fā)明內(nèi)容
根據(jù)用于重組扇出關(guān)系的技術(shù)的一個實施例,存儲復(fù)制方法包括在多個目標(biāo)之中復(fù)制來自源的數(shù)據(jù),并跟蹤目標(biāo)中的數(shù)據(jù)修改。修改的標(biāo)識在多個目標(biāo)陣列之中相互傳遞。在源故障轉(zhuǎn)移事件中,所選目標(biāo)作為新源被建立,從而把其余目標(biāo)中的已復(fù)制數(shù)據(jù)重組為與新源同步。
通過參照以下描述和附圖,可以最佳地理解涉及結(jié)構(gòu)和操作方法的
具體實施例方式圖1A、圖1B和圖1C是示意框圖,說明具有以1:n扇出配置來設(shè)置并且適合修改為具有低開銷的1:n-1扇出的多個存儲陣列的存儲系統(tǒng)的一個實施例;圖2是示意框圖,說明適合用于冗余數(shù)據(jù)存儲系統(tǒng)的存儲單元的一個實施例;圖3是示意流程圖,說明適合快速重組扇出關(guān)系以便把數(shù)據(jù)復(fù)制到多個地理位置、同時沒有風(fēng)險地維護數(shù)據(jù)的技術(shù)的一個實施例;圖4是示意圖,說明存儲系統(tǒng)中數(shù)據(jù)跟蹤的一個實例中的一系列塊圖;圖5表示示意表格圖,說明適合用于在復(fù)制跟蹤期間收集數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的一個實施例;圖6A和圖6B是流程圖,說明用于在源故障的情況下把扇出修改為減小的扇出比的技術(shù)的實施例;圖7A和圖7B是流程圖,說明用于在出現(xiàn)源故障時重組扇出配置的技術(shù)的實施例;以及圖8A和圖8B是示意框圖,說明不包括所跟蹤信息的跟蹤和共享的存儲系統(tǒng)配置。
具體實施例方式
描述用于重構(gòu)1:n扇出的多站點復(fù)制的存儲系統(tǒng)、存儲單元及關(guān)聯(lián)操作技術(shù),它避免了大部分故障情況中幾乎所有的重正化開銷。
采用本文所公開的技術(shù)和結(jié)構(gòu)的扇出的重組可使站點間通信量、再同步時間以及對主機應(yīng)用的性能影響減小或最小。這些技術(shù)和結(jié)構(gòu)還可使其中源邏輯單元(lun)在故障事件之后無權(quán)訪問至少一個相應(yīng)的同步副本的時間窗口減小或最小。
參照圖1A、圖1B和圖1C,示意框圖說明存儲系統(tǒng)100的一個實施例,它包括以1:n扇出配置、說明性地為1:3扇出配置來設(shè)置的多個存儲陣列102S、102D1、102D2和102D3。圖1A說明1:3邏輯單元(lun)扇出實例,其中具有可稱作集線器的源陣列102S以及三個目標(biāo)陣列102D1、102D2和102D3。圖1B說明在源陣列102S出故障時的1:3 lun扇出實例。圖1C說明在源故障之后以及在扇出修改為1:2配置之后的存儲系統(tǒng)100的結(jié)構(gòu)。邏輯104通過多個存儲陣列102S、102D1、102D2和102D3分布,并且在其中可執(zhí)行。在一些配置中,邏輯可在存儲陣列外部延伸到主機、計算機、控制器、存儲管理裝置等。邏輯104適合在從源存儲陣列102S到n個目標(biāo)存儲陣列102D1、102D2和102D3的數(shù)據(jù)復(fù)制過程中跟蹤數(shù)據(jù)修改。邏輯104經(jīng)由通路106在n個目標(biāo)存儲陣列之間相互共享所跟蹤數(shù)據(jù)修改信息,其中n為任何適當(dāng)數(shù)值。邏輯104通過重組為1:n-1扇出配置來響應(yīng)故障轉(zhuǎn)移狀況。根據(jù)來自n個目標(biāo)存儲陣列102D1、102D2和102D3的互相共享的所跟蹤數(shù)據(jù)修改信息來引導(dǎo)重組。
簡單遠程復(fù)制部署可能是雙站點的,也稱作1:1配置,其中,對一個邏輯單元(lun)的輸入/輸出操作實時復(fù)制到通常處于分開的地理位置的目標(biāo)陣列中的目標(biāo)lun。如果某個事件、例如諸如氣候、地震、斷電或破壞情況等災(zāi)難狀況影響主站點,則應(yīng)用可通過把操作移到輔助站點來恢復(fù)到緊靠該事件之前的狀況。1:1遠程復(fù)制安排的限制在于,在站點事件之后,在受損站點恢復(fù)之前,僅保留復(fù)制數(shù)據(jù)的單個副本?;謴?fù)時間可能相當(dāng)長,表示對于諸如銀行業(yè)、經(jīng)紀(jì)業(yè)、證券交易所、軍事、衛(wèi)生保健等行業(yè)和機構(gòu)中的苛求災(zāi)難容許和高可用性應(yīng)用的不可接受的單一故障點風(fēng)險。許多災(zāi)難容許和高可用性用戶對于在一個站點因事件而拆除時產(chǎn)生兩個活動站點的三站點復(fù)制提出技術(shù)要求。
邏輯單元(lun)扇出是基于陣列的遠程應(yīng)用技術(shù),它涉及把源lun的鏡像副本同時復(fù)制到兩個或兩個以上目標(biāo)陣列。對源的新寫入以異步或者同步方式復(fù)制到多個目標(biāo)。在同步復(fù)制中,在對于源lun以及目標(biāo)lun進行了寫入時,對始發(fā)主機確認對于源lun的寫操作已完成。在異步復(fù)制中,在對于源lun而沒有對目標(biāo)lun進行了寫入時,對始發(fā)主機確認對于源lun的寫操作已完成。寫入稍后在與對源lun的寫入無關(guān)的動作中應(yīng)用于目標(biāo)lun。異步復(fù)制實現(xiàn)地理分布遠程復(fù)制的最高性能級別,因為沒有在對源lun的寫操作上引起線路等待時間延遲。同步復(fù)制雖然對遠距離具有較低性能,但確保目標(biāo)lun一直是源lun的逐字節(jié)精確或者極接近精確的復(fù)制品。
多站點遠程復(fù)制可采用單個lun扇出、簡單1:2扇出技術(shù)或者如說明性存儲系統(tǒng)100中的1:3扇出來實現(xiàn)。
更高的lun扇出比增加冗余度并因而增加可靠性。Lun扇出還實現(xiàn)用戶對數(shù)據(jù)的可訪問性。例如,廣播分發(fā)數(shù)據(jù)分布模型可包含1:n扇出,其中n為二或大于二、甚至可能大得多。在一個具體實例中,活動流媒體饋送可應(yīng)用于接近客戶機應(yīng)用的服務(wù)器,從而消除大量的網(wǎng)絡(luò)開銷。
存儲系統(tǒng)100可通過特定位置、例如諸如倫敦之類的地理位置上的源存儲陣列102S或集線器來直觀化。從集線器102S中延伸出通信鏈路108,它們把集線器102S連接到遠程存儲陣列102D1、102D2和102D3。集線器102S可能是包含源邏輯單元(lun)110S的陣列。遠程存儲陣列102D1、102D2和102D3包含遠程lun 110D1、110D2和110D3。數(shù)據(jù)在通信鏈路108上同步或者異步地流動。在典型情況中,存儲陣列在地理上分布。僅作為實例,第一目標(biāo)陣列102D1和第一目標(biāo)lun 110D1可能位于紐約,第二目標(biāo)陣列102D2和第二目標(biāo)lun110D2可能位于東京,以及第三目標(biāo)陣列102D3和第三目標(biāo)lun110D3可能位于香港。寬廣的分布有助于消除有限地理區(qū)域中可能出現(xiàn)的故障。在一種典型配置中,一個或多個鏈路極遙遠并且是異步的,以及一個鏈路處于大城市區(qū)域內(nèi)或者跨過它并且是同步的,從而使源lun能夠在保持適當(dāng)?shù)臑?zāi)難容許的同時是相當(dāng)迅速反應(yīng)的。其它配置也是可行的。
圖1B說明與1:n扇出操作相關(guān)的問題-如何解決因源102S的丟失而產(chǎn)生的扇出關(guān)系破壞以及扇出關(guān)系的重組,以便采用其余存儲陣列102D1、102D2和102D3重建扇出復(fù)制。
當(dāng)源存儲陣列102S或集線器丟失、或者對集線器的通信丟失的狀況出現(xiàn)時,如果存儲系統(tǒng)環(huán)境100能夠進行到目標(biāo)存儲陣列102D1、102D2和102D3之一的故障轉(zhuǎn)移操作,則應(yīng)用可繼續(xù)進行。
在不包括所跟蹤信息的跟蹤和共享的扇出安排800中,目標(biāo)陣列之間不存在關(guān)聯(lián),如圖8A所示。每個目標(biāo)陣列802D只與集線器802S有關(guān)系。當(dāng)扇出關(guān)系因集線器802S的丟失而要重組時,如圖8B所示,目標(biāo)陣列802D沒有與哪些塊已經(jīng)或者還未對其它目標(biāo)陣列802D上的相應(yīng)lun 810D寫入相關(guān)的信息。因此,被確定為作為新集線器工作的目標(biāo)陣列必須完全復(fù)制該lun,這是可能持續(xù)相當(dāng)長時間、也許數(shù)天的操作,并且完全復(fù)制操作引起的性能損失可能是顯著的。一旦開始扇出的形成,則客戶遇到只保護數(shù)據(jù)的單一良好副本而與扇出的起始程度無關(guān)的環(huán)境。
下面更詳細地描述圖8A和圖8B。
再次參照圖1A所示的存儲系統(tǒng)100,通過維護目標(biāo)存儲陣列102D1、102D2和102D3中的信息之間正在進行的關(guān)聯(lián)來增強數(shù)據(jù)保護和效率。通過可稱作記帳技術(shù)的一種技術(shù)的操作來維護該關(guān)聯(lián),使每個目標(biāo)陣列能夠保持相對于其它目標(biāo)存儲陣列102D1、102D2和102D3的任一個上的合作lun 110D1、110D2和110D3不同的本地lun110S中的塊的身份和跟蹤。
通常,各個目標(biāo)存儲陣列102D1、102D2和102D3包括配置成跟蹤相應(yīng)目標(biāo)邏輯單元(lun)110D1、110D2和110D3中的數(shù)據(jù)塊的修改的邏輯。在跟蹤操作中,邏輯可檢測針對與源存儲陣列102存在扇出關(guān)系的邏輯單元(lun)的寫入,并通過向其它目標(biāo)存儲陣列102D1、102D2和102D3的每個發(fā)送通信包來響應(yīng)寫操作。在說明性實施例中,通信包通過相互遠程通信鏈路106在目標(biāo)存儲陣列102D1、102D2和102D3之間相互交換。在一些實施例中,目標(biāo)存儲陣列102D1、102D2和102D3通過異步通信來通信,由此在網(wǎng)絡(luò)上進行請求,而無需等待應(yīng)答以進行通信。應(yīng)答可在稍后時間到達。
在一個說明性實施例中,邏輯收集數(shù)據(jù)包,其中包括通過一個或多個寫入修改的塊編號以及由源陣列102S提供并表明對源102S的寫入的序列號。
在源陣列102S中,對于經(jīng)過扇出的邏輯單元(lun)、如110S,塊寫入通過分配序列號來處理。每個寫入通常由一個序列號標(biāo)識。源陣列102S在通信鏈路108上向所有目標(biāo)存儲陣列102D1、102D2和102D3發(fā)送包括塊標(biāo)識符(ID)、塊中的數(shù)據(jù)以及序列號的信息。
塊可能是物理實體或者邏輯實體。例如,塊可能是軌道/扇區(qū),它通常與物理存儲元件或盤相關(guān)。典型的邏輯實體是lun中的順序塊編號。一般來說,塊是在存儲元件中所定義偏移處固定已知大小的數(shù)據(jù)的信息塊。不同類型的存儲陣列可采用不同類型的塊來復(fù)制數(shù)據(jù)。例如,一些陣列采用指定為軌道/扇區(qū)項的物理塊,其它陣列則采用邏輯塊。
為了說明并作為邏輯塊描述的一個實例,lun可包括1000個塊,各具有1兆字節(jié)(MB)的大小。這個上下文中的塊562的含義是lun中的第562個1MB塊。
序列號由源陣列分配。序列號是對具體邏輯單元(lun)依次連續(xù)遞增的整數(shù)。對源陣列中的第一邏輯單元、例如lun A的寫入不影響同一個源陣列中的第二邏輯單元、如lun B的序列號。因此,對于針對源lun的每個寫操作的到達,序列號加一。讀操作使序列號保持不變。
包可捆綁為包組,并以包組在目標(biāo)存儲陣列102D1、102D2和102D3之間傳遞,以便促進效率。目標(biāo)存儲陣列102D1、102D2和102D3還包括適合相互接收來自其它目標(biāo)存儲陣列102D1、102D2和102D3的數(shù)據(jù)包和/或數(shù)據(jù)包組并根據(jù)包信息來確定數(shù)據(jù)內(nèi)容差異的邏輯。目標(biāo)存儲陣列102D1、102D2和102D3之間的遠程通信鏈路106使各目標(biāo)存儲陣列能夠在受到陣列之間傳輸延遲的影響的基本上所有時間具有與所有目標(biāo)陣列之間lun內(nèi)容的差異相關(guān)的信息。遠程通信鏈路106可能是目標(biāo)存儲陣列102D1、102D2和102D3之間的直接連接。在一些實現(xiàn)中,遠程鏈路1 06可能與到源存儲陣列102S的互連通路無關(guān)。在一些情況中,通信鏈路106可能處于相同網(wǎng)絡(luò)中并且因而不是獨立的,但是,如果源附近的鏈路106的一部分出故障,只要目標(biāo)存儲陣列之間的鏈路106的分段例如以公共互聯(lián)網(wǎng)工作的方式保持可工作,則操作繼續(xù)進行。遠程通信鏈路106可通過適當(dāng)?shù)幕ミB技術(shù)來組成。一個實例是因特網(wǎng)協(xié)議(IP)通信。
當(dāng)集線器陣列丟失時,例如如圖1B所示,并且扇出將被修改為如圖1C所示,則目標(biāo)存儲陣列102D1、102D2和102D3中的任一個可被選擇作為新的中央集線器102S’進行工作。新指定的源陣列或集線器102S’從控制實體、例如系統(tǒng)管理實體接收對故障轉(zhuǎn)移操作的命令。存儲系統(tǒng)100中的邏輯可適合于通過把多個存儲陣列配置為排除出故障的源存儲陣列102S并且在與故障轉(zhuǎn)移實質(zhì)上同時進行的分配中把n個目標(biāo)存儲陣列102D1、102D2和102D3其中之一分配為作為新的源存儲陣列102S’進行工作,來響應(yīng)故障轉(zhuǎn)移狀況。例如,新源的確定可根據(jù)各種條件或情況來進行,例如根據(jù)引發(fā)事件的類型或性質(zhì)、時刻、技術(shù)支持的可用性、各個站點的技術(shù)特性、各種商業(yè)慣例等。例如,可根據(jù)事件在工作時間出現(xiàn)在一個位置以及半夜出現(xiàn)在另一個位置來選擇源。
一旦新源存儲陣列102S’被選取,存儲系統(tǒng)100還可通過把其余n-1個目標(biāo)存儲陣列中的數(shù)據(jù)重組為與新源存儲陣列102S’同步或一致,來響應(yīng)故障轉(zhuǎn)移狀況。為了重組存儲系統(tǒng)100的其余部分,命令或信號可從新源存儲陣列102S’發(fā)送,通知其余目標(biāo)存儲陣列正在重組扇出。在接收到重組命令時,新配置中的目標(biāo)存儲陣列102D1’和102D2’不再接受來自先前源存儲陣列102S的新請求。在重組命令之前到達的每個寫入被完成,而與確認是否可發(fā)回到原始源102S無關(guān)。目標(biāo)存儲陣列102D1’和102D2’還通過發(fā)送指定已經(jīng)接收更新的目標(biāo)lun 110D1’或110D2’上的塊的最終列表,來響應(yīng)新的源存儲陣列102S’。
新的源存儲陣列102S’通過確定從其余目標(biāo)存儲陣列102D1’和102D2’接收的已更新塊列表中的差異,分辨系統(tǒng)數(shù)據(jù)狀態(tài),并且把足以使存儲陣列同步的數(shù)據(jù)重新復(fù)制到目標(biāo)存儲陣列102D1’和102D2’。新的源陣列102S’經(jīng)由通信鏈路108僅把不同的塊復(fù)制到重組目標(biāo)存儲陣列102D1’和102D2’。在分辨階段,新的源存儲陣列102S’僅發(fā)送與源相比在目標(biāo)陣列中缺乏的那些數(shù)據(jù)塊,從而使目標(biāo)與新的源同步。
在成功重組命令的典型情況中,新的源存儲陣列102S’請求和接收與哪些塊將被復(fù)制到每個目標(biāo)陣列以使目標(biāo)lun 110D1’和110D2’能夠與新的源存儲陣列102S’同步有關(guān)的信息。新的源存儲陣列102S’僅復(fù)制與各目標(biāo)lun 110D1’或110D2’不同的塊,以及扇出重組。
在重組命令無法執(zhí)行并且目標(biāo)陣列無法被訪問的例外情況中,不可訪問的目標(biāo)陣列未參與扇出重組。如果在扇出經(jīng)過修改之后,來自主機應(yīng)用的任何寫入被發(fā)送到新的源lun 110S’,則采用所述技術(shù)的一個實施例,塊副本用于在目標(biāo)陣列重新回到聯(lián)機時把不可訪問的目標(biāo)陣列修改回到扇出中。采用說明的技術(shù),扇出能夠以最大效率再同步,對于在扇出關(guān)系中最初同步的lun在不可訪問的時間周期之后重新加入扇的狀況,僅復(fù)制不同的那些塊。僅在全新的lun加入該扇的情況下,才批準(zhǔn)所有l(wèi)un塊的完全復(fù)制。該技術(shù)還包含原始源重新加入1:n-1扇以便重組1:n扇出的情況。該技術(shù)還包含新源lun見到寫操作而該扇中的一個或多個目標(biāo)lun不可訪問的情況。在所有情況中,該技術(shù)包括僅復(fù)制不同的塊的動作。
原始源102S也可為應(yīng)用于lun的寫入維護塊/序列表。所述基本塊差異記帳和更新適合于寫操作。一旦重組鏈路可工作或者原始源102S重新加入扇-在作為目標(biāo)重組之后-對重組命令的響應(yīng)在接收時可包括塊/序列號列表,它可能比較大,取決于通信丟失的持續(xù)時間。
在一個典型實施例中,與lun復(fù)制的完整性無關(guān)地選擇新的源。所選新源可能沒有與目標(biāo)陣列的一個或多個那樣最新的復(fù)制。在典型實施例中,不進行工作來獲得更完整的新源。但是,在一些實施例中,可尋求最近的信息。這類實施例可包括在新的源存儲陣列102S’中可執(zhí)行的邏輯,它適合確定目標(biāo)存儲陣列102D1’或102D2’是否具有比新的源存儲陣列102S’更加新近的狀態(tài)。在發(fā)出重組命令以及收集響應(yīng)之后,確定具有更近的狀態(tài)的目標(biāo)存儲陣列102D1’或102D2’。在lun的所有塊上具有最高塊序列號的目標(biāo)存儲陣列102D1’或102D2’為最近的。如果到任何目標(biāo)的通信中斷,則那個目標(biāo)無法參與協(xié)商。新的源存儲陣列102S’向具有最近的狀態(tài)的目標(biāo)存儲陣列發(fā)送對于目標(biāo)陣列中包含的、但新的源存儲陣列102S’中不存在的數(shù)據(jù)的請求。向目標(biāo)請求的塊是具有較高序列號的任一個。新的源存儲陣列102S’從所選目標(biāo)陣列收集lun的較新的塊,并采用響應(yīng)該請求而接收的數(shù)據(jù)來更新新的源存儲陣列102S’。
新的源陣列從所選目標(biāo)陣列收集(Lun的)較新的塊。
參照圖2,示意框圖說明適合用于冗余數(shù)據(jù)存儲系統(tǒng)200的存儲單元202的一個實施例。數(shù)據(jù)存儲系統(tǒng)200可具有很少或許多存儲單元202。存儲單元202包括存儲裝置204、適合與多個分布站點存儲單元通信的輸入/輸出(I/O)接口206以及控制器208。邏輯是在控制器208上可執(zhí)行的,它適合把存儲單元202作為扇出安排中的輔助站點來操作,并把數(shù)據(jù)從主站點存儲單元復(fù)制到存儲裝置204。邏輯還跟蹤被寫入存儲裝置204的數(shù)據(jù)的修改,并在多個分布站點存儲單元之間傳遞所跟蹤修改。邏輯還收集從多個分布站點存儲單元接收的所跟蹤變化。
存儲裝置204可能是任何適當(dāng)?shù)拇鎯橘|(zhì)裝置,例如盤陣列、光盤存儲設(shè)備、分層存儲器和/或具有存儲能力的分布式但結(jié)合控制的網(wǎng)絡(luò)。存儲裝置204至少部分配置為邏輯單元(lun)210。
在存儲單元202作為輔助站點存儲單元來操作的過程中,在控制器208上可執(zhí)行的邏輯檢測針對與主站點存儲單元存在扇出關(guān)系的邏輯單元(lun)的寫入。邏輯跟蹤寫操作寫入的邏輯單元(lun)中的塊。在一個具體實施例中,跟蹤動作可包括收集通過對存儲單元202寫入所修改的塊編號以及從主機或源發(fā)送的、表明塊內(nèi)容的唯一標(biāo)識符的序列號。所收集的塊編號和序列號可存儲在數(shù)據(jù)包中或者在所選時間上累積,并且形成可稱作“信息塊”的包組,以及例如通過異步通信直接在其它分布輔助站點存儲單元之間傳遞,從而共享所跟蹤信息。邏輯從其它輔助存儲單元接收包和/或組中的塊編號和序列號數(shù)據(jù),以及相對于存儲單元202本地的信息來分析該信息,從而確定通常在分布站點的多個輔助存儲單元之間數(shù)據(jù)內(nèi)容的差異。
存儲單元202可接收對故障轉(zhuǎn)移的命令。響應(yīng)該命令,在控制器208上可執(zhí)行的邏輯把存儲單元202作為輔助站點來操作,并且發(fā)送請求以重組連網(wǎng)到存儲單元202的扇出分布站點存儲單元。分布站點存儲單元通過發(fā)送表明遠程單元上復(fù)制的寫入的已更新塊列表來響應(yīng)該請求以便重組。存儲單元202根據(jù)已更新塊列表來確定哪個數(shù)據(jù)要發(fā)送給分布站點存儲單元,并把該數(shù)據(jù)復(fù)制到分布站點單元。所復(fù)制的數(shù)據(jù)足以創(chuàng)建來自主站點的數(shù)據(jù)(lun)的精確的逐字節(jié)復(fù)制品。
如果在故障轉(zhuǎn)移之后,存儲單元202沒有被選擇作為主存儲單元,則在控制器208上可工作的邏輯通常接收作為故障轉(zhuǎn)移的第一指示的來自發(fā)起數(shù)據(jù)重組的新的主存儲單元的信號或命令。響應(yīng)進行重組的信號,邏輯立即停止接受來自先前主存儲單元的新請求,并向新的主存儲單元發(fā)送包含原始復(fù)制流所更新的最后的塊的列表的已更新塊列表。
參照圖3,示意流程圖說明適合快速重組扇出關(guān)系以便把數(shù)據(jù)復(fù)制到多個地理位置、同時沒有風(fēng)險地維護數(shù)據(jù)的技術(shù)的一個實施例。存儲復(fù)制方法300包括在多個目標(biāo)之間復(fù)制302來自源的數(shù)據(jù),并跟蹤304多個目標(biāo)中的數(shù)據(jù)修改。修改的標(biāo)識在多個目標(biāo)陣列之間相互傳遞306。在源故障轉(zhuǎn)移事件中308,所選目標(biāo)作為新源被建立310,從而把其余目標(biāo)中的已復(fù)制數(shù)據(jù)重組312為與新源同步。通過例如用戶按下圖形用戶界面(GUI)上的按鈕或者在命令行界面(CLI)鍵入命令以激活故障轉(zhuǎn)移,通??勺鳛樾略磥斫?10所選目標(biāo)。
在故障轉(zhuǎn)移310之前在目標(biāo)之間修改數(shù)據(jù)的相互傳遞306實現(xiàn)用戶應(yīng)用遇到在涉及集線器陣列的故障之后僅存在數(shù)據(jù)的單個當(dāng)前副本的狀況的時間量的明顯減小。修改數(shù)據(jù)的傳遞306還對于源lun改進故障轉(zhuǎn)移之后的吞吐量性能,因為避免了完整數(shù)據(jù)副本。
參照圖4,示意圖說明表示存儲系統(tǒng)中數(shù)據(jù)跟蹤的一個實例的一系列塊圖400。在扇出操作開始時,當(dāng)一個或多個目標(biāo)被添加到扇出時,數(shù)據(jù)的完整副本通過通信鏈路被發(fā)送到目標(biāo),從而使源和目標(biāo)中的對應(yīng)邏輯單元(lun)中的數(shù)據(jù)同步。塊標(biāo)識符(ID)404和序列號406的完整塊圖402在開始時從源陣列發(fā)送到目標(biāo)陣列。完整拷貝在從源到目標(biāo)的通信通路上完成,使得目標(biāo)具有與源lun對應(yīng)的lun的塊編號和序列號的完整圖。lun的所有塊以二列值陣列402來表示。第一列404為塊編號。第二列406包含與塊列404中的相應(yīng)塊關(guān)聯(lián)的序列號。每一行具有不同且唯一的序列號。根據(jù)在源陣列上執(zhí)行的說明性數(shù)據(jù)跟蹤技術(shù),復(fù)制序列號是不允許的,并且不會發(fā)生。此后,當(dāng)源陣列接收寫入時,包括塊ID、數(shù)據(jù)和序列號的信息三元組被傳遞到各目標(biāo)。在進行寫入時采用新的序列號覆蓋各目標(biāo)上的塊圖中的條目。
為了說明,塊圖402表示五塊lun的極簡化實例,它在源陣列中形成,并被傳遞到一個或多個新的目標(biāo)陣列。各目標(biāo)維護與源陣列中存儲的塊圖表402關(guān)聯(lián)的表。
在一些實施例中,源上的跟蹤表可擴充,使得源對于各目標(biāo)以及對于源隨后將作為目標(biāo)重新加入扇出時的使用維護一列。列以極少或沒有附加開銷來維護,因為源在任何情況下接收關(guān)于對目標(biāo)的寫入的確認。在源上的所有目標(biāo)塊的跟蹤使源能夠重新加入扇出,而無需在不影響源lun的故障事件之后的完整拷貝。因此,說明性技術(shù)實現(xiàn)從1:n-1扇出回到1:n扇出的重組。
源陣列通常可把寫入作為寫入序列中的各個寫入發(fā)送到目標(biāo)陣列。在某個實現(xiàn)或者在一些條件下,源陣列可累積或捆綁多個寫入,并把捆綁寫入作為一個單位來發(fā)送。對于捆綁寫入的傳遞,如果同一個塊具有在該捆綁中的不止一個寫入,則只有最后的序列號及關(guān)聯(lián)數(shù)據(jù)位被發(fā)送給那個塊的目標(biāo)lun。因此,捆綁改進重復(fù)被寫入的特定塊的情況中的效率,因為那個塊的數(shù)據(jù)在構(gòu)建信息塊時僅在每個單位時間通過鏈路傳送一次。事務(wù)處理語義可用來確保目標(biāo)lun始終處于應(yīng)急一致狀態(tài)。在應(yīng)急一致狀態(tài)中,lun包含信息塊的應(yīng)用之前的精確逐字節(jié)值或者信息塊應(yīng)用之后的精確逐字節(jié)值。如果目標(biāo)lun進入一種其中已經(jīng)僅應(yīng)用部分信息塊的狀態(tài),則信息塊可能不是應(yīng)急一致的,因為寫操作沒有按照與源lun相同的順序應(yīng)用于目標(biāo)lun。雖然信息塊數(shù)據(jù)移動和應(yīng)急一致性對所說明的技術(shù)具有極少或沒有實質(zhì)影響,但事務(wù)處理語義可幫助進行關(guān)于哪個目標(biāo)被選作用于扇出的新集線器的判定。因此,組塊方法可能產(chǎn)生從不發(fā)送給目標(biāo)陣列的一些數(shù)據(jù)塊及相應(yīng)序列號,因此,這類覆蓋的序列號可能從不出現(xiàn)在任何目標(biāo)表中。這類所省略的序列號對于所說明的技術(shù)的可操作性不重要。
除了從源陣列到所有目標(biāo)陣列的更新之外,目標(biāo)陣列還經(jīng)由目標(biāo)陣列之間的彼此互連來接收更新。目標(biāo)陣列之間的相互通信還提供塊和序列號組合的更新。
塊圖408T1說明在時間T1第一目標(biāo)陣列、即目標(biāo)一的塊圖。塊圖408T1包括目標(biāo)一專有的塊ID 410和序列號412,與源陣列的塊圖402中的相應(yīng)列相似。另外,塊圖408T1還在相應(yīng)列“目標(biāo)2序列號”414和“目標(biāo)3序列號”416中保存其它互連目標(biāo)陣列、在此為目標(biāo)二和目標(biāo)三的序列號。在說明性實例中,目標(biāo)二的序列號僅對于塊三與目標(biāo)一不同。目標(biāo)三的序列號對于塊二和塊三與目標(biāo)一不同。失配可能由陣列之間的各種通信延遲或者因?qū)懭肜壱鸬年嚵械膬?nèi)部延遲而產(chǎn)生,從而使目標(biāo)的記帳視圖落后。在同步復(fù)制的情況中,最多只預(yù)期少數(shù)失配。在異步復(fù)制中,失配發(fā)生率不同,并且在一些情況中可能很大。說明性技術(shù)在故障轉(zhuǎn)移時解決失配,而不管哪個目標(biāo)lun在另一個目標(biāo)lun之前,以及不管目標(biāo)lun中任一個在后或在前相距多遠。說明性技術(shù)還使數(shù)據(jù)移動減少或最少。
各目標(biāo)維護和更新適當(dāng)lun的相似塊圖表。
在故障轉(zhuǎn)移的時間T2,發(fā)生例如至少臨時消除源站點的事件。在實例中,目標(biāo)一被選擇為新的源陣列。目標(biāo)一向目標(biāo)二和三發(fā)送“重組”命令和指令,表明目標(biāo)一作為可應(yīng)用的lun的源陣列取得控制權(quán)。目標(biāo)二和目標(biāo)三都停止接受來自原始源陣列的新寫入包,并且采用目標(biāo)已經(jīng)提交的最后一組塊編號和序列號對來響應(yīng)新的源陣列、即先前的目標(biāo)一。然后,目標(biāo)一最后一次更新表示為圖408T2的塊圖。
作為新源陣列的先前目標(biāo)一掃描塊圖表408T2,以便允許對不匹配的行條目的檢測。在說明性實例中,目標(biāo)二的塊3以及目標(biāo)三的塊2和3不匹配新源陣列的條目。因此,新的源陣列向目標(biāo)二發(fā)送包括所有數(shù)據(jù)位的塊3的內(nèi)部副本,以及向目標(biāo)三發(fā)送塊2和3的內(nèi)部副本。在完成從新源到目標(biāo)二和三的拷貝之后,目標(biāo)二和三的相應(yīng)lun包含與先前目標(biāo)一完全相同的逐塊內(nèi)容。操作返回到跟蹤狀態(tài),其中1:2扇配置替換先前的1:3配置,先前的目標(biāo)一作為新的源陣列運行。在數(shù)據(jù)拷貝之后,所有陣列處于同步。在說明性實例中,僅對不匹配的塊制作完整數(shù)據(jù)拷貝,從而消除七個匹配塊的完整拷貝。對于此具體實例,該技術(shù)僅具有不采用說明性數(shù)據(jù)跟蹤的技術(shù)的30%的拷貝負荷。在每個lun有超過五個塊的現(xiàn)實的實例中,節(jié)省明顯更高,對于大部分使用情況,與所有塊的完整拷貝相比,通常具有10%或10%以下的拷貝負荷。
該實例說明到所選目標(biāo)的故障轉(zhuǎn)移。在實現(xiàn)的另一個實施例中,可向精選目標(biāo)進行故障轉(zhuǎn)移,其中所選目標(biāo)繼承了重組扇時數(shù)據(jù)的最近副本。該技術(shù)涉及先前所述的相同情況和動作,但故障轉(zhuǎn)移是向包含最近副本的目標(biāo)、這里為目標(biāo)三進行的。塊圖表418表示最終確定表格的握手之后的1:2扇出配置的起始條件下的狀態(tài)。塊圖表418是從目標(biāo)三的角度來看的塊圖表408T2的視圖。作為新源陣列的目標(biāo)三掃描表格,并確定最高序列號包含在目標(biāo)一中。因此,目標(biāo)三請求目標(biāo)一傳送不同的每個塊。在當(dāng)前實例中,目標(biāo)三請求塊2和3的數(shù)據(jù)位。在傳送之后,目標(biāo)三具有最近的數(shù)據(jù)。通過把塊3從目標(biāo)三復(fù)制到目標(biāo)二,目標(biāo)三可按照說明性方法使目標(biāo)二等于目標(biāo)三。因此,所有目標(biāo)均包含最近的數(shù)據(jù),以及目標(biāo)三準(zhǔn)備作為新的源開始操作。
“最近的數(shù)據(jù)”的概念應(yīng)用于在故障轉(zhuǎn)移時具有活動通信鏈路的目標(biāo)。如果包含實際最近的數(shù)據(jù)的目標(biāo)因鏈路故障而不可訪問,則具有不太新近的數(shù)據(jù)、但比其它任何可訪問目標(biāo)更新近的數(shù)據(jù)的可訪問目標(biāo)被看作具有“最近的數(shù)據(jù)”。
參照圖5,示意表格圖說明適合用于在復(fù)制跟蹤期間收集數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)500的另一個實施例。指定軌道和扇區(qū)數(shù)據(jù)的說明性塊列可在一些實施例中用作描述圖4所示的塊標(biāo)識符的不同技術(shù)。數(shù)據(jù)結(jié)構(gòu)可實現(xiàn)為各種文件、表格、輔助文件等,其中包含通常經(jīng)由寫操作已訪問的塊的表格。源數(shù)據(jù)結(jié)構(gòu)502是與主存儲裝置關(guān)聯(lián)的對象或應(yīng)用。例如,源集線器維護寫入的表,并把對表的改變轉(zhuǎn)發(fā)給其它陣列或目標(biāo)。源502接收來自主機的寫入,并把寫入依次或者以信息塊形式分發(fā)給各目標(biāo),如數(shù)據(jù)結(jié)構(gòu)502S所示。目標(biāo)數(shù)據(jù)結(jié)構(gòu)504D1、504D2和504D3是分別與三個目標(biāo)存儲裝置關(guān)聯(lián)的對應(yīng)對象或應(yīng)用。目標(biāo)數(shù)據(jù)結(jié)構(gòu)504D1、504D2和504D3表示各個目標(biāo)所接收的數(shù)據(jù),它仍未提交給存儲裝置。目標(biāo)接收寫入流、例如結(jié)構(gòu)502S所示的寫入,并在接收時按次序把寫入應(yīng)用于lun。如果采用信息塊技術(shù)并且已經(jīng)出現(xiàn)塊覆蓋,則源502S捕捉對同一個塊的蓋寫作為單行,以及寫入的信息塊作為單個事務(wù)處理應(yīng)用于目標(biāo)。否則,在流式或非信息塊實現(xiàn)中,如果對單行進行寫入,塊不會被覆蓋,并且同一個塊可能以多行多次表示,則寫入可對各目標(biāo)依次應(yīng)用,以及事務(wù)處理大小為單行。各目標(biāo)通過流式或者信息塊傳送來接收結(jié)構(gòu)502S信息。各目標(biāo)接收來自源的表的變化的列表,并把已改變數(shù)據(jù)的塊和序列號的列表轉(zhuǎn)發(fā)給其它所有目標(biāo)。變化信息的列表可實時轉(zhuǎn)發(fā),或者可累積并在所選累積之后轉(zhuǎn)發(fā)。一旦目標(biāo)504D1、504D2和504D3采用順序或信息塊傳送接收到結(jié)構(gòu)502S中的數(shù)據(jù),則當(dāng)各塊或信息塊被提交到盤時,目標(biāo)向其它目標(biāo)陣列發(fā)送一組塊標(biāo)識和序列號組合。數(shù)據(jù)組合說明所提交數(shù)據(jù)的塊編號和序列號。所提交塊中的數(shù)據(jù)字節(jié)沒有從一個目標(biāo)發(fā)送到另一個,從而采用最小的目標(biāo)間帶寬利用使記帳技術(shù)高效。
對于相應(yīng)源和目標(biāo)存儲裝置中每一個,各種數(shù)據(jù)結(jié)構(gòu)包括塊字段506S、506D1、506D2和506D3;數(shù)據(jù)字段508S、508D1、508D2和508D3;以及序列字段510S、510D1、510D2和510D3。塊字段506S、506D1、506D2和506D3指定對其進行寫入的存儲介質(zhì)上的一個或多個位置,諸如邏輯單元(lun)以及軌道和扇區(qū)信息。數(shù)據(jù)字段508S、508D1、508D2和508D3表示與相應(yīng)塊字段中的相應(yīng)軌道和扇區(qū)信息對應(yīng)的緩沖數(shù)據(jù)。序列字段510S、510D1、510D2和510D3標(biāo)識源所定義的、并與相應(yīng)數(shù)據(jù)字段中列出的相應(yīng)數(shù)據(jù)以及塊字段中列出的軌道和扇區(qū)信息關(guān)聯(lián)的序列號。
在一些實施例中,數(shù)據(jù)結(jié)構(gòu)可包括確認字段,指定特定條目與其它存儲單元相關(guān)的確認。例如,確認字段中的邏輯值“一”可表示從其它輔助存儲單元接收到信號,表明特定序列號條目已經(jīng)復(fù)制到其它存儲單元。邏輯值“零”可表示沒有對特定輔助存儲單元的復(fù)制。
在示例操作中,源表明從4到9的已復(fù)制序列號。第一目標(biāo)復(fù)制與序列號4到8對應(yīng)的寫操作。第二目標(biāo)復(fù)制所有源寫入。第三目標(biāo)復(fù)制與序列號4到8對應(yīng)的寫操作。不同存儲單元之間的差異可能由鏈路的暫時不可操作性或者由可能經(jīng)由同步或異步通信進行通信的鏈路之間的定時差異所產(chǎn)生。鏈路之間的異步通信可能產(chǎn)生完成許多寫入時的差異、因而產(chǎn)生許多序列號。鏈路之間的同步通信通常最多產(chǎn)生一個寫入的完成差異。
在故障轉(zhuǎn)移狀況的情況中,根據(jù)表中的序列號的標(biāo)識把數(shù)據(jù)恢復(fù)到新源的狀況。通過為了管理哪些資源已經(jīng)見到特定塊的記帳而在存儲單元之間傳送序列號而不是數(shù)據(jù),數(shù)據(jù)通信量在說明性技術(shù)中被減少。
參照圖6A和圖6B,流程圖說明用于在源故障的情況下把扇出修改為減小的扇出比的技術(shù)的實施例。存儲復(fù)制方法600包括把數(shù)據(jù)從源復(fù)制602到多個目標(biāo),并檢測604源故障轉(zhuǎn)移狀況。根據(jù)與故障轉(zhuǎn)移狀況同時發(fā)生的狀況從多個目標(biāo)之中選擇606新源。新源發(fā)送608發(fā)起多個目標(biāo)中的數(shù)據(jù)重組的信號。
根據(jù)故障轉(zhuǎn)移時可用的信息和狀況對替代源的選擇實現(xiàn)基于諸如故障的位置和原因、執(zhí)行響應(yīng)的資源的可用性、存儲系統(tǒng)的一些部分的工作負荷之類的因素的有效響應(yīng)。從多個目標(biāo)之中對新源的同時選擇促進靈活操作,因為一直到故障轉(zhuǎn)移事件發(fā)生時最適當(dāng)?shù)捻憫?yīng)是未知的。
如圖6B所示,該方法還可包括在數(shù)據(jù)復(fù)制期間在多個目標(biāo)上分發(fā)610各個目標(biāo)的復(fù)制狀態(tài)信息。數(shù)據(jù)可采用復(fù)制狀態(tài)信息在多個目標(biāo)中重組612為與新源同步。新源中的復(fù)制狀態(tài)信息的可用性實現(xiàn)性能的改進,因為針對新源集線器lun的輸入和輸出操作在復(fù)制的重建過程中被減少或成為最少。類似地,各個目標(biāo)中的復(fù)制狀態(tài)信息的可用性實現(xiàn)性能的改進,因為針對目標(biāo)lun的輸入和輸出操作在復(fù)制的重建過程中也被減少或成為最少。
由于源以及目標(biāo)中的輸入和輸出操作不必作為重組操作的一部分來對付大量數(shù)據(jù)的復(fù)制,因此得到改進。類似地,對站點間鏈路的帶寬的性能影響在復(fù)制重建過程中被減小或變?yōu)樽钚?。該技術(shù)實現(xiàn)在源出故障時重組的有限相互通信,從而避免極大消耗帶寬和其它資源的完全拷貝。在所有情況中,性能改進也許可能是多個數(shù)量級的。因此,采用說明性技術(shù)的1:n扇出技術(shù)可能對于希望在沒有降低性能的情況下保持主機側(cè)應(yīng)用運行的高可用性、災(zāi)難容許用戶極具吸引力。
參照圖7A和圖7B,流程圖說明用于在出現(xiàn)源故障時重組扇出配置的技術(shù)的實施例。說明性源復(fù)制方法700包括把數(shù)據(jù)從源復(fù)制702到多個目標(biāo),并在目標(biāo)接收704發(fā)起數(shù)據(jù)重組的信號。在目標(biāo),對于從先前復(fù)制寫入流掛起的緩沖寫入結(jié)束706處理。目標(biāo)向新源發(fā)送708已更新塊列表。已更新塊列表包括通過復(fù)制所更新的塊的列表。
在一些實施例中,新源根據(jù)已更新塊列表來確定710要發(fā)送給目標(biāo)的數(shù)據(jù)。源把數(shù)據(jù)復(fù)制712到目標(biāo),它足以使新源與目標(biāo)同步。
在一個典型實現(xiàn)中,新源或新集線器發(fā)送標(biāo)識新源的命令,表明該存儲陣列正作為新集線器來接管。命令還請求各目標(biāo)發(fā)送標(biāo)識自目標(biāo)之間先前相互通信已經(jīng)提供序列號的基本集合以來先前沒有標(biāo)識的未決塊寫入的列表的最終序列號的列表。因此,用于重組的相互通信被減少。該命令還指定目標(biāo)停止從舊源接受任何新寫入。
在圖7B中,扇出配置在出現(xiàn)源故障時重組為最新的目標(biāo)的狀態(tài)。陣列的狀態(tài)被確定714。請求被發(fā)送到具有最近狀況的目標(biāo)。在重組命令之后,新源具有充分信息來確定哪個陣列是最近的,被定義為具有本地塊表中的最高序列號的陣列。在許多情況中,多個陣列可能具有整組陣列中“最近的”相同狀態(tài),其中之一可選擇用作最近的。新源還具有足以確定對于重組要收集哪些數(shù)據(jù)塊的信息。新源請求716并取718足以獲得最近狀況的數(shù)據(jù)塊,并采用所請求數(shù)據(jù)來更新720新源。因此,源控制源中所包含的陣列的更新。
參照圖8A和圖8B,示意框圖說明不包括所跟蹤信息的跟蹤和共享的存儲系統(tǒng)方案800。說明性方案800可想象為輪,其中,在中央具有輪轂802S,以及通信輻條從輪轂802S放射狀伸到一個或多個目標(biāo)陣列802D。輪轂802S可能是包含源邏輯單元(lun)810S的陣列。輻條是把輪轂802S連接到包含遠程lun 810D的目標(biāo)陣列802D的通信鏈路808。數(shù)據(jù)可在各通信鏈路808上同步或者異步地流動。
如圖8A所示,當(dāng)出現(xiàn)集線器陣列802S丟失或者到集線器802S的通信丟失的狀況或情況時,期望環(huán)境800將操作故障轉(zhuǎn)移到目標(biāo)陣列802D之一,從而使應(yīng)用能夠繼續(xù)進行。在傳統(tǒng)的扇出技術(shù)中,目標(biāo)陣列802D之間不存在關(guān)聯(lián)。每個目標(biāo)陣列802D僅具有與集線器802S的關(guān)系。
如圖8B所示,扇出關(guān)系因集線器802S的丟失而嘗試重組。目標(biāo)陣列802D沒有包含與哪些塊已經(jīng)或者沒有被寫入其它目標(biāo)陣列中的lun 810D有關(guān)的信息。因此,被確定為作為新集線器802S’開始操作的目標(biāo)陣列必須把可能極大的lun 810S’完全復(fù)制到其它目標(biāo)陣列802D中的每一個。
說明性結(jié)構(gòu)和技術(shù)與涉及對于重組完全拷貝的技術(shù)相比改進了復(fù)制效率,并且與不需要完全拷貝的技術(shù)相比也改進了復(fù)制效率。
說明性結(jié)構(gòu)和技術(shù)實現(xiàn)對于用作新源的任意目標(biāo)的選擇。
雖然本公開描述了各種實施例,但這些實施例要被理解為說明性的,而不是限制權(quán)利要求范圍。對所述實施例的許多變更、修改、增加和改進是可行的。例如,本領(lǐng)域的技術(shù)人員易于實現(xiàn)提供本文所公開的結(jié)構(gòu)和方法所需的步驟,并且會理解,過程參數(shù)、材料和尺寸僅作為實例給出。參數(shù)、材料和尺寸可改變,以便實現(xiàn)預(yù)期結(jié)構(gòu)以及修改,它們處于權(quán)利要求的范圍之內(nèi)。本文所公開的實施例的變更和修改也可進行,而仍然保持在以下權(quán)利要求的范圍之內(nèi)。例如,所公開的設(shè)備和技術(shù)可用于具有任何適當(dāng)數(shù)量的存儲元件的任何存儲配置中。為了說明,lun扇出表示為1:3扇出。采用所說明的結(jié)構(gòu)和技術(shù),可支持任何適當(dāng)?shù)纳瘸霰?。雖然存儲系統(tǒng)通常包括磁盤存儲元件,但是可實現(xiàn)任何適當(dāng)類型的存儲技術(shù)。該系統(tǒng)可采用各種操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)來實現(xiàn)。控制元件可實現(xiàn)為通用計算機系統(tǒng)、工作站、服務(wù)器等上的軟件或固件,但是也可在專用裝置和嵌入式系統(tǒng)中實現(xiàn)。
權(quán)利要求
1.一種適合用于冗余數(shù)據(jù)存儲系統(tǒng)(200)中的存儲單元(202),包括存儲裝置(204);輸入/輸出接口(206),耦合到所述存儲裝置(204),并適合與多個分布站點存儲單元通信;控制器(208),耦合到所述存儲裝置(204)以及所述輸入/輸出接口(206);以及在所述控制器(208)上可執(zhí)行的邏輯,適合把所述存儲單元(202)作為扇出方案中的輔助站點來操作,把數(shù)據(jù)從主站點存儲單元復(fù)制到所述存儲裝置(204),跟蹤寫入存儲裝置(204)的數(shù)據(jù)中的修改,在所述多個分布站點存儲單元之間傳遞所跟蹤修改,以及收集從所述多個分布站點存儲單元接收的所跟蹤變化。
2.如權(quán)利要求1所述的存儲單元(202),其特征在于,還包括邏輯,適合接收故障轉(zhuǎn)移命令,響應(yīng)所述故障轉(zhuǎn)移命令,把所述存儲單元(202)作為主站點來操作,向所述多個分布站點存儲單元發(fā)送重組扇出請求,根據(jù)來自所述多個分布站點存儲單元的已更新塊列表來確定要發(fā)送給所述多個分布站點存儲單元的數(shù)據(jù),以及把數(shù)據(jù)拷貝到所述多個分布站點存儲單元,所述拷貝的數(shù)據(jù)足以復(fù)制所述主站點存儲單元中的數(shù)據(jù)。
3.如權(quán)利要求1所述的存儲單元(202),其特征在于,還包括所述存儲裝置(204),至少部分配置為邏輯單元(lun);邏輯,適合檢測針對與所述主站點存儲單元存在扇出關(guān)系的邏輯單元(lun)的寫入,跟蹤存儲邏輯單元(lun)中的已修改塊,以及向所述多個分布站點存儲單元發(fā)送異步通信包;邏輯,適合收集包括一個或多個寫入所修改的塊編號以及表明塊內(nèi)容的唯一標(biāo)識符的序列號的數(shù)據(jù)包,以及通過異步通信向所述多個分布站點存儲單元發(fā)送所述數(shù)據(jù)包;邏輯,適合把多個數(shù)據(jù)包組合為包組,以及通過異步通信把所述數(shù)據(jù)包發(fā)送給所述多個分布站點存儲單元;以及邏輯,適合從所述多個分布站點存儲單元接收多個數(shù)據(jù)包和序列號,以及確定所述多個分布站點存儲單元之間的數(shù)據(jù)內(nèi)容的差異。
4.如權(quán)利要求1所述的存儲單元(202),其特征在于,還包括邏輯,適合接收發(fā)起數(shù)據(jù)重組的信號,結(jié)束從先前復(fù)制寫入流掛起的緩沖寫入的處理,并向新近作為主站點來操作的存儲單元發(fā)送已更新塊列表,所述已更新塊列表包括通過所述復(fù)制更新的塊的列表。
5.如權(quán)利要求1所述的存儲單元(202),其特征在于,還包括邏輯,適合接收故障轉(zhuǎn)移命令,從作為輔助站點存儲單元的操作重新配置為新的主站點存儲單元,以及發(fā)送信號來通知所述多個分布站點存儲單元的其余輔助站點存儲單元正在重組扇出;以及邏輯,可用于新的主站點存儲單元,并且適合確定所述多個分布站點存儲單元中的其余輔助站點存儲單元是否具有比所述新源更新近的狀態(tài);向具有更新近的狀態(tài)的輔助站點存儲單元發(fā)送請求,請求所述新的主站點存儲單元中并非最新近的數(shù)據(jù);以及采用所請求數(shù)據(jù)來更新所述新的主站點存儲單元。
6.一種存儲系統(tǒng)(100),包括多個存儲陣列(102),以1∶n扇出配置來設(shè)置;以及在所述多個存儲陣列(102)中可執(zhí)行的邏輯(104),適合跟蹤從源存儲陣列(102S)到n個目標(biāo)存儲陣列(102D1,102D2,102D3)的數(shù)據(jù)復(fù)制過程中的數(shù)據(jù)修改,在所述n個目標(biāo)存儲陣列(102D1,102D2,102D3)之間互相共享所跟蹤數(shù)據(jù)修改信息,以及通過重組為1∶n-1扇出配置來響應(yīng)故障轉(zhuǎn)移狀況,根據(jù)來自所述n個目標(biāo)存儲陣列(102D1,102D2,102D3)的互相共享的所跟蹤數(shù)據(jù)修改信息來指導(dǎo)所述重組。
7.如權(quán)利要求6所述的存儲系統(tǒng)(100),其特征在于,還包括邏輯(104),適合于通過把所述多個存儲陣列(102)配置為排除出故障的源存儲陣列(102S)并且在與故障轉(zhuǎn)移實質(zhì)上同時進行的指定中指定所述n個目標(biāo)存儲陣列(102D1,102D2,102D3)其中之一作為新的源存儲陣列(102S)來操作,從而響應(yīng)所述故障轉(zhuǎn)移狀況;以及邏輯(104),適合通過把其余n-1個目標(biāo)存儲陣列中的數(shù)據(jù)重組為與所述新的源存儲陣列一致,進一步響應(yīng)所述故障轉(zhuǎn)移狀況。
8.如權(quán)利要求6所述的存儲系統(tǒng)(100),其特征在于,還包括在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),適合檢測針對與所述源存儲陣列(102S)存在扇出關(guān)系的邏輯單元(lun)的寫入,并適合向所述多個目標(biāo)存儲陣列中的其它陣列發(fā)送異步通信包。
9.如權(quán)利要求6所述的存儲系統(tǒng)(100),其特征在于,還包括在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),適合檢測針對與所述源存儲陣列(102S)存在扇出關(guān)系的邏輯單元(lun)的寫入;收集包括一個或多個寫入所修改的塊編號以及表明塊內(nèi)容的唯一標(biāo)識符的序列號的數(shù)據(jù)包;以及通過異步通信向所述多個目標(biāo)存儲陣列中的其它陣列發(fā)送所述數(shù)據(jù)包;在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),還適合把多個數(shù)據(jù)包組合為包組,以及通過異步通信把所述包組發(fā)送給所述多個目標(biāo)存儲陣列中的其它陣列;以及在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),還適合從所述多個目標(biāo)存儲陣列中的其它陣列接收多個數(shù)據(jù)包和序列號,以及確定所述多個目標(biāo)存儲陣列之間的數(shù)據(jù)內(nèi)容的差異。
10.如權(quán)利要求6所述的存儲系統(tǒng)(100),其特征在于,還包括在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),還適合接收故障轉(zhuǎn)移命令;重新配置為新的源存儲陣列;以及發(fā)送信號以通知所述多個目標(biāo)存儲陣列中的其余目標(biāo)存儲陣列正在重組扇出;在各個目標(biāo)存儲陣列(102D1,102D2,102D3)中可執(zhí)行的邏輯(104),適合接收通知扇出重組的所述信號;結(jié)束從先前復(fù)制寫入流掛起的緩沖寫入的處理;以及向所述新的源存儲陣列發(fā)送所述目標(biāo)中的已更新塊列表,所述已更新塊列表包括通過所述復(fù)制更新的塊的列表;在所述新的源存儲陣列中可執(zhí)行的邏輯(104),適合確定從所述多個目標(biāo)存儲陣列接收的已更新塊列表中的差異;以及把數(shù)據(jù)拷貝到所述多個目標(biāo)存儲陣列,它足以使所述多個存儲陣列同步;以及在所述新的源存儲陣列中可執(zhí)行的邏輯(104),適合確定所述多個目標(biāo)存儲陣列中的一個目標(biāo)存儲陣列是否具有比所述新的源存儲陣列更新近的狀態(tài);向具有最新近的狀態(tài)的目標(biāo)存儲陣列發(fā)送對于所述目標(biāo)存儲陣列中存在、但所述新的源存儲陣列中不存在的數(shù)據(jù)的請求;以及采用響應(yīng)所述請求而接收的數(shù)據(jù)來更新所述新的源存儲陣列。
全文摘要
一種存儲復(fù)制方法包括在多個目標(biāo)之間復(fù)制來自源的數(shù)據(jù),并跟蹤目標(biāo)中的數(shù)據(jù)修改。修改的標(biāo)識在多個目標(biāo)陣列(102D1,102D2,102D3)之間相互傳遞。在源故障轉(zhuǎn)移事件中,所選目標(biāo)作為新源被建立,從而把其余目標(biāo)中的已復(fù)制數(shù)據(jù)重組為與新源同步。
文檔編號G06F11/20GK1838055SQ20061000437
公開日2006年9月27日 申請日期2006年1月27日 優(yōu)先權(quán)日2005年1月28日
發(fā)明者K·多姆 申請人:惠普開發(fā)有限公司