欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

虛擬排序的寫的制作方法

文檔序號:6656911閱讀:314來源:國知局
專利名稱:虛擬排序的寫的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機存儲設(shè)備,特別是涉及在存儲設(shè)備之間傳輸數(shù)據(jù)的領(lǐng)域。
2.背景技術(shù)主處理機系統(tǒng)可使用存儲設(shè)備保存和檢索數(shù)據(jù),存儲設(shè)備包含多個主機接口裝置(主機適配器)、磁盤驅(qū)動器、及磁盤接口裝置(磁盤適配器)。這樣的存儲設(shè)備可由麻薩諸塞州Hopkinton的伊姆西公司提供,且其在授權(quán)給Yanai等的美國專利5,206,939、授權(quán)給Galtzur等的美國專利5,778,394、授權(quán)給Vishlitzky等的美國專利5,845,147、及授權(quán)給Ofek等的美國專利5,857,208中公開。主機系統(tǒng)通過多個隨其提供的通道訪問存儲設(shè)備。主機系統(tǒng)通過通道提供數(shù)據(jù)和訪問控制信息給存儲設(shè)備,存儲設(shè)備也通過通道提供數(shù)據(jù)給主機系統(tǒng)。主機系統(tǒng)不直接尋址存儲設(shè)備的磁盤驅(qū)動器,而是訪問對主機系統(tǒng)表現(xiàn)為多個邏輯磁盤機的裝置。邏輯磁盤機可以也可不對應(yīng)于實際的磁盤驅(qū)動器。允許多個主機系統(tǒng)訪問單個存儲設(shè)備將允許主機系統(tǒng)共享保存于其中是數(shù)據(jù)。
在某些情形下,可能希望將數(shù)據(jù)從一個存儲設(shè)備復(fù)制到另一存儲設(shè)備。例如,如果主機寫數(shù)據(jù)到第一存儲設(shè)備,則可能希望將該數(shù)據(jù)復(fù)制到位于不同位置的第二存儲設(shè)備,使得當(dāng)致使第一存儲設(shè)備不能工作的災(zāi)難出現(xiàn)時主機(或另一主機)可使用第二存儲設(shè)備的數(shù)據(jù)恢復(fù)運行。這樣的性能可由麻薩諸塞州Hopkinton的伊姆西公司提供的遠程數(shù)據(jù)鏡像(RDF)產(chǎn)品提供。具有RDF功能的第一存儲設(shè)備(標(biāo)注為“主存儲設(shè)備”或“R1”)連接到主機。一個或多個其它存儲設(shè)備(稱為“輔助存儲設(shè)備”或“R2”)接收由主機寫到主存儲設(shè)備的數(shù)據(jù)的拷貝。主機與主存儲設(shè)備直接相互作用,但主存儲設(shè)備的任何數(shù)據(jù)變化均使用RDF自動提供給一個或多個輔助存儲設(shè)備。主和輔助存儲設(shè)備可由數(shù)據(jù)鏈路連接,數(shù)據(jù)鏈路如ESCON鏈路、光纖通道鏈路、和/或吉比特以太網(wǎng)鏈路。RDF功能可使用在每一存儲設(shè)備處提供的RDF適配器(RA)而得以促進。
RDF允許同步數(shù)據(jù)傳輸,其中在數(shù)據(jù)從主機寫到主存儲設(shè)備之后,該數(shù)據(jù)通過使用RDF從主存儲設(shè)備傳輸?shù)捷o助存儲設(shè)備,由輔助存儲設(shè)備向主存儲設(shè)備確認數(shù)據(jù)的接收,主存儲設(shè)備接下來將寫確認提供回主機。因此,在同步模式中,主機不從主存儲設(shè)備接收寫確認,直到對輔助存儲設(shè)備的RDF傳輸已被完成并由輔助存儲設(shè)備確認為止。
同步RDF系統(tǒng)的缺點在于每一寫操作的等待時間將由于等待RDF傳輸?shù)拇_認而增加。在主存儲設(shè)備和輔助存儲設(shè)備之間距離較長時,該問題更加突出。由于傳輸延遲,進行RDF傳輸及隨后在傳輸完成后等待確認回饋所需要的時延可能是不可接受的。
也可能以半同步方式使用RDF,在這種情況下,數(shù)據(jù)從主機寫到主存儲設(shè)備,主存儲設(shè)備立即確認寫,接著,同時開始將數(shù)據(jù)傳輸?shù)捷o助存儲設(shè)備的步驟。因此,對于單一數(shù)據(jù)傳輸,該方案克服了以同步方式使用RDF的一些缺點。然而,對于數(shù)據(jù)完整性目的,半同步傳輸不允許主存儲設(shè)備傳輸數(shù)據(jù)給輔助存儲設(shè)備,直到先前的傳輸由輔助存儲設(shè)備確認為止。因此,與以同步方式使用RDF相關(guān)聯(lián)的瓶頸在于由一次重復(fù)造成的簡單的延遲,因為第二數(shù)據(jù)量的傳輸不會發(fā)生,直到先前數(shù)據(jù)的傳輸為輔助存儲設(shè)備確認為止。
另一種可能是使主機以異步方式寫數(shù)據(jù)到主存儲設(shè)備并使主存儲設(shè)備在背后將數(shù)據(jù)復(fù)制到輔助存儲設(shè)備。后臺復(fù)制包括順序輪轉(zhuǎn)通過主存儲設(shè)備的每一磁軌,當(dāng)確定特定的數(shù)據(jù)塊自上次復(fù)制該數(shù)據(jù)塊后已被修改時,數(shù)據(jù)塊被從主存儲設(shè)備傳輸?shù)捷o助存儲設(shè)備。盡管該機制可減輕與同步及半同步數(shù)據(jù)傳輸方式相關(guān)的等待時間問題,但困難依然存在,因為不能保證主存儲設(shè)備和輔助存儲設(shè)備之間的數(shù)據(jù)一致性。如果發(fā)生問題,如主系統(tǒng)不能工作,則輔助系統(tǒng)可能以使得數(shù)據(jù)不可用的無序變化結(jié)束工作。
所提出的解決該問題的方案為對稱自動復(fù)制(SAR)方法,其于未決美國專利申請10/224,918和10/225,021中描述,兩申請均于2002年8月21日申請。SAR使用可鏡像標(biāo)準(zhǔn)邏輯設(shè)備的設(shè)備(BCV)。BCV設(shè)備還可在鏡像后從其標(biāo)準(zhǔn)邏輯設(shè)備分離并可在分離后重新同步(即重新建立為鏡像)到標(biāo)準(zhǔn)邏輯設(shè)備。然而,使用SAR方法要求大量連續(xù)分離和重新同步BCV設(shè)備的輔助操作。SAR方法還使用主機控制和管理,其依賴于控制主機運行。此外,SAR方法的實際實施的輪轉(zhuǎn)時間為20-30分鐘,因此,當(dāng)RDF鏈路和/或主設(shè)備出故障時,可能丟失的數(shù)據(jù)量為20-30分鐘的數(shù)據(jù)價值。
因此,希望具有這樣一種RDF系統(tǒng),其具有上述不同技術(shù)中的每一種的部分有益品質(zhì),同時還減少了缺點。該系統(tǒng)對每一主機寫可呈現(xiàn)低等待時間性,不管主設(shè)備和輔助設(shè)備之間的距離的長短如何,并可在出現(xiàn)故障時提供輔助設(shè)備的一致性(可復(fù)原性)。

發(fā)明內(nèi)容
根據(jù)本發(fā)明,處理對數(shù)據(jù)存儲設(shè)備進行排序的寫包括將第一數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中并使用散列表在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。處理排序的寫還可包括保存指向包含第一數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表。處理排序的寫還可包括將第二數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中并接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)已被傳給數(shù)據(jù)存儲設(shè)備的消息。處理排序的寫還可包括,響應(yīng)于接收消息,將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備。處理排序的寫還可包括使用散列表在包含來自第二數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。處理排序的寫還包括保存指向包含第二數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表。散列表可以是指向高速緩存槽的指針表。處理排序的寫還可包括,響應(yīng)于碰撞,散列表的項包含指向第一槽的指針,及第一槽包含指向第二槽的指針。
進一步根據(jù)本發(fā)明,處理對數(shù)據(jù)存儲設(shè)備進行排序的寫的計算機軟件包括將第一數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中的可執(zhí)行代碼,及使用散列表在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)的可執(zhí)行代碼。計算機軟件還可包括保存指向包含第一數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表的可執(zhí)行代碼。計算機軟件還可包括將第二數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中的可執(zhí)行代碼,及接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)已被傳給數(shù)據(jù)存儲設(shè)備的消息的可執(zhí)行代碼。計算機軟件還可包括,響應(yīng)于接收消息而將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備的可執(zhí)行代碼。計算機軟件還可包括使用散列表在包含來自第二數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)的可執(zhí)行代碼。計算機軟件還包括保存指向包含第二數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表的可執(zhí)行代碼。散列表可以是指向高速緩存槽的指針表。計算機軟件還可包括,響應(yīng)于碰撞,將指向第一槽的指針提供為散列表的項及在第一槽中提供指向第二槽的指針的可執(zhí)行代碼。
進一步根據(jù)本發(fā)明,數(shù)據(jù)存儲設(shè)備包括至少一包含數(shù)據(jù)的磁盤驅(qū)動器、連到至少一磁盤驅(qū)動器從而接收將被保存在至少一磁盤驅(qū)動器上的數(shù)據(jù)的至少一主機適配器、及連到至少一磁盤驅(qū)動器及至少一主機適配器的至少一遠程適配器,該遠程適配器接收將被保存在數(shù)據(jù)存儲設(shè)備上的數(shù)據(jù),其中數(shù)據(jù)存儲設(shè)備將第一數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中,并使用散列表在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。數(shù)據(jù)存儲設(shè)備可保存指向包含第一數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表。數(shù)據(jù)存儲設(shè)備可將第二數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中,并接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)均已傳給數(shù)據(jù)存儲設(shè)備的消息。響應(yīng)于接收所述消息,數(shù)據(jù)存儲設(shè)備可將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備。
附圖簡要說明

圖1為連同在此描述的系統(tǒng)使用的主機、本地存儲設(shè)備及遠程數(shù)據(jù)存儲設(shè)備的示意圖。
圖2為連同在此描述的系統(tǒng)使用的主機、本地存儲設(shè)備及遠程數(shù)據(jù)存儲設(shè)備之間的數(shù)據(jù)流的示意圖。
圖3為根據(jù)在此描述的系統(tǒng),示出用于構(gòu)建和利用本地存儲設(shè)備上的數(shù)據(jù)塊的項目的示意圖。
圖4示出了連同在此描述的系統(tǒng)使用的槽的數(shù)據(jù)結(jié)構(gòu)。
圖5為根據(jù)在此描述的系統(tǒng),響應(yīng)于主機的寫,主機適配器(HA)的操作流程圖。
圖6為根據(jù)在此描述的系統(tǒng),將數(shù)據(jù)從本地存儲設(shè)備傳輸?shù)綌?shù)據(jù)存儲設(shè)備的流程圖。
圖7為根據(jù)在此描述的系統(tǒng),示出用于構(gòu)建和利用遠程存儲設(shè)備上的數(shù)據(jù)塊的項目的示意圖。
圖8為根據(jù)在此描述的系統(tǒng),由遠程存儲設(shè)備執(zhí)行的、與從本地存儲設(shè)備接收提交指示符有關(guān)的步驟的流程圖。
圖9為根據(jù)在此描述的系統(tǒng),將所傳輸?shù)臄?shù)據(jù)保存在遠程存儲設(shè)備中的流程圖。
圖10為根據(jù)在此描述的系統(tǒng),所執(zhí)行的與本地存儲設(shè)備增加序號有關(guān)的步驟的流程圖。
圖11為根據(jù)在此描述的系統(tǒng)的另一實施例,用于構(gòu)建和利用本地存儲設(shè)備上的數(shù)據(jù)塊的項目的示意圖。
圖12為根據(jù)在此描述的系統(tǒng)的另一實施例,響應(yīng)于主機的寫,主機適配器(HA)的操作流程圖。
圖13為根據(jù)在此描述的系統(tǒng)的另一實施例,將數(shù)據(jù)從本地存儲設(shè)備傳輸?shù)竭h程存儲設(shè)備的流程圖。
圖14為根據(jù)在此描述的系統(tǒng),用于構(gòu)造和操縱遠程存儲設(shè)備上的數(shù)據(jù)塊的項目的示意圖。
圖15為根據(jù)在此描述的系統(tǒng),用于將邏輯設(shè)備位置映射到包含遠程存儲設(shè)備接收的數(shù)據(jù)的槽的表的簡圖。
圖16為根據(jù)在此描述的系統(tǒng),示出了用于將邏輯設(shè)備位置映射到包含遠程存儲設(shè)備接收的數(shù)據(jù)的槽的表的另一實施例。
具體實施例方式
參考圖1,圖表20示出了主機22、本地存儲設(shè)備24和遠程存儲設(shè)備26之間的關(guān)系。主機22經(jīng)主機適配器(HA)28從本地存儲設(shè)備讀數(shù)據(jù)及寫數(shù)據(jù)到本地存儲設(shè)備,主機適配器便于主機22和本地存儲設(shè)備24之間的連接。盡管圖表20僅示出了一個主機22和一個HA28,本領(lǐng)域一般技術(shù)人員可以意識到的是,可使用多個HA,且一個或多個HA可有一個或多個主機與其連接。
來自本地存儲設(shè)備24的數(shù)據(jù)經(jīng)RDF鏈路29復(fù)制到遠程存儲設(shè)備26以使遠程存儲設(shè)備26上的數(shù)據(jù)與本地存儲設(shè)備24上的數(shù)據(jù)一樣。盡管只示出了一個鏈路29,在存儲設(shè)備24、26之間及在存儲設(shè)備24、26之一或二者與其它存儲設(shè)備(未示出)之間具有另外的鏈路是可能的。注意,在從本地存儲設(shè)備24到遠程存儲設(shè)備26的數(shù)據(jù)傳輸之間可能有時間延遲,從而遠程存儲設(shè)備26可能,在某些時間點,某些數(shù)據(jù)與本地存儲設(shè)備上的數(shù)據(jù)不一樣。使用RDF的通信在美國專利5,742,792中描述,其通過引用組合于此。
本地存儲設(shè)備24包括第一多個RDF適配器單元(RA)30a、30b、30c,遠程存儲設(shè)備26包括第二多個RA32a-32c。RA30a-30c、32a-32c均連接到RDF鏈路29且均類似于主機適配器28,但用于在存儲設(shè)備24、26之間傳輸數(shù)據(jù)。連同RA30a-30c、32a-32c使用的軟件將在下文中詳細描述。
存儲設(shè)備24、26可包括一個或多個磁盤,每一磁盤包含保存在每一存儲設(shè)備24、26上的數(shù)據(jù)的不同部分。圖1示出了存儲設(shè)備24包括多個磁盤33a、33b、33c,及存儲設(shè)備26包括多個磁盤34a、34b、34c。在此描述的RDF功能可被應(yīng)用,使得本地存儲設(shè)備24的磁盤33a-33c的至少一部分的數(shù)據(jù)可使用RDF復(fù)制到遠程存儲設(shè)備26的磁盤34a-34c的至少一部分中。存儲設(shè)備24、26的其它數(shù)據(jù)不在存儲設(shè)備24、26之間進行復(fù)制是可能的,因而不完全相同。
磁盤33a-33c中的每一個被連接到對應(yīng)的磁盤適配器單元(DA)35a、35b、35c,其提供數(shù)據(jù)給磁盤33a-33c中的對應(yīng)磁盤并從磁盤33a-33c中的對應(yīng)磁盤接收數(shù)據(jù)。類似地,遠程存儲設(shè)備26的多個DA36a、36b、36c均用于提供數(shù)據(jù)給磁盤34a-34c中的對應(yīng)磁盤并從磁盤34a-34c中的對應(yīng)磁盤接收數(shù)據(jù)。在本地存儲設(shè)備24的DA35a-35c、HA28和RA30a-30c之間存在內(nèi)部數(shù)據(jù)通路。類似地,在遠程存儲設(shè)備的DA36a-36c和RA32a-32c之間也存在內(nèi)部數(shù)據(jù)通路。注意,在其它實施例中,DA服務(wù)于一個以上的磁盤是可能的,且一個以上的DA服務(wù)于一個磁盤也是可能的。
本地存儲設(shè)備24還包括全局存儲器37,其可用于幫助在DA35a-35c、HA28和RA30a-30c之間的數(shù)據(jù)傳輸。存儲器37可包含將由DA35a-35c、HA28和RA30a-30c中的一個或多個執(zhí)行的任務(wù),及包含用于從磁盤33a-33c中的一個或多個取回的數(shù)據(jù)的高速緩存器。類似地,遠程存儲設(shè)備26包括全局存儲器38,其可包含將由DA36a-36c和RA32a-32c中的一個或多個執(zhí)行的任務(wù),及包含用于從磁盤34a-34c中的一個或多個取回的數(shù)據(jù)的高速緩存器。存儲器37、38的使用將在下文中詳細描述。
本地存儲設(shè)備24中對應(yīng)于磁盤33a-33c的存儲空間可被再分為多個卷或邏輯設(shè)備。邏輯設(shè)備可以也可不對應(yīng)于磁盤33a-33c的物理存儲空間。因而,例如,磁盤33a可包含多個邏輯設(shè)備,或者單個邏輯設(shè)備可橫跨兩個磁盤33a、33b。類似地,遠程存儲設(shè)備26的包括磁盤34a-34c的存儲空間可被再分為多個卷或邏輯設(shè)備,其中每一邏輯設(shè)備可以也可不對應(yīng)于磁盤34a-34c中的一個或多個。
假設(shè)在本地存儲設(shè)備24和遠程存儲設(shè)備26的部分之間進行映射的RDF包括,在遠程存儲設(shè)備26上建立邏輯設(shè)備,其是對本地存儲設(shè)備24上的邏輯設(shè)備的遠程鏡像。主機22從本地存儲設(shè)備24上的邏輯設(shè)備讀數(shù)據(jù)并寫數(shù)據(jù)到該邏輯設(shè)備,且RDF映射使得已修改的數(shù)據(jù)將通過使用RA30a-30c、32a-32c和RDF鏈路而從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。在穩(wěn)態(tài)工作情況下,遠程存儲設(shè)備26上的邏輯設(shè)備包含的數(shù)據(jù)與本地存儲設(shè)備24上的邏輯設(shè)備的數(shù)據(jù)完全一樣。本地存儲設(shè)備24上為主機22所訪問的邏輯設(shè)備被稱為“R1卷”(或“R1”),而遠程存儲設(shè)備26上包含R1卷上的數(shù)據(jù)的拷貝的邏輯設(shè)備被稱為“R2卷”(或“R2”)。因此,主機從R1卷讀數(shù)據(jù)并將數(shù)據(jù)寫到R1卷,及RDF處理從R1卷到R2卷的數(shù)據(jù)的自動復(fù)制和更新。
參考圖2,其示出了從主機22到本地存儲設(shè)備24和遠程存儲設(shè)備26的數(shù)據(jù)通路。如本地存儲設(shè)備24的數(shù)據(jù)元51所示,從主機22寫到本地存儲設(shè)備24的數(shù)據(jù)被本地保存。由主機22寫到本地存儲設(shè)備24的數(shù)據(jù)還被本地存儲設(shè)備24保持并由本地存儲設(shè)備24經(jīng)鏈路29發(fā)送給遠程存儲設(shè)備26。
在在此描述的系統(tǒng)中,主機22的每一數(shù)據(jù)寫(如記錄、多個記錄、磁軌等的寫)均被分配以序號。序號可在與寫相關(guān)聯(lián)的適當(dāng)數(shù)據(jù)字段中提供。在圖2中,主機22的寫被示為被分配以序號N。由主機執(zhí)行的、被分配以序號N的所有寫均被收集在一個數(shù)據(jù)塊52中。數(shù)據(jù)塊52代表由主機22執(zhí)行的、幾乎在同時發(fā)生的多個單獨的寫。
通常,本地存儲設(shè)備24積聚一個序號的數(shù)據(jù)塊,同時將先前積聚的數(shù)據(jù)塊(具有在前的序號)傳輸給遠程存儲設(shè)備26。因而,當(dāng)本地存儲設(shè)備24正積聚來自主機的、被分配以序號N的寫時,已發(fā)生的、在前序號(N-1)的寫由本地存儲設(shè)備24經(jīng)鏈路29傳輸給遠程存儲設(shè)備26。數(shù)據(jù)塊54代表來自主機22的、被分配以序號N-1的、尚未傳輸給遠程存儲設(shè)備26的寫。
遠程存儲設(shè)備26從對應(yīng)于被分配以序號N-1的寫的數(shù)據(jù)塊接收數(shù)據(jù)并為具有序號N-1的主機寫建立新的數(shù)據(jù)塊56。數(shù)據(jù)可使用適當(dāng)?shù)腞DF協(xié)議進行傳輸,其確認跨鏈路29發(fā)送的數(shù)據(jù)。當(dāng)遠程存儲設(shè)備26已從數(shù)據(jù)塊54接收所有的數(shù)據(jù)時,本地存儲設(shè)備24發(fā)送提交信息給遠程存儲設(shè)備26以提交被分配以N-1序號的所有數(shù)據(jù),其對應(yīng)于數(shù)據(jù)塊56。通常,一旦對應(yīng)于特定序號的數(shù)據(jù)塊被提交,則數(shù)據(jù)塊可被寫到邏輯存儲設(shè)備。這在圖2中用數(shù)據(jù)塊58圖示,其對應(yīng)于被分配以序號N-2(即,主機22到本地存儲設(shè)備24的寫正使用的當(dāng)前序號之前的第二個序號)的寫。在圖2中,數(shù)據(jù)塊58被示出為正被寫到數(shù)據(jù)元62,其代表遠程存儲設(shè)備26的磁盤存儲。因而,遠程存儲設(shè)備26正接收和積聚對應(yīng)于序號N-1的數(shù)據(jù)塊56,同時對應(yīng)于在前序號(N-2)的數(shù)據(jù)塊58正被寫到遠程存儲設(shè)備26的磁盤存儲,如數(shù)據(jù)元62所示。在一實施例中,數(shù)據(jù)塊58的數(shù)據(jù)因為寫(但不是必需立即寫)而被標(biāo)記,而數(shù)據(jù)塊56的數(shù)據(jù)則未被標(biāo)記。
因此,在運行中,主機寫數(shù)據(jù)到本地存儲設(shè)備24,該數(shù)據(jù)被本地保存在數(shù)據(jù)元51中并被積聚在數(shù)據(jù)塊52中。一旦特定序號的所有數(shù)據(jù)均已被積聚(在本文的其它地方描述),本地存儲設(shè)備24遞增序號。對應(yīng)于小于當(dāng)前序號的序號的數(shù)據(jù)塊54的數(shù)據(jù)經(jīng)鏈路29從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。數(shù)據(jù)塊58對應(yīng)于已由本地存儲設(shè)備24通過發(fā)送消息給遠程存儲設(shè)備26進行提交的序號的數(shù)據(jù)。數(shù)據(jù)塊58的數(shù)據(jù)被寫到遠程存儲設(shè)備26的磁盤存儲。
應(yīng)注意的是,在數(shù)據(jù)塊52、54、56、58特定之一內(nèi)的寫不是必須被排序。然而,如本文中其它地方所詳細描述的,在開始對應(yīng)于序號N-1的數(shù)據(jù)塊54、56的任何寫之前,對應(yīng)于序號N-2的數(shù)據(jù)塊58的每一寫均已開始。此外,在開始對應(yīng)于序號N的數(shù)據(jù)塊52的任何寫之前,對應(yīng)于序號N-1的數(shù)據(jù)塊54、56的每一寫均已開始。因此,如果本地存儲設(shè)備24和遠程存儲設(shè)備26之間通信失敗,遠程存儲設(shè)備26可簡單地結(jié)束最后提交的數(shù)據(jù)塊(在圖2的例子中為數(shù)據(jù)塊58)的寫,并可被保證遠程存儲設(shè)備26處的數(shù)據(jù)的狀態(tài)被排序,其中數(shù)據(jù)元62包含在某一時間點之前開始的所有寫且不包含該時間點之后開始的寫。因而,R2總是包含R1的即時拷貝且從R2設(shè)備重新建立一致的映射是可能的。
參考圖3,圖表70示出了用于構(gòu)建和保持數(shù)據(jù)塊52、54的項目。標(biāo)準(zhǔn)邏輯設(shè)備72包含由主機22寫入的數(shù)據(jù)并對應(yīng)于圖2的數(shù)據(jù)元51和圖1的磁盤33a-33c。標(biāo)準(zhǔn)邏輯設(shè)備72包含由主機22寫到本地存儲設(shè)備24的數(shù)據(jù)。
兩個指針的鏈表74、76與標(biāo)準(zhǔn)邏輯設(shè)備72一起使用。鏈表74、76對應(yīng)于可被保存在本地存儲設(shè)備24的存儲器37中的數(shù)據(jù)。鏈表74包含多個指針81-85,每一指針指向與本地存儲設(shè)備24一起使用的高速緩存器88的槽。類似地,鏈表76包含多個指針91-95,每一指針指向高速緩存器88的槽。在一些實施例中,高速緩存器88可被提供在本地存儲設(shè)備24的存儲器37中。高速緩存器88包含多個緩存槽102-104,其可連同向標(biāo)準(zhǔn)邏輯設(shè)備72寫一起使用,同時,可連同鏈表74、76一起使用。
鏈表74、76中的每一個均可用于數(shù)據(jù)塊52、54之一,使得鏈表74可對應(yīng)于序號N的數(shù)據(jù)塊52,而鏈表76可對應(yīng)于序號N-1的數(shù)據(jù)塊54。因而,當(dāng)數(shù)據(jù)由主機22寫到本地存儲設(shè)備24時,數(shù)據(jù)被提供給高速緩存器88,在某些情況下(在本文其它地方描述),鏈表74的適當(dāng)指針被產(chǎn)生。應(yīng)注意,數(shù)據(jù)將不會從高速緩存器88去除,直到數(shù)據(jù)被降級(destage)到標(biāo)準(zhǔn)邏輯設(shè)備72且數(shù)據(jù)不再被鏈表74的任一指針81-85指向為止,如本文其它地方所述。
在在此的實施例中,鏈表74、76之一被視為“活動態(tài)”,而另一個被視為“非活動態(tài)”。因此,當(dāng)序號N為偶數(shù)時,鏈表74可以是活動態(tài),而鏈表76是非活動態(tài)。鏈表74、76中的活動態(tài)鏈表處理來自主機22的寫,而非活動態(tài)鏈表對應(yīng)于正從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26的數(shù)據(jù)。
在由主機22寫的數(shù)據(jù)通過使用鏈表74、76中的活動態(tài)鏈表進行積聚時(對于序號N),對應(yīng)于鏈表74、76中的非活動態(tài)鏈表的數(shù)據(jù)(對于在前的序號N-1)被從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。RA30a-30c使用鏈表74、76確定數(shù)據(jù)從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。
一旦對應(yīng)于鏈表74、76之一中的指針的特定指針的數(shù)據(jù)已被傳輸給遠程存儲設(shè)備26,指針中的特定指針可從鏈表74、76中的適當(dāng)鏈表去除。此外,假如槽中的數(shù)據(jù)不再因其它目的需要(如降級到標(biāo)準(zhǔn)邏輯設(shè)備72),數(shù)據(jù)還可被標(biāo)記以從高速緩存器88去除(即槽可被返回到槽池以用于隨后的、不相干的使用)。一機制可被用于確保數(shù)據(jù)不被從高速緩存器88去除,直到所有設(shè)備不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568、及2001年7月7日申請的美國專利申請09/850,551中有所描述,二者均通過引用組合于此。
參考圖4,槽120,與高速緩存器88的槽102-104之一類似,包括標(biāo)題122和數(shù)據(jù)124。標(biāo)題122對應(yīng)于系統(tǒng)用以管理槽120的內(nèi)務(wù)信息。數(shù)據(jù)124為來自磁盤的、正被(暫時)保存在槽120中的相應(yīng)數(shù)據(jù)。標(biāo)題122中的信息包括指回到磁盤的指針、時間標(biāo)簽等。
標(biāo)題122還包括與在此描述的系統(tǒng)一起使用的緩存標(biāo)簽126。在在此的實施例中,緩存標(biāo)簽126為8個字節(jié)。其中兩個字節(jié)為“密碼”,其表明槽120是否正由在此描述的系統(tǒng)使用。在其它實施例中,密碼可以是一個字節(jié),而其后的字節(jié)用于填充。如本文其它地方所描述的,等于特定值的兩字節(jié)密碼(或一字節(jié))表明槽120被鏈表74、76的至少一項指向。不等于特定值的密碼表明槽120未被鏈表74、76的項指向。密碼的使用將在本文其它地方描述。
緩存標(biāo)簽126還包括一兩字節(jié)字段,其指明槽120的數(shù)據(jù)124的序號(如N、N-1、N-2等)。如本文其它地方所描述的,緩存標(biāo)簽126的序號字段可用于幫助在此描述的處理。緩存標(biāo)簽126的其余四個字節(jié)可用于指針,如本文其它地方所描述的那樣。當(dāng)然,序號的兩個字節(jié)和指針的四個字節(jié)僅在密碼等于特定值時是有效的,其中特定值表明槽120被列表74、76之一中的至少一項指向。
參考圖5,流程圖140示出了連同主機22執(zhí)行寫操作,由HA28執(zhí)行的步驟。當(dāng)然,當(dāng)主機22執(zhí)行寫時,處理出現(xiàn)以用一般方式處理寫,而不管數(shù)據(jù)是否是R1/R2 RDF組的一部分。例如,當(dāng)主機22對磁盤的一部分寫數(shù)據(jù)時,對緩存槽的寫發(fā)生,其最后被降級到磁盤。緩存槽或可以是新的緩存槽,或可以是已經(jīng)存在的、連同先前對同一磁軌進行的讀和/或?qū)懖僮鳟a(chǎn)生的緩存槽。
處理開始于第一步驟142,其中對應(yīng)于寫的槽被鎖定。在在此的實施例中,高速緩存器88的每一槽102-104對應(yīng)于標(biāo)準(zhǔn)邏輯設(shè)備上的數(shù)據(jù)磁道。在步驟142鎖定槽阻止另外的過程在HA28執(zhí)行的、對應(yīng)于流程圖140的步驟的處理期間在相應(yīng)的槽上運行。
在步驟142之后是步驟144,其中序號N的值被設(shè)定。如本文別處所描述的,在步驟144獲得的序號的值在HA28執(zhí)行的整個寫操作期間均被保持,同時槽被鎖定。如本文別處所描述的,序號被分配給每一寫以設(shè)定寫屬于數(shù)據(jù)塊52、54中的哪一個。主機22執(zhí)行的寫被分配以當(dāng)前序號。單一寫操作始終保持同一序號是有用的。
在步驟144之后是測定步驟146,其確定緩存槽的密碼字段是否有效。如上所述,在此描述的系統(tǒng)將密碼字段設(shè)定為預(yù)先確定的值以表明緩存槽已經(jīng)在指針的鏈表74、76之一中。如果在測定步驟146確定密碼字段無效(表明槽是新的且沒有列表74、76的指針指向該槽),則控制從步驟146轉(zhuǎn)到步驟148,新槽的緩存標(biāo)簽被設(shè)定,其中將密碼設(shè)定為預(yù)先確定的值、將序號字段設(shè)定為N、將指針字段設(shè)定為空。在其它實施例中,指針字段可被設(shè)定為指向槽本身。
在步驟148之后是步驟152,指向新槽的指針被添加到指針列表74、76中的活動態(tài)列表。在在此的一實施例中,列表74、76為循環(huán)雙向鏈表,且新指針被以傳統(tǒng)方式添加到循環(huán)雙向鏈表中。當(dāng)然,其它適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)也可用于管理列表74、76。在步驟152之后是步驟154,其中標(biāo)志被設(shè)定。在步驟154,RDF_WP標(biāo)志(RDF寫懸掛標(biāo)志)被設(shè)定以表明該槽需要通過使用RDF傳輸給遠程存儲設(shè)備26。此外,在步驟154,IN_CACHE標(biāo)志被設(shè)定以表明該槽需要被降級到標(biāo)準(zhǔn)邏輯設(shè)備72。在步驟154之后是步驟156,由主機22和HA28寫的數(shù)據(jù)被寫到該槽中。在步驟156之后是步驟158,該槽被解鎖。在步驟158之后,處理結(jié)束。
如果在測定步驟146確定槽的密碼字段有效(表明該槽已經(jīng)被列表74、76的至少一指針指向),則控制從步驟146轉(zhuǎn)到測定步驟162,其確定該槽的序號字段是否等于當(dāng)前序號N。應(yīng)注意,對于具有有效密碼的槽的序號字段有兩種有效的可能性。序號字段等于N(當(dāng)前序號)是可能的。這在槽對應(yīng)于具有序號N的在前寫的情況下發(fā)生。另一種可能性是序號字段等于N-1。這在槽對應(yīng)于具有序號N-1的在前寫的情況下發(fā)生。序號字段的任何其它值均是無效的。因此,對于某些實施例,在步驟162中包括錯誤/有效性檢查或在單獨的步驟中進行錯誤/有效性檢查是可能的。這樣的錯誤可以任何適當(dāng)?shù)姆绞教幚恚淇砂ㄌ峁┫⒔o用戶。
如果在測定步驟162確定槽的序號字段中的值等于當(dāng)前序號N,則不要求特殊的處理且控制從步驟162轉(zhuǎn)到步驟156,如上所述,數(shù)據(jù)被寫到槽中。否則,如果序號字段的值為N-1(唯一另外的有效值),則控制從步驟162轉(zhuǎn)到步驟164,新槽被獲得。在步驟164獲得的新槽可用于保存正被寫的數(shù)據(jù)。
在步驟164之后是步驟166,來自舊槽的數(shù)據(jù)被復(fù)制到小步驟164獲得的新槽。應(yīng)注意,所復(fù)制的數(shù)據(jù)包括RDF_WP標(biāo)志,其應(yīng)在該槽被第一次創(chuàng)建時已被設(shè)定(步驟154)。在步驟166之后是步驟168,新槽的緩存標(biāo)簽被設(shè)定,其將密碼字段設(shè)定為適當(dāng)?shù)闹怠⑿蛱栕侄卧O(shè)定為當(dāng)前序號N、及將指針字段設(shè)定為指向舊槽。在步驟168之后是步驟172,指向新槽的指針被添加到鏈表74、76中的活動態(tài)鏈表。在步驟172之后是步驟156,如上所述,數(shù)據(jù)被寫到槽中,在該例子中,其是新槽。
參考圖6,流程圖200示出了連同RA30a-30c掃描鏈表72、74中的非活動態(tài)鏈表所執(zhí)行的步驟以將RDF數(shù)據(jù)從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。如上所述,當(dāng)N循環(huán)正由主機使用鏈表72、74中的活動態(tài)鏈表寫到R1設(shè)備時,鏈表72、74中的非活動態(tài)鏈表指向?qū)?yīng)于R1設(shè)備的N-1循環(huán)的槽。
處理開始于第一步驟202,其確定在列表72、74的非活動態(tài)表中是否有任何項。當(dāng)數(shù)據(jù)被傳輸時,相應(yīng)的項被從列表72、74的非活動態(tài)列表中去除。此外,新的寫被提供給列表72、74中的活動態(tài)列表且通常不提供給列表72、74中的非活動態(tài)列表。因此,列表72、74中的非活動態(tài)列表在某些時間不包含數(shù)據(jù)是可能的(也是所希望的,如本文別處所述的)。如果在步驟202確定沒有數(shù)據(jù)將被傳輸,則列表72、74中的非活動態(tài)列表繼續(xù)被輪詢直到數(shù)據(jù)可用為止。用于發(fā)送的數(shù)據(jù)變得可用同時循環(huán)切換(在本文別處描述),其中列表72、74中的非活動態(tài)列表變成列表72、74中的活動態(tài)列表,反之亦然。
如果在步驟202確定有數(shù)據(jù)可用于發(fā)送,則控制從步驟202轉(zhuǎn)到步驟204,其中槽被驗證為是正確的。在步驟204執(zhí)行的處理是隨意的“精神健全檢查”,其可包括驗證密碼字段是正確的及驗證序號字段是正確的。如果在槽中有不正確的(意外的)數(shù)據(jù),則可執(zhí)行錯誤處理,其可包括通知用戶該錯誤及可能的錯誤校正處理。
在步驟204之后是步驟212,數(shù)據(jù)以傳統(tǒng)方式經(jīng)RDF進行發(fā)送。在在此的一實施例中,整個槽均未被傳輸。而是,只有槽內(nèi)具有適當(dāng)?shù)溺R像位設(shè)置(表明記錄已改變)的記錄被傳輸給遠程存儲設(shè)備26。然而,在其它實施例中,則可能傳輸整個槽,假如遠程存儲設(shè)備26只寫對應(yīng)于具有適當(dāng)鏡像位設(shè)置的數(shù)據(jù)并忽略該磁軌的其它數(shù)據(jù),其可能是也可能不是有效的。在步驟212之后是測定步驟214,其確定被傳輸?shù)臄?shù)據(jù)是否已被R2設(shè)備確認。如果沒有,則數(shù)據(jù)被按照從步驟214回到步驟212的流程的指示重新發(fā)送。在其它實施例中,不同的及更多有關(guān)的處理可用于發(fā)送數(shù)據(jù)及確認其接收。這樣的處理可包括錯誤報告及在一定數(shù)量的發(fā)送數(shù)據(jù)的努力已失敗之后執(zhí)行的另外的處理。
一旦在測定步驟214確定數(shù)據(jù)已被成功發(fā)送,控制從步驟214轉(zhuǎn)到步驟216以清除RDF_WP標(biāo)志(因為數(shù)據(jù)已經(jīng)RDF成功發(fā)送)。在步驟216之后是測定步驟218,其確定該槽是否是連同向已經(jīng)具有列表72、74的非活動態(tài)列表中的現(xiàn)存項的槽進行寫而創(chuàng)建的復(fù)制槽。這種可能性已在上面連同步驟162、164、166、168、172進行描述。如果在測定步驟218確定該槽是復(fù)制槽,則控制從步驟218轉(zhuǎn)到步驟222,該槽被返回到可用的槽池中(將被重新使用)。此外,槽還可被老化(或具有某些應(yīng)用于其的其它適當(dāng)機制)以在其它槽之前提供用于立即的重新使用,因為該槽中提供的數(shù)據(jù)對于任何其它目的均不是有效的。在步驟222或步驟218(如果槽不是復(fù)制槽)之后是步驟224,槽的標(biāo)題的密碼字段被清零,使得當(dāng)槽被重新使用時,在圖5的步驟146的測定可正確地將該槽分類為新槽。
在步驟224之后是步驟226,列表72、74的非活動態(tài)列表中的項被移除。在步驟226之后,控制轉(zhuǎn)回到步驟202,如上所述,其確定在列表72、74的非活動態(tài)列表上是否有另外的項對應(yīng)于需要被傳輸?shù)臄?shù)據(jù)。
參考圖7,圖表240示出了遠程存儲設(shè)備26所使用的數(shù)據(jù)塊56、58的產(chǎn)生和處理。由遠程存儲設(shè)備26接收的數(shù)據(jù)經(jīng)鏈路29提供給遠程存儲設(shè)備26的高速緩存器242。高速緩存器242可被提供在遠程存儲設(shè)備26的存儲器38中。高速緩存器242包括多個緩存槽244-246,每一緩存槽可被映射到標(biāo)準(zhǔn)邏輯存儲設(shè)備252的磁軌。高速緩存器242類似于圖3的高速緩存器88并可包含可被降級到遠程存儲設(shè)備26的標(biāo)準(zhǔn)邏輯存儲設(shè)備252的數(shù)據(jù)。標(biāo)準(zhǔn)邏輯存儲設(shè)備252對應(yīng)于圖2中所示的數(shù)據(jù)元62及圖1中所示的磁盤34a-34c。
遠程存儲設(shè)備26還包含一對只緩存虛擬設(shè)備254、256。只緩存虛擬設(shè)備254、256對應(yīng)可能保存在遠程存儲設(shè)備26的存儲器38中的設(shè)備表。每一只緩存虛擬設(shè)備254、256的表的每一磁軌項(trackentry)或指向標(biāo)準(zhǔn)邏輯設(shè)備252的磁軌或指向高速緩存器242的槽。只緩存虛擬設(shè)備在2003年3月25日申請的、題為“CACHE-ONLY虛擬設(shè)備”的美國未決專利申請10/396,800中描述,其通過引用組合于此。
多個緩存槽244-246可與向標(biāo)準(zhǔn)邏輯設(shè)備252進行寫一起使用,同時,也可與只緩存虛擬設(shè)備254、256一起使用。在在此的實施例中,只緩存虛擬設(shè)備254、256的每一磁軌表項包含一空值以表明該磁軌的數(shù)據(jù)被保存在標(biāo)準(zhǔn)邏輯設(shè)備252的對應(yīng)磁軌上。否則,每一只緩存虛擬設(shè)備的磁軌表中的項包含指向高速緩存器242中的槽244-246之一的指針。
每一只緩存虛擬設(shè)備254、256對應(yīng)于數(shù)據(jù)塊56、58之一。因而,例如,只緩存虛擬設(shè)備254可對應(yīng)于數(shù)據(jù)塊56,而只緩存虛擬設(shè)備256可對應(yīng)于數(shù)據(jù)塊58。在在此的實施例中,只緩存虛擬設(shè)備254、256之一可被視為“活動態(tài)”,而只緩存虛擬設(shè)備254、256中的另一個可被視為“非活動態(tài)”。只緩存虛擬設(shè)備254、256中的非活動態(tài)虛擬設(shè)備可對應(yīng)于正從本地存儲設(shè)備24接收的數(shù)據(jù)(即數(shù)據(jù)塊56),而只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備對應(yīng)于正被恢復(fù)(寫)到標(biāo)準(zhǔn)邏輯設(shè)備252的數(shù)據(jù)。
來自本地存儲設(shè)備24的、經(jīng)鏈路29接收的數(shù)據(jù)可被放置在高速緩存器242的槽244-246之一中。只緩存虛擬設(shè)備254、256中的非活動態(tài)虛擬設(shè)備的相應(yīng)指針可被設(shè)置為指向所接收的數(shù)據(jù)。隨后的具有相同序號的數(shù)據(jù)可以類似的方式進行處理。在某一時間,本地存儲設(shè)備24提供消息,其提交所有使用同一序號發(fā)送的數(shù)據(jù)。一旦特定序號的數(shù)據(jù)已被提交,只緩存虛擬設(shè)備254、256中的非活動態(tài)設(shè)備變成活動態(tài),反之亦然。在這時,來自只緩存虛擬設(shè)備254、256的當(dāng)前活動態(tài)設(shè)備的數(shù)據(jù)被復(fù)制到標(biāo)準(zhǔn)邏輯設(shè)備252,而只緩存虛擬設(shè)備254、256中的非活動態(tài)設(shè)備被用于接收從本地存儲設(shè)備24傳輸給遠程存儲設(shè)備26的新數(shù)據(jù)(具有新的序號)。
當(dāng)從只緩存虛擬設(shè)備254、256中的活動態(tài)設(shè)備移除數(shù)據(jù)時(在本文別處描述),只緩存虛擬設(shè)備254、256中的活動態(tài)設(shè)備中的對應(yīng)項可被設(shè)為空值。此外,假如槽中的數(shù)據(jù)不再為其它目的所需要(如將被降級到標(biāo)準(zhǔn)邏輯設(shè)備252),數(shù)據(jù)還可從高速緩存器244中移除(即該槽被返回到空閑槽池中以供后用)。一機制可用于確保數(shù)據(jù)不從高速緩存器242中移除,直到所有鏡像(包括只緩存虛擬設(shè)備254、256)均不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568及2001年7月7日申請的美國專利申請09/850,551中描述,二者均通過引用組合于此。
在本文別處討論的一些實施例中,遠程存儲設(shè)備26可包含鏈表258、262,類似于本地存儲設(shè)備24使用的鏈表74、76。鏈表258、262可包含這樣的信息,其確定相應(yīng)的只緩存虛擬設(shè)備254、256中已被修改的槽,其中列表258、262之一對應(yīng)于只緩存虛擬設(shè)備254、256之一,及列表258、262中的另一列表對應(yīng)于只緩存虛擬設(shè)備254、256中的另一個。如本文別處所描述的,列表258、262可用于幫助從只緩存虛擬設(shè)備254、256恢復(fù)數(shù)據(jù)到標(biāo)準(zhǔn)邏輯設(shè)備252中。
參考圖8,流程圖270示出了與處理用于序號提交的數(shù)據(jù)有關(guān)的、由遠程存儲設(shè)備26執(zhí)行的步驟,其中所述數(shù)據(jù)由本地存儲設(shè)備24傳輸給遠程存儲設(shè)備26。如本文別處所描述的,本地存儲設(shè)備24定期遞增序號。當(dāng)其發(fā)生時,本地存儲設(shè)備24結(jié)束在前序號的所有數(shù)據(jù)的傳輸并繼而發(fā)送一用于在前序號的提交信息。
處理開始于第一步驟272,其接收提交。在步驟272之后是測定步驟274,其確定遠程存儲設(shè)備26的只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備是否是空的。如本文別處所描述的,遠程存儲設(shè)備26的只緩存虛擬設(shè)備254、256中的非活動態(tài)虛擬設(shè)備用于積聚來自本地存儲設(shè)備24的使用RDF發(fā)送的數(shù)據(jù),而只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備被恢復(fù)到標(biāo)準(zhǔn)邏輯設(shè)備252。
如果在測定步驟274確定只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備不是空的,則控制從測定步驟274轉(zhuǎn)到步驟276,其中,在執(zhí)行進一步的處理之前只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的恢復(fù)被完成。從只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備恢復(fù)數(shù)據(jù)將在本文別處詳細描述。在處理提交并開始恢復(fù)下一序號的數(shù)據(jù)之前只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備為空是有用的。
在步驟276之后或在步驟274之后(如果只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備被確定為空)是步驟278,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備被使得為非活動態(tài)。在步驟278之后是步驟282,只緩存虛擬設(shè)備254、256中先前非活動態(tài)的虛擬設(shè)備(即在執(zhí)行步驟278之前為非活動態(tài)的虛擬設(shè)備)被變成活動態(tài)。在步驟278、282交換活動態(tài)及非活動態(tài)只緩存虛擬設(shè)備254、256準(zhǔn)備了只緩存虛擬設(shè)備254、256中的當(dāng)前非活動態(tài)(及空)的虛擬設(shè)備以開始從本地存儲設(shè)備24接收下一序號的數(shù)據(jù)。
在步驟282之后是步驟284,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備被恢復(fù)到遠程存儲設(shè)備26的標(biāo)準(zhǔn)邏輯設(shè)備252。將只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備恢復(fù)到標(biāo)準(zhǔn)邏輯設(shè)備252將在下文中詳細描述。然而,應(yīng)注意,在一些實施例中,恢復(fù)過程在步驟284開始,但不必在步驟284就結(jié)束。在步驟284之后是步驟286,已從本地存儲設(shè)備24發(fā)送到遠程存儲設(shè)備26的提交被確認回到本地存儲設(shè)備24,使得本地存儲設(shè)備24被通知提交成功。在步驟286之后,處理結(jié)束。
參考圖9,流程圖300更詳細地示出了圖8的步驟276、284,其中遠程存儲設(shè)備26恢復(fù)只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備。處理開始于第一步驟302,指針被設(shè)定為指向只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的第一槽。指針用于重復(fù)通過只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的每一磁軌表項,每一磁軌表項均被單獨處理。在步驟302之后是測定步驟304,其確定只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的正被處理的磁軌是否指向標(biāo)準(zhǔn)邏輯設(shè)備252。如果是,則沒有東西需要恢復(fù)。否則,控制從步驟304轉(zhuǎn)到步驟306,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的相應(yīng)槽被鎖定。
在步驟306之后是測定步驟308,其確定標(biāo)準(zhǔn)邏輯設(shè)備252的相應(yīng)槽是否已經(jīng)在遠程存儲設(shè)備26的高速緩存器中。如果是,則控制從測定步驟308轉(zhuǎn)到步驟312,標(biāo)準(zhǔn)邏輯設(shè)備的槽被鎖定。在步驟312之后是步驟314,來自只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的數(shù)據(jù)與用于標(biāo)準(zhǔn)邏輯設(shè)備252的高速緩存器中的數(shù)據(jù)合并。在步驟314合并數(shù)據(jù)包括用只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的新數(shù)據(jù)蓋寫標(biāo)準(zhǔn)邏輯設(shè)備的數(shù)據(jù)。應(yīng)注意,在對記錄級標(biāo)志提供的實施例中,則可能簡單地將新記錄從只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備或(OR)到高速緩存器中的標(biāo)準(zhǔn)邏輯設(shè)備252的記錄。即,如果記錄被交叉存取,則只需使用來自只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的已改變的記錄,并將記錄提供給標(biāo)準(zhǔn)邏輯設(shè)備252的緩存槽。在步驟314之后是步驟316,標(biāo)準(zhǔn)邏輯設(shè)備252的槽被解鎖。在步驟316之后是步驟318,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的正被處理的槽也被解鎖。
如果在測定步驟308確定標(biāo)準(zhǔn)邏輯設(shè)備252的相應(yīng)槽不在高速緩存器中,則控制從測定步驟308轉(zhuǎn)到步驟322,改變標(biāo)準(zhǔn)邏輯設(shè)備252的槽的磁軌項以表明標(biāo)準(zhǔn)邏輯設(shè)備252的槽在高速緩存器中(如可設(shè)置IN_CACHE標(biāo)志)并需要被降級。如本文別處所述,在一些實施例中,只有具有適當(dāng)鏡像位設(shè)置的磁軌的記錄才需要被降級。在步驟322之后是步驟324,可設(shè)置磁軌的標(biāo)志以表明該磁軌的數(shù)據(jù)在高速緩存器中。
在步驟324之后是步驟326,標(biāo)準(zhǔn)邏輯設(shè)備252的槽指針被改變?yōu)橹赶蚋咚倬彺嫫髦械牟邸T诓襟E326之后是測定步驟328,其確定在步驟322、324、326執(zhí)行的操作是否已成功。在某些情況下,一稱為“比較和交換”的操作可用于執(zhí)行步驟322、324、326。如果這些操作因任何原因而沒有成功,則控制從步驟328轉(zhuǎn)回到步驟308以重新檢查標(biāo)準(zhǔn)邏輯設(shè)備252的相應(yīng)磁軌是否在高速緩存器中。否則,如果在測定步驟328確定先前的操作均已成功,則控制從測定步驟328轉(zhuǎn)到步驟318,如上所述。
在步驟318之后是測定步驟332,其確定只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的緩存槽(其正被恢復(fù))依然在使用。在某些情況下,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的槽可能依然正由另一鏡像使用。如果在測定步驟332確定只緩存虛擬設(shè)備的槽正由另一鏡像使用,則控制從測定步驟332轉(zhuǎn)到步驟334,釋放槽以為其它過程使用(如恢復(fù)到可用槽池中,如本文別處所述)。在步驟334之后是步驟336,指向下一槽以處理只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備的下一槽。應(yīng)注意,步驟336還可從測定步驟332到達,如果在步驟332確定只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備仍然由另一鏡像使用的話。應(yīng)注意,如果在步驟304確定對于正處理的槽,只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備指向標(biāo)準(zhǔn)邏輯設(shè)備252,步驟336也可從測定步驟304到達。在步驟336之后是測定步驟338,其確定只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備是否有更多的槽要被處理。如果不是,則處理結(jié)束。否則,控制從測定步驟338轉(zhuǎn)回到步驟304。
在另一實施例中,可能對所接收的數(shù)據(jù)塊56建立已修改的槽的列表,數(shù)據(jù)塊56對應(yīng)于遠程存儲設(shè)備26上的N-1循環(huán),所述列表如圖7中所示的列表258、262。當(dāng)數(shù)據(jù)被接收時,遠程存儲設(shè)備26建立已修改的槽的鏈表。所建立的鏈表可以是循環(huán)的、線性的(具有NULL終止)、或任何其它適當(dāng)?shù)脑O(shè)計。鏈表接著可用于恢復(fù)只緩存虛擬設(shè)備254、256中的活動態(tài)虛擬設(shè)備。
圖9的流程圖300示出了兩個二選一的通路342、344,其圖示了使用已修改的槽的列表的實施例的實施。在步驟302,指針(用于反復(fù)通過已修改的槽的列表)被使得指向列表的第一單元。在步驟302之后是步驟306,其由另一通路342到達。在使用已修改的槽的列表的實施例中,不需要測定步驟304,因為列表上沒有槽應(yīng)指向標(biāo)準(zhǔn)邏輯設(shè)備252。
在步驟306之后,如上以先前實施例所述,處理繼續(xù),除了步驟336為遍歷已修改的槽的列表而不是指向COVD中的下一槽以外。類似地,在步驟338的測試確定指針是否在列表的末尾(或在循環(huán)鏈表的情況下回到開始)。同樣,如果在步驟338確定有更多的槽要處理,則控制從步驟338轉(zhuǎn)到步驟306,如另一通路344所示。如上所述,對于使用已修改的槽的列表的實施例,步驟304可被排除。
參考圖10,流程圖350示出了連同本地存儲設(shè)備24增加序號執(zhí)行的步驟。處理開始于第一步驟352,在增加序號之前本地存儲設(shè)備24等待至少M秒。在在此的實施例中,M為30,當(dāng)然,M可以為任何數(shù)字。如果存儲設(shè)備24、26之間的通信中斷,較大的M值增加了可能丟失的數(shù)據(jù)的量。然而,較小的M值可能因更頻繁地遞增序號而增加內(nèi)務(wù)操作的總量。
在步驟352之后是測定步驟354,其確定是否本地存儲設(shè)備24的所有HA已設(shè)置位,其表明HA已完成在前序號的所有I/O。當(dāng)序號改變時,每一HA注意到該改變并設(shè)置位,其表明在前序號的所有I/O完成。例如,如果序號從N-1變?yōu)镹,HA將在HA已完成序號N-1的所有I/O時設(shè)置位。注意,在某些情況下,HA的單一I/O可能需要很長時間并可能在序號已改變之后仍然在進行之中。還應(yīng)注意,對于某些系統(tǒng),可使用不同的機制來確定所有HA已完成它們的N-1I/O。不同的機制可包括檢查存儲器37中的設(shè)備表。
如果在測定步驟354確定來自在前序號的I/O已被完成,則控制從步驟354轉(zhuǎn)到測定步驟356,其確定列表74、76中的不活動態(tài)列表是否是空的。應(yīng)注意,可不進行序號轉(zhuǎn)換,除非及直到對應(yīng)于列表74、76的不活動態(tài)列表的所有數(shù)據(jù)已使用RDF協(xié)議全部從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26為止。一旦列表74、76中的不活動態(tài)列表被確定為空,則控制從步驟356轉(zhuǎn)到步驟358,在前序號的提交從本地存儲設(shè)備24發(fā)送到遠程存儲設(shè)備26。如上所述,遠程存儲設(shè)備26接收特定序號的提交信息將使得遠程存儲設(shè)備26開始恢復(fù)對應(yīng)于序號的數(shù)據(jù)。
在步驟358之后是步驟362,對列表74、76中的不活動態(tài)列表的數(shù)據(jù)復(fù)制被暫停。如本文別處所述,不活動態(tài)列表被掃描以將相應(yīng)的數(shù)據(jù)從本地存儲設(shè)備24發(fā)送到遠程存儲設(shè)備26。暫停復(fù)制數(shù)據(jù)直到序號轉(zhuǎn)換完成為止是有用的。在在此的實施例中,暫停通過發(fā)送消息給RA 30a-30c實現(xiàn)。然而,本領(lǐng)域一般技術(shù)人員應(yīng)該意識到的是,對于使用其它組件來幫助使用在此描述的系統(tǒng)發(fā)送數(shù)據(jù)的實施例,暫停復(fù)制可通過發(fā)送適當(dāng)?shù)南?指令給其它組件實現(xiàn)。
在步驟362之后是步驟364,其增加序號。在步驟364之后是步驟366,在測定步驟354中使用的HA的位均被清零,使得這些位可連同序號的增加而被再次設(shè)置。在步驟366之后是測定步驟372,其確定遠程存儲設(shè)備26是否已確認在步驟358發(fā)送的提交信息。確認提交信息已在上面結(jié)合圖8進行了描述。一旦確定遠程存儲設(shè)備26已確認在步驟358發(fā)送的提交信息,控制從步驟372轉(zhuǎn)到步驟374,在步驟362提供的暫停復(fù)制設(shè)定被解除,使得復(fù)制可重新開始。在步驟374之后,處理結(jié)束。注意,從步驟374回到步驟352以開始新的循環(huán)從而連續(xù)增加序號是可能的。
使用R1設(shè)備上的COVD來收集與活動態(tài)數(shù)據(jù)和非活動態(tài)數(shù)據(jù)塊相關(guān)的槽也是可能的。在這種情況下,正象R2設(shè)備處那樣,一COVD可與非活動態(tài)序號相關(guān)聯(lián),而另一COVD可與活動態(tài)序號相關(guān)聯(lián)。這將在下面討論。
參考圖11,圖表400示出了用于構(gòu)建和保持數(shù)據(jù)塊52、54的項目。標(biāo)準(zhǔn)邏輯設(shè)備402包含由主機22寫的數(shù)據(jù)并對應(yīng)于圖2的數(shù)據(jù)單元51和圖1的磁盤33a-33c。標(biāo)準(zhǔn)邏輯設(shè)備402包含由主機22寫到本地存儲設(shè)備24的數(shù)據(jù)。
兩個只緩存虛擬設(shè)備404、406可與標(biāo)準(zhǔn)邏輯設(shè)備402一起使用。只緩存虛擬設(shè)備404、406對應(yīng)可能保存在本地存儲設(shè)備24的存儲器37中的設(shè)備表。每一只緩存虛擬設(shè)備404、406的表的每一磁軌項或指向標(biāo)準(zhǔn)邏輯設(shè)備402的磁軌或指向連同本地存儲設(shè)備24使用的高速緩存器408的槽。在某些實施例中,高速緩存器408可被提供在本地存儲設(shè)備24的存儲器37中。
高速緩存器408包含多個緩存槽412-414,其可連同對標(biāo)準(zhǔn)邏輯設(shè)備402進行寫一起使用,同時,還可連同只緩存虛擬設(shè)備404、406一起使用。在在此的實施例中,只緩存虛擬設(shè)備404、406的每一磁軌表項包含一空值以指向標(biāo)準(zhǔn)邏輯設(shè)備402的相應(yīng)磁軌。否則,每一只緩存虛擬設(shè)備404、406的磁軌表中的項包含指向高速緩存器408中的槽412-414之一的指針。
每一只緩存虛擬設(shè)備404、406可用于數(shù)據(jù)塊52、54之一,從而,例如,只緩存虛擬設(shè)備404可對應(yīng)于數(shù)據(jù)塊52(序號N),而只緩存虛擬設(shè)備406可對應(yīng)于數(shù)據(jù)塊54(序號N-1)。因此,當(dāng)數(shù)據(jù)由主機22寫到本地存儲設(shè)備24時,數(shù)據(jù)被提供給高速緩存器408且只緩存虛擬設(shè)備404的適當(dāng)指針被調(diào)整。應(yīng)注意,數(shù)據(jù)將不從高速緩存器408中移除,直到數(shù)據(jù)被降級到標(biāo)準(zhǔn)邏輯設(shè)備402為止,且數(shù)據(jù)還由只緩存虛擬設(shè)備404釋放,如本文別處所述。
在在此的實施例中,只緩存虛擬設(shè)備404、406之一被視為“活動態(tài)”,而另一只緩存虛擬設(shè)備被視為“非活動態(tài)”。因而,例如,當(dāng)序號N為偶數(shù)時,只緩存虛擬設(shè)備404可以為活動態(tài),而只緩存虛擬設(shè)備406為非活動態(tài)。只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備處理來自主機22的寫,而只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備對應(yīng)于正從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26的數(shù)據(jù)。
當(dāng)主機22所寫的數(shù)據(jù)使用只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備進行積聚時(對于序號N),對應(yīng)于只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備的數(shù)據(jù)(對于在前序號N-1)從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。對于本實施例及有關(guān)的實施例,本地存儲設(shè)備的DA 35a-35c處理對只緩存虛擬設(shè)備404、406的不活動態(tài)虛擬設(shè)備的掃描以將復(fù)制請求發(fā)送給一個或多個RA 30a-30c從而將數(shù)據(jù)從本地存儲設(shè)備24傳輸?shù)竭h程存儲設(shè)備26。因而,上述與暫停和重新開始復(fù)制有關(guān)的步驟362、374可包括提供消息/指令給DA35a-35c。
一旦數(shù)據(jù)已被傳輸給遠程存儲設(shè)備26,只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備中的對應(yīng)項可被設(shè)定為空值。此外,如果槽中的數(shù)據(jù)不再因另外的目的所需要(如要被降級到標(biāo)準(zhǔn)邏輯設(shè)備402),數(shù)據(jù)還可從高速緩存器408中移除(即槽被返回到槽池中以供后用)。一機制可用于確保數(shù)據(jù)不被從高速緩存器408移除,直到所有鏡像(包括只緩存虛擬設(shè)備404、406)不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568及2001年7月7日申請的美國專利申請09/850,551中描述,二者均通過引用組合于此。
參考圖12,流程圖400示出了連同主機22執(zhí)行寫操作由HA28執(zhí)行的步驟,其是針對兩個COVD均由R1設(shè)備使用以提供在此描述的系統(tǒng)的實施例。處理開始于第一步驟442,對應(yīng)于寫的槽被鎖定。在在此的實施例中,高速緩存器408的每一槽412-414對應(yīng)于標(biāo)準(zhǔn)邏輯設(shè)備402上的數(shù)據(jù)磁軌。在步驟442鎖定槽可在HA28執(zhí)行的處理期間阻止另外的過程在相應(yīng)的槽上運行,所述HA28執(zhí)行的處理對應(yīng)于流程圖440的步驟。
在步驟442之后為步驟444,序號N的值被設(shè)定。正象使用列表而不是在R1側(cè)上使用COVD的實施例那樣,在步驟444獲得的序號的值在HA28執(zhí)行的整個寫操作期間均被保持,且槽被鎖定。如本文別處所述,序號被分配給每一寫以設(shè)定數(shù)據(jù)塊52、54之一屬于哪一寫。主機22執(zhí)行的寫被分配以當(dāng)前序號。單一寫操作始終保持相同的序號是有用的。
在步驟444之后是測定步驟446,其確定只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備是否已經(jīng)指向在步驟442鎖定的槽。這可能在序號小于當(dāng)前序號時如果對同一槽的寫已被提供的情況下發(fā)生。對應(yīng)于在前序號的寫的數(shù)據(jù)可能尚未被傳輸給遠程存儲設(shè)備26。
如果在測定步驟446確定只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備沒有指向該槽,則控制從測定步驟446轉(zhuǎn)到另一測定步驟448,其確定只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備是否指向該槽。如果在序號與當(dāng)前序號相同時先前已有對該槽的寫,則只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備指向該槽是可能的。如果在測定步驟448確定只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備沒有指向該槽,則控制從測定步驟448轉(zhuǎn)到步驟452,為數(shù)據(jù)獲得新槽。在步驟452之后是步驟454,只緩存虛擬設(shè)備404、406中的活動態(tài)虛擬設(shè)備被使得指向該槽。
在步驟454之后或在步驟448之后(如果只緩存虛擬設(shè)備404、406的活動態(tài)虛擬設(shè)備指向該槽)是步驟456,設(shè)置標(biāo)志。在步驟456,RDF_WP標(biāo)志(RDF寫未決標(biāo)志)被設(shè)定以表明該槽需要使用RDF傳輸給遠程存儲設(shè)備26。此外,在步驟456,IN_CACHE標(biāo)志被設(shè)定以表明該槽需要被降級到標(biāo)準(zhǔn)邏輯設(shè)備402。應(yīng)注意,在某些情況下,如果只緩存虛擬設(shè)備404、406的活動態(tài)虛擬設(shè)備已經(jīng)指向該槽(如在步驟448確定),則RDF_WP和IN_CACHE標(biāo)志在執(zhí)行步驟456前已被設(shè)定是可能的。然而,在步驟456設(shè)置標(biāo)志確保標(biāo)志被正確地設(shè)置,而不管先前的狀態(tài)如何。
在步驟456之后是步驟458,指向該槽的磁軌表中的間接標(biāo)志被清零,以表明有關(guān)數(shù)據(jù)被提供在該槽中而不是在間接指向其的另外的槽中。在步驟458之后是步驟462,正由主機22和HA28寫的數(shù)據(jù)被寫到該槽中。在步驟462之后是步驟464,其解鎖槽。在步驟464之后,處理結(jié)束。
如果在測定步驟446確定只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備指向該槽,則控制從步驟446轉(zhuǎn)到步驟472,其獲得新槽。在步驟472獲得的新槽可用于只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備以實現(xiàn)RDF傳輸,同時舊槽可與只緩存虛擬設(shè)備404、406的活動態(tài)虛擬設(shè)備相關(guān)聯(lián),如下所述。
在步驟472之后是步驟474,舊槽的數(shù)據(jù)被復(fù)制到在步驟472獲得的新槽。在步驟474之后是步驟476,(上述的)間接標(biāo)志被設(shè)定以表明只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備的磁軌表項指向舊槽及表明數(shù)據(jù)在舊槽所指向的新槽中。因此,在步驟476設(shè)置間接標(biāo)志影響只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備的磁軌表從而導(dǎo)致磁軌表項表明數(shù)據(jù)在新槽中。
在步驟476之后是步驟478,新槽中的記錄的鏡像位被調(diào)整。當(dāng)數(shù)據(jù)在步驟474從舊槽復(fù)制到新槽時,被復(fù)制的任何本地鏡像位均被清零,因為新槽的目的只是簡單地實現(xiàn)對只緩存虛擬設(shè)備的非活動態(tài)虛擬設(shè)備的RDF傳輸。舊槽將用于處理任何本地鏡像。在步驟478之后是步驟462,數(shù)據(jù)被寫到槽中。在步驟462之后是步驟464,解鎖槽。在步驟464之后,處理結(jié)束。
參考圖13,流程圖500示出了連同本地存儲設(shè)備24將數(shù)據(jù)塊54傳輸給遠程存儲設(shè)備26所執(zhí)行的步驟。傳輸實質(zhì)上包括對只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備先前在活動態(tài)時的反復(fù)操作期間已寫到那里的磁軌,掃描只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備。在該實施例中,本地存儲設(shè)備24的DA35a-35c掃描只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備以通過一個或多個RA30a-30c、使用RDF協(xié)議將需要傳輸?shù)臄?shù)據(jù)復(fù)制到遠程存儲設(shè)備26。
處理開始于第一步驟502,指向只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備的第一磁軌以開始通過所有磁軌的反復(fù)過程。在第一步驟502之后是測定步驟504,其確定RDF_WP標(biāo)志是否已被設(shè)定。如本文別處所述,RDF_WP標(biāo)志被用于表明槽(磁軌)包含需要經(jīng)RDF鏈路傳輸?shù)臄?shù)據(jù)。被設(shè)置的RDF_WP標(biāo)志表明槽(磁軌)中的至少部分數(shù)據(jù)將使用RDF傳輸。在在此的實施例中,整個槽均不被傳輸。而是,只有槽內(nèi)具有適當(dāng)?shù)溺R像位設(shè)置(表明記錄已改變)的記錄才被傳輸給遠程存儲設(shè)備26。然而,在其它實施例中,假如遠程存儲設(shè)備26只寫對應(yīng)于具有適當(dāng)鏡像位設(shè)置的記錄的數(shù)據(jù)并忽略磁軌的其它數(shù)據(jù),則可能傳輸整個槽,其可以是也可不是有效的。
如果在測定步驟504確定被處理的緩存器具有RDF_WP標(biāo)志設(shè)置,則控制從步驟504轉(zhuǎn)到測定步驟505,其確定槽是否包含數(shù)據(jù)或確定槽是否是指向包含相關(guān)數(shù)據(jù)的另一槽的間接槽。在某些情況下,槽可能不包含對應(yīng)于槽的磁盤部分的數(shù)據(jù)。即槽可能是指向包含數(shù)據(jù)的另一槽的間接槽。如果在步驟505確定槽是間接槽,則控制從步驟505轉(zhuǎn)到步驟506,獲取數(shù)據(jù)(從間接槽指向的槽獲取)。因而,如果槽是直接槽,正由RDF發(fā)送的數(shù)據(jù)被保存在該槽中,而如果槽是間接槽,則正由RDF發(fā)送的數(shù)據(jù)被保存在由間接槽所指向的另一槽中。
在步驟506之后或步驟505(如果槽是直接槽)是步驟507,正被發(fā)送的數(shù)據(jù)(直接或間接從槽)由DA 35a-35c之一復(fù)制以使用RDF協(xié)議從本地存儲設(shè)備24發(fā)送到遠程存儲設(shè)備26。在步驟507之后是測定步驟508,其確定遠程存儲設(shè)備26是否已確認數(shù)據(jù)的接收。如果否,則控制從步驟508轉(zhuǎn)回到步驟507以重新發(fā)送數(shù)據(jù)。在其它實施例中,不同的及更多有關(guān)的處理可用于發(fā)送數(shù)據(jù)并確認其接收。這樣的處理可包括錯誤報告及其它處理,其是在一定量的發(fā)送數(shù)據(jù)的嘗試失敗之后執(zhí)行的處理。
一旦在測定步驟508確定數(shù)據(jù)已被成功發(fā)送,控制從步驟508轉(zhuǎn)到步驟512以清零RDF_WP標(biāo)志(因為數(shù)據(jù)已經(jīng)RDF成功發(fā)送)。在步驟512之后是步驟514,適當(dāng)?shù)溺R像標(biāo)志被清零以表明至少RDF鏡像(R2)不再需要數(shù)據(jù)。在在此的實施例中,作為槽(磁軌)的一部分的每一記錄具有各自的鏡像標(biāo)志,其表明哪些鏡像使用特定的記錄。R2設(shè)備是每一記錄的鏡像之一且是對應(yīng)于R2設(shè)備的標(biāo)志在步驟514被清零。
在步驟514之后是測定步驟516,其確定正被處理的磁軌的任意記錄是否具有任意其它鏡像標(biāo)志設(shè)置(對于其它鏡像設(shè)備)。如果否,則控制從步驟516轉(zhuǎn)到步驟518,其釋放槽(即不再被使用)。在一些實施例中,未使用的槽可被保持在可用槽池中。應(yīng)注意,對于槽的一些記錄,如果另外的標(biāo)志仍被設(shè)置,則可能意味著記錄需要被降級到標(biāo)準(zhǔn)邏輯設(shè)備402或正由一些其它鏡像(包括另一R2設(shè)備)使用。在步驟518之后,或在步驟516之后(如果更多的鏡像標(biāo)志存在)是步驟522,用于反復(fù)通過只緩存虛擬設(shè)備404、406的非活動態(tài)虛擬設(shè)備的每一磁軌項的指針被使得指向下一磁軌。在步驟522之后是測定步驟524,其確定只緩存虛擬設(shè)備404、406中的非活動態(tài)虛擬設(shè)備是否有更多的磁軌要被處理。如果否,則處理結(jié)束。否則,控制轉(zhuǎn)回到測定步驟504,如上所述。注意,如果確定對于正被處理的磁軌RDF_WP標(biāo)志未被設(shè)置,步驟522還可從測定步驟504到達。
在于此描述的系統(tǒng)的另一實施例中,可能不像圖7的圖240中所示的那樣將COVD用于R2設(shè)備。也就是說,可能不在R2使用COVD的情況下實現(xiàn)異步數(shù)據(jù)的R2接收。
參考圖14,圖640示出了高速緩存642,其被提供在接收數(shù)據(jù)的遠程存儲設(shè)備26中。高速緩存642包括多個槽652-654,從本地存儲設(shè)備24接收的異步數(shù)據(jù)放于其中。還示出了第一循環(huán)鏈表674和第二循環(huán)鏈表676,其包含指向高速緩存642的槽652-654的指針。因此,例如,循環(huán)鏈表674包括多個指針681-685,每一指針指向高速緩存642中的槽652-654之一。類似地,循環(huán)鏈表676包括多個指針691-695,每一指針指向高速緩存642中的槽652-654之一。標(biāo)準(zhǔn)的邏輯設(shè)備698也被映射到高速緩存642的部分。
在于此的實施例中,鏈表674、676之一對應(yīng)于非當(dāng)前數(shù)據(jù)塊(如圖2中所示的數(shù)據(jù)塊56),而鏈表674、676中的另一個對應(yīng)于當(dāng)前數(shù)據(jù)塊(如圖2中所示的數(shù)據(jù)塊58)。接收的數(shù)據(jù)使用數(shù)據(jù)塊中的非當(dāng)前數(shù)據(jù)塊累積,而數(shù)據(jù)塊中的當(dāng)前數(shù)據(jù)塊用于將數(shù)據(jù)保存在標(biāo)準(zhǔn)邏輯設(shè)備698,如本說明書別處結(jié)合圖7的圖240及相應(yīng)的文本所述。因而,當(dāng)新的數(shù)據(jù)到達時,其被放在高速緩存642中,新指針被添加到循環(huán)鏈表674、676中在數(shù)據(jù)被接收時對應(yīng)于非當(dāng)前數(shù)據(jù)塊的那一循環(huán)鏈表。
在一些情形下,能夠確定標(biāo)準(zhǔn)邏輯設(shè)備698(或任何其它邏輯設(shè)備)的一部分是否在對應(yīng)于所接收數(shù)據(jù)的高速緩存642中具有與其相關(guān)聯(lián)的槽是有用的。當(dāng)然,總是可能遍歷鏈表674、676以確定在高速緩存642中是否有相應(yīng)的槽。然而,如果有一種使用特定設(shè)備、柱面、及磁頭值確定在高速緩存642的槽652-654中有相應(yīng)的槽等待被降級到所述設(shè)備的方法,則這將更有用。
參考圖15,圖700示出了包含多個項704-706的散列表702。在于此的實施例中,項704-706中的每一項或包含空值指針或指向?qū)?yīng)于已被接收但尚未保存在標(biāo)準(zhǔn)邏輯設(shè)備698(或另一標(biāo)準(zhǔn)邏輯設(shè)備)上的數(shù)據(jù)的高速緩存槽652-654中之一。表702使用執(zhí)行數(shù)學(xué)運算的散列函數(shù)進行索引,其使用設(shè)備、柱面及磁頭的特定值在表702內(nèi)產(chǎn)生索引從而找到相應(yīng)的項。因而,當(dāng)數(shù)據(jù)由R2設(shè)備接收時,散列函數(shù)被應(yīng)用于設(shè)備、柱面及磁頭以找到其在表702內(nèi)的索引值,之后,指針被寫到項704-706中指向高速緩存642中的特定槽652-654的那一項。一旦所接收的數(shù)據(jù)被適當(dāng)?shù)亟导壍綐?biāo)準(zhǔn)邏輯設(shè)備698(或另一設(shè)備),項704-706中的相應(yīng)項被設(shè)為空值,如此,散列表702使能快速地確定標(biāo)準(zhǔn)邏輯設(shè)備的特定部分是否對應(yīng)于已接收但尚未被降級的數(shù)據(jù)。對于在此描述的系統(tǒng),任何適當(dāng)?shù)纳⒘泻瘮?shù)可用于產(chǎn)生表702中的索引。
在一些情況下,使用特定設(shè)備、柱面及磁頭值在表702內(nèi)產(chǎn)生的索引與用不同的設(shè)備、柱面及磁頭值產(chǎn)生的索引一樣是可能的。這被稱為“碰撞”。在出現(xiàn)碰撞的情況下,表702中的第二項對應(yīng)于所提供的相同索引,第二項被鏈接到第一項,從而特定索引將對應(yīng)于一個以上的項。這由鏈接到表702的元素705的元素708說明。因而,第一設(shè)備、柱面及磁頭被散列以產(chǎn)生并索引到項705,同時不同的設(shè)備、柱面及磁頭被輸入到散列函數(shù)以產(chǎn)生相同的索引值。在于此的實施例中,項705用于指向高速緩存642中對應(yīng)于第一設(shè)備、柱面及磁頭的數(shù)據(jù),而項708用于指向高速緩存642中對應(yīng)于第二設(shè)備、柱面及磁頭的數(shù)據(jù)。當(dāng)然,當(dāng)數(shù)據(jù)被降級到適當(dāng)?shù)脑O(shè)備時,項705、708中的相應(yīng)項可從表700中刪除。
應(yīng)注意,任何數(shù)量的項可對應(yīng)于單一索引,從而,例如,如果導(dǎo)致設(shè)備、柱面及磁頭的三組分開的值產(chǎn)生相同索引的碰撞出現(xiàn)時,則在表702內(nèi)的特定索引處將有三個(或更多個)項鏈接在一起。還應(yīng)注意,其它適當(dāng)?shù)募夹g(shù)也可用于處理碰撞,包括提供另外的表(如第二表、第三表、第四表等)。
參考圖16,圖720示出了散列表722的另一實施例,其包含多個項724-726。圖16的實施例與圖15的實施例類似,僅有如在此所述的很少區(qū)別。項724-726中的每一項或包含空值指針或指向圖720中所示的高速緩存槽728、732、734之一,所述緩存槽對應(yīng)于已被接收但尚未保存在標(biāo)準(zhǔn)邏輯設(shè)備698(或另一標(biāo)準(zhǔn)邏輯設(shè)備)上的數(shù)據(jù)。表722使用執(zhí)行數(shù)學(xué)運算的散列函數(shù)進行索引,其使用設(shè)備、柱面及磁頭的特定值在表722內(nèi)產(chǎn)生索引從而找到相應(yīng)的項。因而,當(dāng)數(shù)據(jù)由R2設(shè)備接收時,散列函數(shù)被應(yīng)用于設(shè)備、柱面及磁頭以找到其在表722內(nèi)的索引值,之后,指針被寫到項724-726中指向特定槽728、732、734的那一項。一旦所接收的數(shù)據(jù)被適當(dāng)?shù)亟导壍綐?biāo)準(zhǔn)邏輯設(shè)備698(或另一設(shè)備),項724-726中的相應(yīng)項被適當(dāng)調(diào)整。如此,散列表722使能快速地確定標(biāo)準(zhǔn)邏輯設(shè)備的特定部分是否對應(yīng)于已接收但尚未被降級的數(shù)據(jù)。對于在此描述的系統(tǒng),任何適當(dāng)?shù)纳⒘泻瘮?shù)可用于產(chǎn)生表722中的索引。
對于圖16中所示的實施例,在出現(xiàn)碰撞的情況下,由表項指向的第一槽指向?qū)е屡鲎驳牡诙邸R蚨?,例如如果?32和槽736導(dǎo)致在表項725的碰撞,表項725指向槽732,同時槽732指向槽736。因而,當(dāng)隨后添加槽時,碰撞不會導(dǎo)致表722的任何變化,因為添加隨后的槽簡單地包括改變先前槽的指針值。當(dāng)然,任何數(shù)量的槽可對應(yīng)于單一的表項。
應(yīng)注意,任何數(shù)量的項可對應(yīng)于單一索引,從而,例如,如果導(dǎo)致設(shè)備、柱面及磁頭的三組分開的值產(chǎn)生相同索引的碰撞出現(xiàn)時,則在表722內(nèi)的特定索引處將有三個(或更多個)項鏈接在一起。還應(yīng)注意,其它適當(dāng)?shù)募夹g(shù)也可用于處理碰撞,包括提供另外的表(如第二表、第三表、第四表等)。
在本發(fā)明已連同多個實施例進行公開的同時,其修改對本領(lǐng)域技術(shù)人員而言應(yīng)是顯而易見的。因此,本發(fā)明的實質(zhì)和范圍在下述權(quán)利要求中提出。
權(quán)利要求
1.處理數(shù)據(jù)存儲設(shè)備的排序的寫的方法,包括將第一數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中;及使用散列表在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。
2.根據(jù)權(quán)利要求1的方法,還包括將第二數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中;及接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)均已被傳給數(shù)據(jù)存儲設(shè)備的消息。
3.根據(jù)權(quán)利要求2的方法,還包括響應(yīng)于接收所述消息,將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備上。
4.根據(jù)權(quán)利要求2的方法,還包括使用散列表在包含來自第二數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。
5.根據(jù)權(quán)利要求1的方法,其中散列表是指向高速緩存槽的指針表。
6.根據(jù)權(quán)利要求5的方法,還包括響應(yīng)于碰撞,散列表的項包含指向第一槽的指針,及第一槽包含指向第二槽的指針。
7.數(shù)據(jù)存儲設(shè)備,包括至少一包含數(shù)據(jù)的磁盤驅(qū)動器;連到至少一磁盤驅(qū)動器的至少一主機適配器,其接收將被保存在至少一磁盤驅(qū)動器上的數(shù)據(jù);及連到至少一磁盤驅(qū)動器及至少一主機適配器的至少一遠程適配器,其接收將被保存在數(shù)據(jù)存儲設(shè)備上的數(shù)據(jù),其中數(shù)據(jù)存儲設(shè)備將第一數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中,并使用散列表在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備的邏輯存儲設(shè)備的位置之間提供關(guān)聯(lián)。
8.根據(jù)權(quán)利要求7的數(shù)據(jù)存儲設(shè)備,其中數(shù)據(jù)存儲設(shè)備保存指向包含第一數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表。
9.根據(jù)權(quán)利要求7的數(shù)據(jù)存儲設(shè)備,其中數(shù)據(jù)存儲設(shè)備將第二數(shù)據(jù)塊接收到數(shù)據(jù)存儲設(shè)備的高速緩存槽中,并接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)均已傳給數(shù)據(jù)存儲設(shè)備的消息。
10.根據(jù)權(quán)利要求9的數(shù)據(jù)存儲設(shè)備,其中響應(yīng)于接收所述消息,數(shù)據(jù)存儲設(shè)備將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備上。
全文摘要
處理對數(shù)據(jù)存儲設(shè)備(62)進行排序的寫包括將第一數(shù)據(jù)塊(56)接收到數(shù)據(jù)存儲設(shè)備的高速緩存(642)的槽(652)中并使用散列表(702)在包含來自第一數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽和數(shù)據(jù)存儲設(shè)備(62)的邏輯存儲設(shè)備(698)的位置之間提供關(guān)聯(lián)。處理排序的寫還可包括保存指向包含第一數(shù)據(jù)塊的高速緩存槽的指針的循環(huán)鏈表(674)。處理排序的寫還可包括將第二數(shù)據(jù)塊(58)接收到數(shù)據(jù)存儲設(shè)備(62)的高速緩存槽中并接收指示所有對應(yīng)于第一數(shù)據(jù)塊的數(shù)據(jù)已被傳給數(shù)據(jù)存儲設(shè)備(698)的消息。處理排序的寫還可包括,響應(yīng)于接收消息,將來自第一數(shù)據(jù)塊的數(shù)據(jù)保存到邏輯存儲設(shè)備(698)上。處理排序的寫還可包括使用散列表(702)在包含來自第二數(shù)據(jù)塊的數(shù)據(jù)的高速緩存槽(652)和數(shù)據(jù)存儲設(shè)備(62)的邏輯存儲設(shè)備(698)的位置之間提供關(guān)聯(lián)。
文檔編號G06F12/08GK101031891SQ200580032766
公開日2007年9月5日 申請日期2005年9月30日 優(yōu)先權(quán)日2004年10月1日
發(fā)明者瓦季姆·隆吉諾夫, 本杰明·W.·約德, 馬克·J.·霍爾斯特德, 戴維·梅雷 申請人:伊姆西公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
沅江市| 贵定县| 九江县| 梨树县| 灵璧县| 修武县| 玉龙| 舞阳县| 富平县| 察哈| 凤庆县| 宝坻区| 乃东县| 弥渡县| 青浦区| 临洮县| 安远县| 舒兰市| 六枝特区| 逊克县| 偃师市| 定陶县| 道孚县| 比如县| 龙里县| 大余县| 呼伦贝尔市| 峨眉山市| 淮阳县| 华池县| 泾阳县| 乐平市| 深泽县| 阿巴嘎旗| 上饶市| 镇坪县| 遂溪县| 开鲁县| 青阳县| 民权县| 建瓯市|