亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

虛擬排序的寫的制作方法

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

發(fā)明內(nèi)容
根據(jù)本發(fā)明,排序數(shù)據(jù)寫包括主存儲設備接收多個數(shù)據(jù)寫,主存儲設備將第一時間之后及第二時間之前開始的數(shù)據(jù)寫與第一數(shù)據(jù)塊相關聯(lián),主存儲設備將在第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián),在與第一數(shù)據(jù)塊相關聯(lián)的所有寫完成之后,主存儲設備開始將與第一數(shù)據(jù)塊相關聯(lián)的寫傳輸給輔助存儲設備。排序數(shù)據(jù)寫還可包括,在主存儲設備將與第一數(shù)據(jù)塊相關聯(lián)的所有寫傳輸給輔助存儲設備之后,主存儲設備發(fā)送消息給輔助存儲設備,及響應于從主存儲設備接收消息,輔助存儲設備保存與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,在保存與第一數(shù)據(jù)塊相關聯(lián)的所有數(shù)據(jù)寫之后,輔助存儲設備發(fā)送確認給主存儲設備。排序數(shù)據(jù)寫還可包括,在發(fā)送消息給輔助存儲設備之后,主存儲設備暫停傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,在暫停傳輸數(shù)據(jù)給隨后的數(shù)據(jù)寫之后,主存儲設備將數(shù)據(jù)寫與第三數(shù)據(jù)塊相關聯(lián),第三數(shù)據(jù)塊不同于第一和第二數(shù)據(jù)塊。排序數(shù)據(jù)寫還可包括,響應于輔助存儲設備發(fā)送確認給主存儲設備,主存儲設備重新開始傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,提供數(shù)據(jù)寫給主存儲設備的高速緩存槽(cache slot)。排序數(shù)據(jù)寫還可包括,響應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫對應于已經(jīng)與第一數(shù)據(jù)塊關聯(lián)的高速緩存槽,將數(shù)據(jù)復制到新的高速緩存槽。排序數(shù)據(jù)寫還可包括,主存儲設備使用指向高速緩存槽的第一指針列表用于與第一數(shù)據(jù)塊關聯(lián)的數(shù)據(jù)寫,及主存儲設備使用指向高速緩存槽的第二指針列表用于與第二數(shù)據(jù)塊關聯(lián)的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,在每一槽的標題部分中提供高速緩存標簽字段,高速緩存標簽字段包括與槽相關聯(lián)的序號,其中序號對應于特定的數(shù)據(jù)塊。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。排序數(shù)據(jù)寫還可包括,響應于槽不再被使用,清除密碼字段。排序數(shù)據(jù)寫還可包括,主存儲設備使用高速緩存槽的第一只緩存虛擬設備(cache only virtual device)對應于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫,及主存儲設備使用高速緩存槽的第二只緩存虛擬設備對應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備包括,接收用于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的消息,響應于與不同于所述第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)被保存,并開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲。將排序的寫保存到遠程存儲設備還可包括確認消息。將排序的寫保存到遠程存儲設備還可包括,連同接收與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表。開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲可包括遍歷被修改的槽的列表。接收多個數(shù)據(jù)寫可包括從主機接收多個數(shù)據(jù)寫。將排序的寫保存到遠程存儲設備還可包括,在主存儲設備將與第一數(shù)據(jù)塊相關聯(lián)的所有寫傳輸給輔助存儲設備之后,主存儲設備發(fā)送消息給輔助存儲設備。
根據(jù)本發(fā)明,排序數(shù)據(jù)寫的計算機軟件包括,將第一時間之后開始及第二時間之前的數(shù)據(jù)寫與第一數(shù)據(jù)塊相關聯(lián)的可執(zhí)行代碼,將在第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的可執(zhí)行代碼,及在與第一數(shù)據(jù)塊相關聯(lián)的所有寫完成之后,開始將與第一數(shù)據(jù)塊相關聯(lián)的寫傳輸給輔助存儲設備的可執(zhí)行代碼。計算機軟件還可包括,在傳輸與第一數(shù)據(jù)塊相關聯(lián)的所有寫之后發(fā)送消息給存儲設備的可執(zhí)行代碼,及在發(fā)送消息給存儲設備之后暫停傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,在暫停傳輸數(shù)據(jù)給隨后的數(shù)據(jù)寫之后,將數(shù)據(jù)寫與第三數(shù)據(jù)塊相關聯(lián)的可執(zhí)行代碼,第三數(shù)據(jù)塊不同于第一和第二數(shù)據(jù)塊。計算機軟件還可包括,響應于存儲設備確認處理消息而重新開始傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,提供數(shù)據(jù)寫給高速緩存槽的可執(zhí)行代碼。計算機軟件還可包括,響應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫對應于已經(jīng)與第一數(shù)據(jù)塊關聯(lián)的高速緩存槽,將數(shù)據(jù)復制到新的高速緩存槽的可執(zhí)行代碼。計算機軟件還可包括,使用指向高速緩存槽的第一指針列表用于與第一數(shù)據(jù)塊關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼,及使用指向高速緩存槽的第二指針列表用于與第二數(shù)據(jù)塊關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼。計算機軟件還可包括,在每一槽的標題部分中提供高速緩存標簽字段的可執(zhí)行代碼,高速緩存標簽字段包括與槽相關聯(lián)的序號,其中序號對應于特定的數(shù)據(jù)塊。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。計算機軟件還可包括,響應于槽不再被使用而清除密碼字段的可執(zhí)行代碼。計算機軟件還可包括,使用高速緩存槽的第一只緩存虛擬設備對應于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼,及使用高速緩存槽的第二只緩存虛擬設備對應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備的計算機軟件包括,接收用于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的消息的可執(zhí)行代碼,等待與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)被保存的可執(zhí)行代碼,及在第二數(shù)據(jù)塊已被保存之后開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼。計算機軟件還可包括確認消息的可執(zhí)行代碼。計算機軟件還可包括,連同接收與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表的可執(zhí)行代碼。開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼可包括遍歷被修改的槽的列表的可執(zhí)行代碼。
根據(jù)本發(fā)明,數(shù)據(jù)存儲設備,包括至少一包含數(shù)據(jù)的磁盤驅動器、至少一主機適配器,其連接到至少一磁盤驅動器并接收將要保存在至少一磁盤驅動器上的數(shù)據(jù),還包括至少一遠程適配器,其連接到至少一磁盤驅動器和至少一主機適配器,并將數(shù)據(jù)傳輸給遠程存儲設備,其中,響應于至少一主機適配器進行的數(shù)據(jù)的寫,在第一時間之后開始且在第二時間之前的數(shù)據(jù)寫與第一數(shù)據(jù)塊關聯(lián),在第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián),且在與第一數(shù)據(jù)塊相關聯(lián)的所有寫完成之后,開始將與第一數(shù)據(jù)塊相關聯(lián)的寫傳輸給遠程存儲設備。
根據(jù)本發(fā)明,排序數(shù)據(jù)寫包括主機向主存儲設備提供多個數(shù)據(jù)寫,主存儲設備將第一序號分配給在第一時間之后開始且在第二時間之前的數(shù)據(jù)寫,主存儲設備將不同于第一序號的第二序號分配給在第二時間之后開始的數(shù)據(jù)寫,響應于被分配第一序號的所有寫的完成,主存儲設備將被分配第一序號的寫傳輸給輔助存儲設備,及響應于主存儲設備將被分配第一序號的所有寫傳輸給輔助存儲設備,主存儲設備發(fā)送提交信息給輔助存儲設備。排序數(shù)據(jù)寫還可包括,響應于從主存儲設備接收提交信息,輔助存儲設備保存具有第一序號的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,響應于保存所有具有第一序號的數(shù)據(jù)寫,輔助存儲設備向主存儲設備發(fā)送確認。排序數(shù)據(jù)寫還可包括,在發(fā)送提交信息給輔助存儲設備之后,主存儲設備暫停傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,在暫停傳輸數(shù)據(jù)之后,主存儲設備分配第三序號給隨后的數(shù)據(jù)寫,第三序號不同于第一和第二序號。排序數(shù)據(jù)寫還可包括,響應于輔助存儲設備發(fā)送確認給主存儲設備,主存儲設備重新開始傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,提供數(shù)據(jù)寫給主存儲設備的高速緩存槽。排序數(shù)據(jù)寫還可包括,響應于被分配第二序號的數(shù)據(jù)寫對應于已經(jīng)被分配第一序號的高速緩存槽,則將數(shù)據(jù)復制到新的高速緩存槽。排序數(shù)據(jù)寫還可包括,主存儲設備使用指向高速緩存槽的第一指針列表用于被分配第一序號的數(shù)據(jù)寫,及主存儲設備使用指向高速緩存槽的第二指針列表用于被分配第二序號的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,在每一槽的標題部分中提供高速緩存標簽字段,高速緩存標簽字段包括與槽相關聯(lián)的序號。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。排序數(shù)據(jù)寫還可包括,響應于槽不再被使用,清除密碼字段。排序數(shù)據(jù)寫還可包括,主存儲設備使用高速緩存槽的第一只緩存虛擬設備對應于被分配第一序號的數(shù)據(jù)寫,及主存儲設備使用高速緩存槽的第二只緩存虛擬設備對應于被分配第二序號的數(shù)據(jù)寫。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備包括,接收用于與第一序號相關聯(lián)的數(shù)據(jù)的提交信息,響應于與不同于所述第一序號的第二序號相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二序號相關聯(lián)的數(shù)據(jù)被保存,并開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲。保存排序的寫還可包括確認提交信息。保存排序的寫還可包括,連同接收與第一序號相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表。開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲可包括遍歷被修改的槽的列表。
根據(jù)本發(fā)明,排序數(shù)據(jù)寫的計算機軟件包括將第一序號分配給在第一時間之后開始且在第二時間之前的數(shù)據(jù)寫的可執(zhí)行代碼,將不同于第一序號的第二序號分配給在第二時間之后開始的數(shù)據(jù)寫的可執(zhí)行代碼,響應于被分配第一序號的所有寫的完成而將被分配第一序號的寫傳輸給輔助存儲設備的可執(zhí)行代碼,及傳輸被分配第一序號的所有寫之后發(fā)送提交信息給存儲設備的可執(zhí)行代碼。計算機軟件還可包括在發(fā)送提交信息給存儲設備之后暫停傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,在暫停傳輸數(shù)據(jù)之后,分配第三序號給隨后的數(shù)據(jù)寫的可執(zhí)行代碼,第三序號不同于第一和第二序號。計算機軟件還可包括,響應于存儲設備確認處理所述執(zhí)行而重新開始傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,提供數(shù)據(jù)寫給高速緩存槽的可執(zhí)行代碼。計算機軟件還可包括,響應于被分配第二序號的數(shù)據(jù)寫將數(shù)據(jù)復制到新的高速緩存槽的可執(zhí)行代碼,所述數(shù)據(jù)寫對應于已經(jīng)被分配第一序號的高速緩存槽。計算機軟件還可包括,使用指向高速緩存槽的第一指針列表用于被分配第一序號的數(shù)據(jù)寫的可執(zhí)行代碼,及使用指向高速緩存槽的第二指針列表用于被分配第二序號的數(shù)據(jù)寫的可執(zhí)行代碼。計算機軟件還可包括,在每一槽的標題部分中提供高速緩存標簽字段的可執(zhí)行代碼,高速緩存標簽字段包括與槽相關聯(lián)的序號。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。計算機軟件還可包括,響應于槽不再被使用而清除密碼字段的可執(zhí)行代碼。計算機軟件還可包括,使用高速緩存槽的第一只緩存虛擬設備對應于被分配第一序號的數(shù)據(jù)寫的可執(zhí)行代碼,及使用高速緩存槽的第二只緩存虛擬設備對應于被分配第二序號的數(shù)據(jù)寫的可執(zhí)行代碼。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備的計算機軟件包括,接收用于與第一序號相關聯(lián)的數(shù)據(jù)的提交信息的可執(zhí)行代碼,響應于與不同于第一序號的第二序號相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二序號相關聯(lián)的數(shù)據(jù)被保存的可執(zhí)行代碼,及開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼。計算機軟件還可包括確認提交信息的可執(zhí)行代碼。計算機軟件還可包括,連同接收與第一序號相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表的可執(zhí)行代碼。開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼可包括遍歷被修改的槽的列表的可執(zhí)行代碼。
根據(jù)本發(fā)明,從遠程存儲設備讀所需要的數(shù)據(jù),其中遠程存儲設備從另一存儲設備接收數(shù)據(jù)塊,包括確定所需要的數(shù)據(jù)是否是另一存儲設備提交的數(shù)據(jù)塊的一部分,如果所需要的數(shù)據(jù)不是另一存儲設備提交的數(shù)據(jù)塊的一部分,則從相應的標準邏輯設備讀取所需要的數(shù)據(jù);如果所需要的數(shù)據(jù)是另一存儲設備提交的數(shù)據(jù)塊的一部分,將所需要的數(shù)據(jù)傳輸給標準邏輯設備并從下列之一獲得所需要的數(shù)據(jù)在傳輸所需要的數(shù)據(jù)至標準邏輯設備之后從標準邏輯設備獲得及從另一存儲設備提交的數(shù)據(jù)塊獲得。從遠程存儲設備讀所需要的數(shù)據(jù)還可包括,如果所需要的數(shù)據(jù)是另一存儲設備提交的數(shù)據(jù)塊的一部分,鎖定只緩存虛擬設備中指向所需要數(shù)據(jù)的相應槽。從遠程存儲設備讀所需要的數(shù)據(jù)還可包括,在鎖定相應的槽后,再次確定所需要的數(shù)據(jù)是否是另一存儲設備提交的數(shù)據(jù)塊的一部分。從遠程存儲設備讀所需要的數(shù)據(jù)還可包括,如果再次確定的結果表明所需要的數(shù)據(jù)不是另一存儲設備提交的數(shù)據(jù)塊的一部分,則解鎖相應的槽并從相應的標準邏輯設備讀所需要的數(shù)據(jù)。從遠程存儲設備讀所需要的數(shù)據(jù)還可包括,鎖定標準邏輯設備的相應槽,合并相應的高速緩存槽,及使只緩存虛擬設備的相應槽指向標準邏輯設備。
根據(jù)本發(fā)明,連接到遠程存儲設備的主機讀由本地存儲設備傳輸?shù)乃枰獢?shù)據(jù),其通過識別包含所需要數(shù)據(jù)的最近且一致的數(shù)據(jù)集并從最近且一致的數(shù)據(jù)集獲得所需要的數(shù)據(jù)進行。數(shù)據(jù)集可以是由本地存儲設備提交的數(shù)據(jù)塊。數(shù)據(jù)塊可被分配以序號,該序號小于包含其它數(shù)據(jù)的其它數(shù)據(jù)塊的序號,其它數(shù)據(jù)為開始寫所需要的數(shù)據(jù)之后由其它主機開始寫的數(shù)據(jù)。連接到遠程存儲設備的主機讀由本地存儲設備傳輸?shù)乃枰獢?shù)據(jù)還可包括,確定遠程存儲設備的多個磁軌是否正被讀,如果多個磁軌正被讀,在讀磁軌之前確定第一當前序號、讀磁軌、及確定第二當前序號,如果第一當前序號不等于第二當前序號,則重新讀磁軌。連接到遠程存儲設備的主機讀由本地存儲設備傳輸?shù)乃枰獢?shù)據(jù)還可包括,確定遠程存儲設備的多個磁軌是否正被讀,如果多個磁軌正被讀,在讀磁軌之前確定第一當前序號、讀磁軌、及確定第二當前序號,如果第一當前序號不等于第二當前序號,則返回錯誤。
根據(jù)本發(fā)明,從遠程存儲設備讀所需要的數(shù)據(jù)的計算機軟件,其中遠程存儲設備從另一存儲設備接收數(shù)據(jù)塊,包括確定所需要的數(shù)據(jù)是否是另一存儲設備提交的數(shù)據(jù)塊的一部分的可執(zhí)行代碼,如果所需要的數(shù)據(jù)不是另一存儲設備提交的數(shù)據(jù)塊的一部分則從相應的標準邏輯設備讀取所需要的數(shù)據(jù)的可執(zhí)行代碼;如果所需要的數(shù)據(jù)是另一存儲設備提交的數(shù)據(jù)塊的一部分,將所需要的數(shù)據(jù)傳輸給標準邏輯設備并從下列之一獲得所需要的數(shù)據(jù)的可執(zhí)行代碼在傳輸所需要的數(shù)據(jù)至標準邏輯設備之后從標準邏輯設備獲得及從另一存儲設備提交的數(shù)據(jù)塊獲得。計算機軟件還可包括,如果所需要的數(shù)據(jù)是另一存儲設備提交的數(shù)據(jù)塊的一部分則鎖定只緩存虛擬設備中指向所需要數(shù)據(jù)的相應槽的可執(zhí)行代碼。計算機軟件還可包括,在鎖定相應的槽后,再次確定所需要的數(shù)據(jù)是否是另一存儲設備提交的數(shù)據(jù)塊的一部分的可執(zhí)行代碼。計算機軟件還可包括,如果再次確定的結果表明所需要的數(shù)據(jù)不是另一存儲設備提交的數(shù)據(jù)塊的一部分,則解鎖相應的槽并從相應的標準邏輯設備讀所需要的數(shù)據(jù)的可執(zhí)行代碼。計算機軟件還可包括,鎖定標準邏輯設備的相應槽的可執(zhí)行代碼,合并相應的高速緩存槽的可執(zhí)行代碼,及使只緩存虛擬設備的相應槽指向標準邏輯設備的可執(zhí)行代碼。
根據(jù)本發(fā)明,用于連接到遠程存儲設備的主機讀由本地存儲設備傳輸?shù)乃枰獢?shù)據(jù)的計算機軟件,包括識別包含所需要數(shù)據(jù)的最近且一致的數(shù)據(jù)集的可執(zhí)行代碼,及從最近且一致的數(shù)據(jù)集獲得所需要的數(shù)據(jù)的可執(zhí)行代碼。數(shù)據(jù)集可以是由本地存儲設備提交的數(shù)據(jù)塊。數(shù)據(jù)塊可被分配以序號,該序號小于包含其它數(shù)據(jù)的其它數(shù)據(jù)塊的序號,其它數(shù)據(jù)為開始寫所需要的數(shù)據(jù)之后由其它主機開始寫的數(shù)據(jù)。計算機軟件還可包括,確定遠程存儲設備的多個磁軌是否正被讀的可執(zhí)行代碼,如果多個磁軌正被讀,在讀磁軌之前確定第一當前序號、讀磁軌、及確定第二當前序號的可執(zhí)行代碼,如果第一當前序號不等于第二當前序號,用于重新讀磁軌的可執(zhí)行代碼。計算機軟件還可包括,確定遠程存儲設備的多個磁軌是否正被讀的可執(zhí)行代碼,如果多個磁軌正被讀,在讀磁軌之前確定第一當前序號、讀磁軌、及確定第二當前序號的可執(zhí)行代碼,如果第一當前序號不等于第二當前序號,用于返回錯誤的可執(zhí)行代碼。
根據(jù)本發(fā)明,排序數(shù)據(jù)寫包括,主機提供多個數(shù)據(jù)寫給主存儲設備,主存儲設備將第一序號分配給在第一時間之后、第二時間之前開始的數(shù)據(jù)寫,主存儲設備將不同于第一序號的第二序號分配給在第二時間之后開始的數(shù)據(jù)寫,響應于被分配第一序號的所有寫的完成,主存儲設備將被分配第一序號的寫傳輸給輔助存儲設備,及響應于主存儲設備將所有被分配第一序號的寫傳輸給輔助存儲設備,主存儲設備發(fā)送提交信息給輔助存儲設備。排序數(shù)據(jù)寫還可包括,響應于從主存儲設備接收提交信息,輔助存儲設備保存具有第一序號的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,響應于保存具有第一序號的所有數(shù)據(jù)寫,輔助存儲設備發(fā)送確認給主存儲設備。排序數(shù)據(jù)寫還可包括,在發(fā)送提交信息給輔助存儲設備之后,主存儲設備暫停傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,在暫停傳輸數(shù)據(jù)之后,主存儲設備將不同于第一和第二序號的第三序號分配給隨后的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,響應于輔助存儲設備發(fā)送確認給主存儲設備,主存儲設備重新開始傳輸數(shù)據(jù)給輔助存儲設備。排序數(shù)據(jù)寫還可包括,提供數(shù)據(jù)寫給主存儲設備的高速緩存槽。排序數(shù)據(jù)寫還可包括,響應于被分配以第二序號的數(shù)據(jù)寫對應于已經(jīng)被分配以第一序號的高速緩存槽,將數(shù)據(jù)復制到新的高速緩存槽。排序數(shù)據(jù)寫還可包括,主存儲設備使用指向高速緩存槽的第一指針列表用于被分配以第一序號的數(shù)據(jù)寫,及主存儲設備使用指向高速緩存槽的第二指針列表用于被分配以第二序號的數(shù)據(jù)寫。排序數(shù)據(jù)寫還可包括,在每一槽的標題部分中提供高速緩存標簽字段,高速緩存標簽字段包括與槽相關聯(lián)的序號。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。排序數(shù)據(jù)寫還可包括,響應于槽不再被使用,清除密碼字段。排序數(shù)據(jù)寫還可包括,主存儲設備使用高速緩存槽的第一只緩存虛擬設備對應于被分配以第一序號的數(shù)據(jù)寫,及主存儲設備使用高速緩存槽的第二只緩存虛擬設備對應于被分配以第二序號的數(shù)據(jù)寫。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備包括,接收用于與第一序號關聯(lián)的數(shù)據(jù)的提交信息,響應于與不同于所述第一序號的第二序號相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二序號相關聯(lián)的數(shù)據(jù)被保存,并開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲。保存排序的寫還可包括確認提交信息。保存排序的寫還可包括,連同接收與第一序號相關聯(lián)的數(shù)據(jù)一起建立被修改的槽的列表。開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲還可包括遍歷被修改的槽的列表。
根據(jù)本發(fā)明,排序數(shù)據(jù)寫的計算機軟件包括,將第一序號分配給在第一時間之后、第二時間之前開始的數(shù)據(jù)寫的可執(zhí)行代碼,將不同于第一序號的第二序號分配給在第二時間之后開始的數(shù)據(jù)寫的可執(zhí)行代碼,響應于被分配第一序號的所有寫的完成,將被分配第一序號的寫傳輸給存儲設備的可執(zhí)行代碼,及在傳輸所有被分配第一序號的寫之后,發(fā)送提交信息給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,在發(fā)送提交信息給存儲設備之后,暫停傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,在暫停傳輸數(shù)據(jù)之后,將不同于第一和第二序號的第三序號分配給隨后的數(shù)據(jù)寫的可執(zhí)行代碼。計算機軟件還可包括,響應于存儲設備確認處理所述提交,重新開始傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。計算機軟件還可包括,提供數(shù)據(jù)寫給高速緩存槽的可執(zhí)行代碼。計算機軟件還可包括,響應于被分配以第二序號的數(shù)據(jù)寫對應于已經(jīng)被分配以第一序號的高速緩存槽,將數(shù)據(jù)復制到新的高速緩存槽的可執(zhí)行代碼。計算機軟件還可包括,使用指向高速緩存槽的第一指針列表用于被分配以第一序號的數(shù)據(jù)寫的可執(zhí)行代碼,及使用指向高速緩存槽的第二指針列表用于被分配以第二序號的數(shù)據(jù)寫的可執(zhí)行代碼。計算機軟件還可包括,在每一槽的標題部分中提供高速緩存標簽字段的可執(zhí)行代碼,高速緩存標簽字段包括與槽相關聯(lián)的序號。高速緩存標簽字段還可包括在槽第一次使用時被寫入的密碼字段。計算機軟件還可包括,響應于槽不再被使用,清除密碼字段的可執(zhí)行代碼。計算機軟件還可包括,使用高速緩存槽的第一只緩存虛擬設備對應于被分配以第一序號的數(shù)據(jù)寫的可執(zhí)行代碼,及使用高速緩存槽的第二只緩存虛擬設備對應于被分配以第二序號的數(shù)據(jù)寫的可執(zhí)行代碼。
根據(jù)本發(fā)明,將排序的寫保存到遠程存儲設備的計算機軟件包括,接收用于與第一序號關聯(lián)的數(shù)據(jù)的提交信息的可執(zhí)行代碼,響應于與不同于所述第一序號的第二序號相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二序號相關聯(lián)的數(shù)據(jù)被保存的可執(zhí)行代碼,及開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼。計算機軟件還可包括確認提交信息的可執(zhí)行代碼。計算機軟件還可包括,連同接收與第一序號相關聯(lián)的數(shù)據(jù)一起建立被修改的槽的列表的可執(zhí)行代碼。開始與第一序號相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼還可包括遍歷被修改的槽的列表的可執(zhí)行代碼。
根據(jù)本發(fā)明,使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,包括如果所需數(shù)據(jù)的全部均在本地存儲設備的高速緩存中,本地存儲設備從高速緩存返回數(shù)據(jù);及如果所需數(shù)據(jù)不全部在本地存儲設備的高速緩存中,則從遠程存儲設備讀數(shù)據(jù)到本地存儲設備且本地存儲設備將來自遠程存儲設備的數(shù)據(jù)與來自本地存儲設備的數(shù)據(jù)合并于本地存儲設備。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括在從遠程存儲設備讀數(shù)據(jù)到本地存儲設備之前,如果有來自本地存儲設備的數(shù)據(jù)將被讀,則在本地存儲設備中創(chuàng)建臨時存儲區(qū)。臨時存儲區(qū)可以是臨時槽。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括在創(chuàng)建臨時存儲區(qū)之前,鎖定本地存儲設備中對應于將被讀的、來自本地存儲設備的數(shù)據(jù)的槽。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括在合并數(shù)據(jù)之后,解鎖本地存儲設備中對應于將被讀的、來自本地存儲設備的數(shù)據(jù)的槽。來自本地存儲區(qū)的數(shù)據(jù)可被合并在來自遠程存儲區(qū)的數(shù)據(jù)的上面。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括響應于保存在遠程存儲設備的高速緩存槽中的數(shù)據(jù)將被讀,遠程存儲設備分配一臨時存儲區(qū)。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括從遠程存儲設備的磁盤將數(shù)據(jù)讀進臨時存儲區(qū),將保存在高速緩存槽中的將被讀的數(shù)據(jù)與來自臨時存儲區(qū)中的磁盤的數(shù)據(jù)進行合并。使用本地存儲設備讀保存在遠程存儲設備上的所需數(shù)據(jù),其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,還可包括在遠程存儲區(qū)確定是否有保存在遠程存儲設備的高速緩存槽中的數(shù)據(jù)將被讀之前,遠程存儲設備從遠程存儲設備的至少一高速緩存槽寫至少一部分數(shù)據(jù)到遠程存儲設備的磁盤中。
根據(jù)本發(fā)明,讀保存在遠程存儲設備上的所需數(shù)據(jù)的計算機軟件,其中遠程存儲設備從本地存儲設備接收數(shù)據(jù)塊,包括如果所需數(shù)據(jù)的全部均在本地存儲設備的高速緩存中,從高速緩存返回數(shù)據(jù)的可執(zhí)行代碼;及如果所需數(shù)據(jù)不全部在本地存儲設備的高速緩存中,則從遠程存儲設備讀數(shù)據(jù)到本地存儲設備且將來自遠程存儲設備的數(shù)據(jù)與來自本地存儲設備的數(shù)據(jù)合并于本地存儲設備的可執(zhí)行代碼。軟件還可包括在從遠程存儲設備讀數(shù)據(jù)到本地存儲設備之前,如果有來自本地存儲設備的數(shù)據(jù)將被讀,則在本地存儲設備中創(chuàng)建臨時存儲區(qū)的可執(zhí)行代碼。臨時存儲區(qū)可以是臨時槽。軟件還可包括在創(chuàng)建臨時存儲區(qū)之前,鎖定本地存儲設備中對應于將被讀的、來自本地存儲設備的數(shù)據(jù)的槽的可執(zhí)行代碼。軟件還可包括在合并數(shù)據(jù)之后,解鎖本地存儲設備中對應于將被讀的、來自本地存儲設備的數(shù)據(jù)的槽的可執(zhí)行代碼。來自本地存儲區(qū)的數(shù)據(jù)可被合并在來自遠程存儲區(qū)的數(shù)據(jù)的上面。軟件還可包括響應于保存在遠程存儲設備的高速緩存槽中的數(shù)據(jù)將被讀,在遠程存儲設備中分配臨時存儲區(qū)的可執(zhí)行代碼。軟件還可包括從遠程存儲設備的磁盤將數(shù)據(jù)讀進臨時存儲區(qū)的可執(zhí)行代碼,將保存在高速緩存槽中的將被讀的數(shù)據(jù)與來自臨時存儲區(qū)中的磁盤的數(shù)據(jù)進行合并的可執(zhí)行代碼。軟件還可包括在遠程存儲區(qū)確定是否有保存在遠程存儲設備的高速緩存槽中的數(shù)據(jù)將被讀之前,從遠程存儲設備的至少一高速緩存槽寫至少一部分數(shù)據(jù)到遠程存儲設備的磁盤中的可執(zhí)行代碼。
附圖簡要說明

圖1為連同在此描述的系統(tǒng)使用的主機、本地存儲設備及遠程數(shù)據(jù)存儲設備的示意圖。
圖2為連同在此描述的系統(tǒng)使用的主機、本地存儲設備及遠程數(shù)據(jù)存儲設備之間的數(shù)據(jù)流的示意圖。
圖3為根據(jù)在此描述的系統(tǒng),示出用于構建和利用本地存儲設備上的數(shù)據(jù)塊的項目的示意圖。
圖4示出了連同在此描述的系統(tǒng)使用的槽的數(shù)據(jù)結構。
圖5為根據(jù)在此描述的系統(tǒng),響應于主機的寫,主機適配器(HA)的操作流程圖。
圖6為根據(jù)在此描述的系統(tǒng),將數(shù)據(jù)從本地存儲設備傳輸?shù)竭h程存儲設備的流程圖。
圖7為根據(jù)在此描述的系統(tǒng),示出用于構建和利用遠程存儲設備上的數(shù)據(jù)塊的項目的示意圖。
圖8為根據(jù)在此描述的系統(tǒng),由遠程存儲設備執(zhí)行的、與從本地存儲設備接收提交指示符有關的步驟的流程圖。
圖9為根據(jù)在此描述的系統(tǒng),將所傳輸?shù)臄?shù)據(jù)保存在遠程存儲設備中的流程圖。
圖10為根據(jù)在此描述的系統(tǒng),所執(zhí)行的與本地存儲設備增加序號有關的步驟的流程圖。
圖11為根據(jù)在此描述的系統(tǒng)的另一實施例,用于構建和利用本地存儲設備上的數(shù)據(jù)塊的項目的示意圖。
圖12為根據(jù)在此描述的系統(tǒng)的另一實施例,響應于主機的寫,主機適配器(HA)的操作流程圖。
圖13為根據(jù)在此描述的系統(tǒng)的另一實施例,將數(shù)據(jù)從本地存儲設備傳輸?shù)竭h程存儲設備的流程圖。
圖14為連同在此描述的系統(tǒng)使用的第一主機、本地存儲設備、遠程數(shù)據(jù)存儲設備、連接到遠程存儲設備的第二主機之間的數(shù)據(jù)流的示意圖。
圖15為根據(jù)在此描述的系統(tǒng),所執(zhí)行的與主機從遠程存儲設備讀虛擬排序的寫有關的步驟的流程圖。
圖16A和16B為根據(jù)在此描述的系統(tǒng),所執(zhí)行的與主機從遠程存儲設備讀多個磁軌的虛擬排序的寫的不同實施例有關的步驟的流程圖。
圖17為連同在此描述的系統(tǒng)使用的第一主機、本地存儲設備、遠程數(shù)據(jù)存儲設備、及連接到本地存儲設備的另一主機之間的數(shù)據(jù)流的示意圖。
圖18為根據(jù)在此描述的系統(tǒng),所執(zhí)行的與連接到本地存儲設備的主機從遠程存儲設備讀虛擬排序的寫有關的步驟的流程圖。
圖19A和19B為根據(jù)在此描述的系統(tǒng),響應于來自連接到主機的本地存儲設備的讀請求從遠程存儲設備讀虛擬排序的寫,由遠程存儲設備執(zhí)行的步驟的流程圖。
具體實施例方式
參考圖1,圖表20示出了主機22、本地存儲設備24和遠程存儲設備26之間的關系。主機22經(jīng)主機適配器(HA)28從本地存儲設備讀數(shù)據(jù)及寫數(shù)據(jù)到本地存儲設備,主機適配器便于主機22和本地存儲設備24之間的連接。盡管圖表20僅示出了一個主機22和一個HA28,本領域一般技術人員可以意識到的是,可使用多個HA,且一個或多個HA可有一個或多個主機與其連接。
來自本地存儲設備24的數(shù)據(jù)經(jīng)RDF鏈路29復制到遠程存儲設備26以使遠程存儲設備26上的數(shù)據(jù)與本地存儲設備24上的數(shù)據(jù)一樣。盡管只示出了一個鏈路29,在存儲設備24、26之間及在存儲設備24、26之一或二者與其它存儲設備(未示出)之間具有另外的鏈路是可能的。注意,在從本地存儲設備24到遠程存儲設備26的數(shù)據(jù)傳輸之間可能有時間延遲,從而遠程存儲設備26可能,在某些時間點,某些數(shù)據(jù)與本地存儲設備上的數(shù)據(jù)不一樣。使用RDF的通信在美國專利5,742,792中描述,其通過引用組合于此。
本地存儲設備24包括第一多個RDF適配器單元(RA)30a、30b、30c,遠程存儲設備26包括第二多個RA32a-32c。RA30a-30c、32a-32c均連接到RDF鏈路29且均類似于主機適配器28,但用于在存儲設備24、26之間傳輸數(shù)據(jù)。連同RA30a-30c、32a-32c使用的軟件將在下文中詳細描述。
存儲設備24、26可包括一個或多個磁盤,每一磁盤包含保存在每一存儲設備24、26上的數(shù)據(jù)的不同部分。圖1示出了存儲設備24包括多個磁盤33a、33b、33c,及存儲設備26包括多個磁盤34a、34b、34c。在此描述的RDF功能可被應用,使得本地存儲設備24的磁盤33a-33c的至少一部分的數(shù)據(jù)可使用RDF復制到遠程存儲設備26的磁盤34a-34c的至少一部分中。存儲設備24、26的其它數(shù)據(jù)不在存儲設備24、26之間進行復制是可能的,因而不完全相同。
磁盤33a-33c中的每一個被連接到對應的磁盤適配器單元(DA)35a、35b、35c,其提供數(shù)據(jù)給磁盤33a-33c中的對應磁盤并從磁盤33a-33c中的對應磁盤接收數(shù)據(jù)。類似地,遠程存儲設備26的多個DA36a、36b、36c均用于提供數(shù)據(jù)給磁盤34a-34c中的對應磁盤并從磁盤34a-34c中的對應磁盤接收數(shù)據(jù)。在本地存儲設備24的DA35a-35c、HA28和RA30a-30c之間存在內(nèi)部數(shù)據(jù)通路。類似地,在遠程存儲設備的DA36a-36c和RA32a-32c之間也存在內(nèi)部數(shù)據(jù)通路。注意,在其它實施例中,DA服務于一個以上的磁盤是可能的,且一個以上的DA服務于一個磁盤也是可能的。
本地存儲設備24還包括全局存儲器37,其可用于幫助在DA35a-35c、HA28和RA30a-30c之間的數(shù)據(jù)傳輸。存儲器37可包含將由DA35a-35c、HA28和RA30a-30c中的一個或多個執(zhí)行的任務,及包含用于從磁盤33a-33c中的一個或多個取回的數(shù)據(jù)的高速緩存器。類似地,遠程存儲設備26包括全局存儲器38,其可包含將由DA36a-36c和RA32a-32c中的一個或多個執(zhí)行的任務,及包含用于從磁盤34a-34c中的一個或多個取回的數(shù)據(jù)的高速緩存器。存儲器37、38的使用將在下文中詳細描述。
本地存儲設備24中對應于磁盤33a-33c的存儲空間可被再分為多個卷或邏輯設備。邏輯設備可以也可不對應于磁盤33a-33c的物理存儲空間。因而,例如,磁盤33a可包含多個邏輯設備,或者單個邏輯設備可橫跨兩個磁盤33a、33b。類似地,遠程存儲設備26的包括磁盤34a-34c的存儲空間可被再分為多個卷或邏輯設備,其中每一邏輯設備可以也可不對應于磁盤34a-34c中的一個或多個。
假設在本地存儲設備24和遠程存儲設備26的部分之間進行映射的RDF包括,在遠程存儲設備26上建立邏輯設備,其是對本地存儲設備24上的邏輯設備的遠程鏡像。主機22從本地存儲設備24上的邏輯設備讀數(shù)據(jù)并寫數(shù)據(jù)到該邏輯設備,且RDF映射使得已修改的數(shù)據(jù)將通過使用RA30a-30c、32a-32c和RDF鏈路而從本地存儲設備24傳輸?shù)竭h程存儲設備26。在穩(wěn)態(tài)工作情況下,遠程存儲設備26上的邏輯設備包含的數(shù)據(jù)與本地存儲設備24上的邏輯設備的數(shù)據(jù)完全一樣。本地存儲設備24上為主機22所訪問的邏輯設備被稱為“R1卷”(或“R1”),而遠程存儲設備26上包含R1卷上的數(shù)據(jù)的拷貝的邏輯設備被稱為“R2卷”(或“R2”)。因此,主機從R1卷讀數(shù)據(jù)并將數(shù)據(jù)寫到R1卷,及RDF處理從R1卷到R2卷的數(shù)據(jù)的自動復制和更新。
參考圖2,其示出了從主機22到本地存儲設備24和遠程存儲設備26的數(shù)據(jù)通路。如本地存儲設備24的數(shù)據(jù)元51所示,從主機22寫到本地存儲設備24的數(shù)據(jù)被本地保存。由主機22寫到本地存儲設備24的數(shù)據(jù)還被本地存儲設備24保持并由本地存儲設備24經(jīng)鏈路29發(fā)送給遠程存儲設備26。
在在此描述的系統(tǒng)中,主機22的每一數(shù)據(jù)寫(如記錄、多個記錄、磁軌等的寫)均被分配以序號。序號可在與寫相關聯(lián)的適當數(shù)據(jù)字段中提供。在圖2中,主機22的寫被示為被分配以序號N。由主機執(zhí)行的、被分配以序號N的所有寫均被收集在一個數(shù)據(jù)塊52中。數(shù)據(jù)塊52代表由主機22執(zhí)行的、幾乎在同時發(fā)生的多個單獨的寫。
通常,本地存儲設備24積聚一個序號的數(shù)據(jù)塊,同時將先前積聚的數(shù)據(jù)塊(具有在前的序號)傳輸給遠程存儲設備26。因而,當本地存儲設備24正積聚來自主機的、被分配以序號N的寫時,已發(fā)生的、在前序號(N-1)的寫由本地存儲設備24經(jīng)鏈路29傳輸給遠程存儲設備26。數(shù)據(jù)塊54代表來自主機22的、被分配以序號N-1的、尚未傳輸給遠程存儲設備26的寫。
遠程存儲設備26從對應于被分配以序號N-1的寫的數(shù)據(jù)塊接收數(shù)據(jù)并為具有序號N-1的主機寫建立新的數(shù)據(jù)塊56。數(shù)據(jù)可使用適當?shù)腞DF協(xié)議進行傳輸,其確認跨鏈路29發(fā)送的數(shù)據(jù)。當遠程存儲設備26已從數(shù)據(jù)塊54接收所有的數(shù)據(jù)時,本地存儲設備24發(fā)送提交信息給遠程存儲設備26以提交被分配以N-1序號的所有數(shù)據(jù),其對應于數(shù)據(jù)塊56。通常,一旦對應于特定序號的數(shù)據(jù)塊被提交,則數(shù)據(jù)塊可被寫到邏輯存儲設備。這在圖2中用數(shù)據(jù)塊58圖示,其對應于被分配以序號N-2(即,主機22到本地存儲設備24的寫正使用的當前序號之前的第二個序號)的寫。在圖2中,數(shù)據(jù)塊58被示出為正被寫到數(shù)據(jù)元62,其代表遠程存儲設備26的磁盤存儲。因而,遠程存儲設備26正接收和積聚對應于序號N-1的數(shù)據(jù)塊56,同時對應于在前序號(N-2)的數(shù)據(jù)塊58正被寫到遠程存儲設備26的磁盤存儲,如數(shù)據(jù)元62所示。在一實施例中,數(shù)據(jù)塊58的數(shù)據(jù)因為寫(但不是必需立即寫)而被標記,而數(shù)據(jù)塊56的數(shù)據(jù)則未被標記。
因此,在運行中,主機寫數(shù)據(jù)到本地存儲設備24,該數(shù)據(jù)被本地保存在數(shù)據(jù)元51中并被積聚在數(shù)據(jù)塊52中。一旦特定序號的所有數(shù)據(jù)均已被積聚(在本文的其它地方描述),本地存儲設備24遞增序號。對應于小于當前序號的序號的數(shù)據(jù)塊54的數(shù)據(jù)經(jīng)鏈路29從本地存儲設備24傳輸?shù)竭h程存儲設備26。數(shù)據(jù)塊58對應于已由本地存儲設備24通過發(fā)送消息給遠程存儲設備26進行提交的序號的數(shù)據(jù)。數(shù)據(jù)塊58的數(shù)據(jù)被寫到遠程存儲設備26的磁盤存儲。
應注意的是,在數(shù)據(jù)塊52、54、56、58特定之一內(nèi)的寫不是必須被排序。然而,如本文中其它地方所詳細描述的,在開始對應于序號N-1的數(shù)據(jù)塊54、56的任何寫之前,對應于序號N-2的數(shù)據(jù)塊58的每一寫均已開始。此外,在開始對應于序號N的數(shù)據(jù)塊52的任何寫之前,對應于序號N-1的數(shù)據(jù)塊54、56的每一寫均已開始。因此,如果本地存儲設備24和遠程存儲設備26之間通信失敗,遠程存儲設備26可簡單地結束最后提交的數(shù)據(jù)塊(在圖2的例子中為數(shù)據(jù)塊58)的寫,并可被保證遠程存儲設備26處的數(shù)據(jù)的狀態(tài)被排序,其中數(shù)據(jù)元62包含在某一時間點之前開始的所有寫且不包含該時間點之后開始的寫。因而,R2總是包含R1的即時拷貝且從R2設備重新建立一致的映射是可能的。
參考圖3,圖表70示出了用于構建和保持數(shù)據(jù)塊52、54的項目。標準邏輯設備72包含由主機22寫入的數(shù)據(jù)并對應于圖2的數(shù)據(jù)元51和圖1的磁盤33a-33c。標準邏輯設備72包含由主機22寫到本地存儲設備24的數(shù)據(jù)。
兩個指針的鏈表74、76與標準邏輯設備72一起使用。鏈表74、76對應于可被保存在本地存儲設備24的存儲器37中的數(shù)據(jù)。鏈表74包含多個指針81-85,每一指針指向與本地存儲設備24一起使用的高速緩存器88的槽。類似地,鏈表76包含多個指針91-95,每一指針指向高速緩存器88的槽。在一些實施例中,高速緩存器88可被提供在本地存儲設備24的存儲器37中。高速緩存器88包含多個緩存槽102-104,其可連同向標準邏輯設備72寫一起使用,同時,可連同鏈表74、76一起使用。
鏈表74、76中的每一個均可用于數(shù)據(jù)塊52、54之一,使得鏈表74可對應于序號N的數(shù)據(jù)塊52,而鏈表76可對應于序號N-1的數(shù)據(jù)塊54。因而,當數(shù)據(jù)由主機22寫到本地存儲設備24時,數(shù)據(jù)被提供給高速緩存器88,在某些情況下(在本文其它地方描述),鏈表74的適當指針被產(chǎn)生。應注意,數(shù)據(jù)將不會從高速緩存器88去除,直到數(shù)據(jù)被降級(destage)到標準邏輯設備72且數(shù)據(jù)不再被鏈表74的任一指針81-85指向為止,如本文其它地方所述。
在在此的實施例中,鏈表74、76之一被視為“活動態(tài)”,而另一個被視為“非活動態(tài)”。因此,當序號N為偶數(shù)時,鏈表74可以是活動態(tài),而鏈表76是非活動態(tài)。鏈表74、76中的活動態(tài)鏈表處理來自主機22的寫,而非活動態(tài)鏈表對應于正從本地存儲設備24傳輸?shù)竭h程存儲設備26的數(shù)據(jù)。
在由主機22寫的數(shù)據(jù)通過使用鏈表74、76中的活動態(tài)鏈表進行積聚時(對于序號N),對應于鏈表74、76中的非活動態(tài)鏈表的數(shù)據(jù)(對于在前的序號N-1)被從本地存儲設備24傳輸?shù)竭h程存儲設備26。RA30a-30c使用鏈表74、76確定數(shù)據(jù)從本地存儲設備24傳輸?shù)竭h程存儲設備26。
一旦對應于鏈表74、76之一中的指針的特定指針的數(shù)據(jù)已被傳輸給遠程存儲設備26,指針中的特定指針可從鏈表74、76中的適當鏈表去除。此外,假如槽中的數(shù)據(jù)不再因其它目的需要(如降級到標準邏輯設備72),數(shù)據(jù)還可被標記以從高速緩存器88去除(即槽可被返回到槽池以用于隨后的、不相干的使用)。一機制可被用于確保數(shù)據(jù)不被從高速緩存器88去除,直到所有設備不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568、及2001年7月7日申請的美國專利申請09/850,551中有所描述,二者均通過引用組合于此。
參考圖4,槽120,與高速緩存器88的槽102-104之一類似,包括標題122和數(shù)據(jù)124。標題122對應于系統(tǒng)用以管理槽120的內(nèi)務信息。數(shù)據(jù)124為來自磁盤的、正被(暫時)保存在槽120中的相應數(shù)據(jù)。標題122中的信息包括指回到磁盤的指針、時間標簽等。
標題122還包括與在此描述的系統(tǒng)一起使用的緩存標簽126。在在此的實施例中,緩存標簽126為8個字節(jié)。其中兩個字節(jié)為“密碼”,其表明槽120是否正由在此描述的系統(tǒng)使用。在其它實施例中,密碼可以是一個字節(jié),而其后的字節(jié)用于填充。如本文其它地方所描述的,等于特定值的兩字節(jié)密碼(或一字節(jié))表明槽120被鏈表74、76的至少一項指向。不等于特定值的密碼表明槽120未被鏈表74、76的項指向。密碼的使用將在本文其它地方描述。
緩存標簽126還包括一兩字節(jié)字段,其指明槽120的數(shù)據(jù)124的序號(如N、N-1、N-2等)。如本文其它地方所描述的,緩存標簽126的序號字段可用于幫助在此描述的處理。緩存標簽126的其余四個字節(jié)可用于指針,如本文其它地方所描述的那樣。當然,序號的兩個字節(jié)和指針的四個字節(jié)僅在密碼等于特定值時是有效的,其中特定值表明槽120被列表74、76之一中的至少一項指向。
參考圖5,流程圖140示出了連同主機22執(zhí)行寫操作,由HA28執(zhí)行的步驟。當然,當主機22執(zhí)行寫時,處理出現(xiàn)以用一般方式處理寫,而不管數(shù)據(jù)是否是R1/R2RDF組的一部分。例如,當主機22對磁盤的一部分寫數(shù)據(jù)時,對緩存槽的寫發(fā)生,其最后被降級到磁盤。緩存槽或可以是新的緩存槽,或可以是已經(jīng)存在的、連同先前對同一磁軌進行的讀和/或寫操作產(chǎn)生的緩存槽。
處理開始于第一步驟142,其中對應于寫的槽被鎖定。在在此的實施例中,高速緩存器88的每一槽102-104對應于標準邏輯設備上的數(shù)據(jù)磁道。在步驟142鎖定槽阻止另外的過程在HA28執(zhí)行的、對應于流程圖140的步驟的處理期間在相應的槽上運行。
在步驟142之后是步驟144,其中序號N的值被設定。如本文別處所描述的,在步驟144獲得的序號的值在HA28執(zhí)行的整個寫操作期間均被保持,同時槽被鎖定。如本文別處所描述的,序號被分配給每一寫以設定寫屬于數(shù)據(jù)塊52、54中的哪一個。主機22執(zhí)行的寫被分配以當前序號。單一寫操作始終保持同一序號是有用的。
在步驟144之后是測定步驟146,其確定緩存槽的密碼字段是否有效。如上所述,在此描述的系統(tǒng)將密碼字段設定為預先確定的值以表明緩存槽已經(jīng)在指針的鏈表74、76之一中。如果在測定步驟146確定密碼字段無效(表明槽是新的且沒有列表74、76的指針指向該槽),則控制從步驟146轉到步驟148,新槽的緩存標簽被設定,其中將密碼設定為預先確定的值、將序號字段設定為N、將指針字段設定為空。在其它實施例中,指針字段可被設定為指向槽本身。
在步驟148之后是步驟152,指向新槽的指針被添加到指針列表74、76中的活動態(tài)列表。在在此的一實施例中,列表74、76為循環(huán)雙向鏈表,且新指針被以傳統(tǒng)方式添加到循環(huán)雙向鏈表中。當然,其它適當?shù)臄?shù)據(jù)結構也可用于管理列表74、76。在步驟152之后是步驟154,其中標志被設定。在步驟154,RDF_WP標志(RDF寫懸掛標志)被設定以表明該槽需要通過使用RDF傳輸給遠程存儲設備26。此外,在步驟154,IN_CACHE標志被設定以表明該槽需要被降級到標準邏輯設備72。在步驟154之后是步驟156,由主機22和HA28寫的數(shù)據(jù)被寫到該槽中。在步驟156之后是步驟158,該槽被解鎖。在步驟158之后,處理結束。
如果在測定步驟146確定槽的密碼字段有效(表明該槽已經(jīng)被列表74、76的至少一指針指向),則控制從步驟146轉到測定步驟162,其確定該槽的序號字段是否等于當前序號N。應注意,對于具有有效密碼的槽的序號字段有兩種有效的可能性。序號字段等于N(當前序號)是可能的。這在槽對應于具有序號N的在前寫的情況下發(fā)生。另一種可能性是序號字段等于N-1。這在槽對應于具有序號N-1的在前寫的情況下發(fā)生。序號字段的任何其它值均是無效的。因此,對于某些實施例,在步驟162中包括錯誤/有效性檢查或在單獨的步驟中進行錯誤/有效性檢查是可能的。這樣的錯誤可以任何適當?shù)姆绞教幚?,其可包括提供消息給用戶。
如果在測定步驟162確定槽的序號字段中的值等于當前序號N,則不要求特殊的處理且控制從步驟162轉到步驟156,如上所述,數(shù)據(jù)被寫到槽中。否則,如果序號字段的值為N-1(唯一另外的有效值),則控制從步驟162轉到步驟164,新槽被獲得。在步驟164獲得的新槽可用于保存正被寫的數(shù)據(jù)。
在步驟164之后是步驟166,來自舊槽的數(shù)據(jù)被復制到小步驟164獲得的新槽。應注意,所復制的數(shù)據(jù)包括RDF_WP標志,其應在該槽被第一次創(chuàng)建時已被設定(步驟154)。在步驟166之后是步驟168,新槽的緩存標簽被設定,其將密碼字段設定為適當?shù)闹?、將序號字段設定為當前序號N、及將指針字段設定為指向舊槽。在步驟168之后是步驟172,指向新槽的指針被添加到鏈表74、76中的活動態(tài)鏈表。在步驟172之后是步驟156,如上所述,數(shù)據(jù)被寫到槽中,在該例子中,其是新槽。
參考圖6,流程圖200示出了連同RA30a-30c掃描鏈表72、74中的非活動態(tài)鏈表所執(zhí)行的步驟以將RDF數(shù)據(jù)從本地存儲設備24傳輸?shù)竭h程存儲設備26。如上所述,當N循環(huán)正由主機使用鏈表72、74中的活動態(tài)鏈表寫到R1設備時,鏈表72、74中的非活動態(tài)鏈表指向對應于R1設備的N-1循環(huán)的槽。
處理開始于第一步驟202,其確定在列表72、74的非活動態(tài)表中是否有任何項。當數(shù)據(jù)被傳輸時,相應的項被從列表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轉到步驟204,其中槽被驗證為是正確的。在步驟204執(zhí)行的處理是隨意的“精神健全檢查”,其可包括驗證密碼字段是正確的及驗證序號字段是正確的。如果在槽中有不正確的(意外的)數(shù)據(jù),則可執(zhí)行錯誤處理,其可包括通知用戶該錯誤及可能的錯誤校正處理。
在步驟204之后是步驟212,數(shù)據(jù)以傳統(tǒng)方式經(jīng)RDF進行發(fā)送。在在此的一實施例中,整個槽均未被傳輸。而是,只有槽內(nèi)具有適當?shù)溺R像位設置(表明記錄已改變)的記錄被傳輸給遠程存儲設備26。然而,在其它實施例中,則可能傳輸整個槽,假如遠程存儲設備26只寫對應于具有適當鏡像位設置的數(shù)據(jù)并忽略該磁軌的其它數(shù)據(jù),其可能是也可能不是有效的。在步驟212之后是測定步驟214,其確定被傳輸?shù)臄?shù)據(jù)是否已被R2設備確認。如果沒有,則數(shù)據(jù)被按照從步驟214回到步驟212的流程的指示重新發(fā)送。在其它實施例中,不同的及更多有關的處理可用于發(fā)送數(shù)據(jù)及確認其接收。這樣的處理可包括錯誤報告及在一定數(shù)量的發(fā)送數(shù)據(jù)的努力已失敗之后執(zhí)行的另外的處理。
一旦在測定步驟214確定數(shù)據(jù)已被成功發(fā)送,控制從步驟214轉到步驟216以清除RDF_WP標志(因為數(shù)據(jù)已經(jīng)RDF成功發(fā)送)。在步驟216之后是測定步驟218,其確定該槽是否是連同向已經(jīng)具有列表72、74的非活動態(tài)列表中的現(xiàn)存項的槽進行寫而創(chuàng)建的復制槽。這種可能性已在上面連同步驟162、164、166、168、172進行描述。如果在測定步驟218確定該槽是復制槽,則控制從步驟218轉到步驟222,該槽被返回到可用的槽池中(將被重新使用)。此外,槽還可被老化(或具有某些應用于其的其它適當機制)以在其它槽之前提供用于立即的重新使用,因為該槽中提供的數(shù)據(jù)對于任何其它目的均不是有效的。在步驟222或步驟218(如果槽不是復制槽)之后是步驟224,槽的標題的密碼字段被清零,使得當槽被重新使用時,在圖5的步驟146的測定可正確地將該槽分類為新槽。
在步驟224之后是步驟226,列表72、74的非活動態(tài)列表中的項被移除。在步驟226之后,控制轉回到步驟202,如上所述,其確定在列表72、74的非活動態(tài)列表上是否有另外的項對應于需要被傳輸?shù)臄?shù)據(jù)。
參考圖7,圖表240示出了遠程存儲設備26所使用的數(shù)據(jù)塊56、58的產(chǎn)生和處理。由遠程存儲設備26接收的數(shù)據(jù)經(jīng)鏈路29提供給遠程存儲設備26的高速緩存器242。高速緩存器242可被提供在遠程存儲設備26的存儲器38中。高速緩存器242包括多個緩存槽244-246,每一緩存槽可被映射到標準邏輯存儲設備252的磁軌。高速緩存器242類似于圖3的高速緩存器88并可包含可被降級到遠程存儲設備26的標準邏輯存儲設備252的數(shù)據(jù)。標準邏輯存儲設備252對應于圖2中所示的數(shù)據(jù)元62及圖1中所示的磁盤34a-34c。
遠程存儲設備26還包含一對只緩存虛擬設備254、256。只緩存虛擬設備254、256對應可能保存在遠程存儲設備26的存儲器38中的設備表。每一只緩存虛擬設備254、256的表的每一磁軌項(trackentry)或指向標準邏輯設備252的磁軌或指向高速緩存器242的槽。只緩存虛擬設備在2003年3月25日申請的、題為“CACHE-ONLY虛擬設備”的美國未決專利申請10/396,800中描述,其通過引用組合于此。
多個緩存槽244-246可與向標準邏輯設備252進行寫一起使用,同時,也可與只緩存虛擬設備254、256一起使用。在在此的實施例中,只緩存虛擬設備254、256的每一磁軌表項包含一空值以表明該磁軌的數(shù)據(jù)被保存在標準邏輯設備252的對應磁軌上。否則,每一只緩存虛擬設備的磁軌表中的項包含指向高速緩存器242中的槽244-246之一的指針。
每一只緩存虛擬設備254、256對應于數(shù)據(jù)塊56、58之一。因而,例如,只緩存虛擬設備254可對應于數(shù)據(jù)塊56,而只緩存虛擬設備256可對應于數(shù)據(jù)塊58。在在此的實施例中,只緩存虛擬設備254、256之一可被視為“活動態(tài)”,而只緩存虛擬設備254、256中的另一個可被視為“非活動態(tài)”。只緩存虛擬設備254、256中的非活動態(tài)虛擬設備可對應于正從本地存儲設備24接收的數(shù)據(jù)(即數(shù)據(jù)塊56),而只緩存虛擬設備254、256中的活動態(tài)虛擬設備對應于正被恢復(寫)到標準邏輯設備252的數(shù)據(jù)。
來自本地存儲設備24的、經(jīng)鏈路29接收的數(shù)據(jù)可被放置在高速緩存器242的槽244-246之一中。只緩存虛擬設備254、256中的非活動態(tài)虛擬設備的相應指針可被設置為指向所接收的數(shù)據(jù)。隨后的具有相同序號的數(shù)據(jù)可以類似的方式進行處理。在某一時間,本地存儲設備24提供消息,其提交所有使用同一序號發(fā)送的數(shù)據(jù)。一旦特定序號的數(shù)據(jù)已被提交,只緩存虛擬設備254、256中的非活動態(tài)設備變成活動態(tài),反之亦然。在這時,來自只緩存虛擬設備254、256的當前活動態(tài)設備的數(shù)據(jù)被復制到標準邏輯設備252,而只緩存虛擬設備254、256中的非活動態(tài)設備被用于接收從本地存儲設備24傳輸給遠程存儲設備26的新數(shù)據(jù)(具有新的序號)。
當從只緩存虛擬設備254、256中的活動態(tài)設備移除數(shù)據(jù)時(在本文別處描述),只緩存虛擬設備254、256中的活動態(tài)設備中的對應項可被設為空值。此外,假如槽中的數(shù)據(jù)不再為其它目的所需要(如將被降級到標準邏輯設備252),數(shù)據(jù)還可從高速緩存器244中移除(即該槽被返回到空閑槽池中以供后用)。一機制可用于確保數(shù)據(jù)不從高速緩存器242中移除,直到所有鏡像(包括只緩存虛擬設備254、256)均不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568及2001年7月7日申請的美國專利申請09/850,551中描述,二者均通過引用組合于此。
在本文別處討論的一些實施例中,遠程存儲設備26可包含鏈表258、262,類似于本地存儲設備24使用的鏈表74、76。鏈表258、262可包含這樣的信息,其確定相應的只緩存虛擬設備254、256中已被修改的槽,其中列表258、262之一對應于只緩存虛擬設備254、256之一,及列表258、262中的另一列表對應于只緩存虛擬設備254、256中的另一個。如本文別處所描述的,列表258、262可用于幫助從只緩存虛擬設備254、256恢復數(shù)據(jù)到標準邏輯設備252中。
參考圖8,流程圖270示出了與處理用于序號提交的數(shù)據(jù)有關的、由遠程存儲設備26執(zhí)行的步驟,其中所述數(shù)據(jù)由本地存儲設備24傳輸給遠程存儲設備26。如本文別處所描述的,本地存儲設備24定期遞增序號。當其發(fā)生時,本地存儲設備24結束在前序號的所有數(shù)據(jù)的傳輸并繼而發(fā)送一用于在前序號的提交信息。
處理開始于第一步驟272,其接收提交。在步驟272之后是測定步驟274,其確定遠程存儲設備26的只緩存虛擬設備254、256中的活動態(tài)虛擬設備是否是空的。如本文別處所描述的,遠程存儲設備26的只緩存虛擬設備254、256中的非活動態(tài)虛擬設備用于積聚來自本地存儲設備24的使用RDF發(fā)送的數(shù)據(jù),而只緩存虛擬設備254、256中的活動態(tài)虛擬設備被恢復到標準邏輯設備252。
如果在測定步驟274確定只緩存虛擬設備254、256中的活動態(tài)虛擬設備不是空的,則控制從測定步驟274轉到步驟276,其中,在執(zhí)行進一步的處理之前只緩存虛擬設備254、256中的活動態(tài)虛擬設備的恢復被完成。從只緩存虛擬設備254、256中的活動態(tài)虛擬設備恢復數(shù)據(jù)將在本文別處詳細描述。在處理提交并開始恢復下一序號的數(shù)據(jù)之前只緩存虛擬設備254、256中的活動態(tài)虛擬設備為空是有用的。
在步驟276之后或在步驟274之后(如果只緩存虛擬設備254、256中的活動態(tài)虛擬設備被確定為空)是步驟278,只緩存虛擬設備254、256中的活動態(tài)虛擬設備被使得為非活動態(tài)。在步驟278之后是步驟282,只緩存虛擬設備254、256中先前非活動態(tài)的虛擬設備(即在執(zhí)行步驟278之前為非活動態(tài)的虛擬設備)被變成活動態(tài)。在步驟278、282交換活動態(tài)及非活動態(tài)只緩存虛擬設備254、256準備了只緩存虛擬設備254、256中的當前非活動態(tài)(及空)的虛擬設備以開始從本地存儲設備24接收下一序號的數(shù)據(jù)。
在步驟282之后是步驟284,只緩存虛擬設備254、256中的活動態(tài)虛擬設備被恢復到遠程存儲設備26的標準邏輯設備252。將只緩存虛擬設備254、256中的活動態(tài)虛擬設備恢復到標準邏輯設備252將在下文中詳細描述。然而,應注意,在一些實施例中,恢復過程在步驟284開始,但不必在步驟284就結束。在步驟284之后是步驟286,已從本地存儲設備24發(fā)送到遠程存儲設備26的提交被確認回到本地存儲設備24,使得本地存儲設備24被通知提交成功。在步驟286之后,處理結束。
參考圖9,流程圖300更詳細地示出了圖8的步驟276、284,其中遠程存儲設備26恢復只緩存虛擬設備254、256中的活動態(tài)虛擬設備。處理開始于第一步驟302,指針被設定為指向只緩存虛擬設備254、256中的活動態(tài)虛擬設備的第一槽。指針用于重復通過只緩存虛擬設備254、256中的活動態(tài)虛擬設備的每一磁軌表項,每一磁軌表項均被單獨處理。在步驟302之后是測定步驟304,其確定只緩存虛擬設備254、256中的活動態(tài)虛擬設備的正被處理的磁軌是否指向標準邏輯設備252。如果是,則沒有東西需要恢復。否則,控制從步驟304轉到步驟306,只緩存虛擬設備254、256中的活動態(tài)虛擬設備的相應槽被鎖定。
在步驟306之后是測定步驟308,其確定標準邏輯設備252的相應槽是否已經(jīng)在遠程存儲設備26的高速緩存器中。如果是,則控制從測定步驟308轉到步驟312,標準邏輯設備的槽被鎖定。在步驟312之后是步驟314,來自只緩存虛擬設備254、256中的活動態(tài)虛擬設備的數(shù)據(jù)與用于標準邏輯設備252的高速緩存器中的數(shù)據(jù)合并。在步驟314合并數(shù)據(jù)包括用只緩存虛擬設備254、256中的活動態(tài)虛擬設備的新數(shù)據(jù)蓋寫標準邏輯設備的數(shù)據(jù)。應注意,在對記錄級標志提供的實施例中,則可能簡單地將新記錄從只緩存虛擬設備254、256中的活動態(tài)虛擬設備或(OR)到高速緩存器中的標準邏輯設備252的記錄。即,如果記錄被交叉存取,則只需使用來自只緩存虛擬設備254、256中的活動態(tài)虛擬設備的已改變的記錄,并將記錄提供給標準邏輯設備252的緩存槽。在步驟314之后是步驟316,標準邏輯設備252的槽被解鎖。在步驟316之后是步驟318,只緩存虛擬設備254、256中的活動態(tài)虛擬設備的正被處理的槽也被解鎖。
如果在測定步驟308確定標準邏輯設備252的相應槽不在高速緩存器中,則控制從測定步驟308轉到步驟322,改變標準邏輯設備252的槽的磁軌項以表明標準邏輯設備252的槽在高速緩存器中(如可設置IN_CACHE標志)并需要被降級。如本文別處所述,在一些實施例中,只有具有適當鏡像位設置的磁軌的記錄才需要被降級。在步驟322之后是步驟324,可設置磁軌的標志以表明該磁軌的數(shù)據(jù)在高速緩存器中。
在步驟324之后是步驟326,標準邏輯設備252的槽指針被改變?yōu)橹赶蚋咚倬彺嫫髦械牟?。在步驟326之后是測定步驟328,其確定在步驟322、324、326執(zhí)行的操作是否已成功。在某些情況下,一稱為“比較和交換”的操作可用于執(zhí)行步驟322、324、326。如果這些操作因任何原因而沒有成功,則控制從步驟328轉回到步驟308以重新檢查標準邏輯設備252的相應磁軌是否在高速緩存器中。否則,如果在測定步驟328確定先前的操作均已成功,則控制從測定步驟328轉到步驟318,如上所述。
在步驟318之后是測定步驟332,其確定只緩存虛擬設備254、256中的活動態(tài)虛擬設備的緩存槽(其正被恢復)依然在使用。在某些情況下,只緩存虛擬設備254、256中的活動態(tài)虛擬設備的槽可能依然正由另一鏡像使用。如果在測定步驟332確定只緩存虛擬設備的槽正由另一鏡像使用,則控制從測定步驟332轉到步驟334,釋放槽以為其它過程使用(如恢復到可用槽池中,如本文別處所述)。在步驟334之后是步驟336,指向下一槽以處理只緩存虛擬設備254、256中的活動態(tài)虛擬設備的下一槽。應注意,步驟336還可從測定步驟332到達,如果在步驟332確定只緩存虛擬設備254、256中的活動態(tài)虛擬設備仍然由另一鏡像使用的話。應注意,如果在步驟304確定對于正處理的槽,只緩存虛擬設備254、256中的活動態(tài)虛擬設備指向標準邏輯設備252,步驟336也可從測定步驟304到達。在步驟336之后是測定步驟338,其確定只緩存虛擬設備254、256中的活動態(tài)虛擬設備是否有更多的槽要被處理。如果不是,則處理結束。否則,控制從測定步驟338轉回到步驟304。
在另一實施例中,可能對所接收的數(shù)據(jù)塊56建立已修改的槽的列表,數(shù)據(jù)塊56對應于遠程存儲設備26上的N-1循環(huán),所述列表如圖7中所示的列表258、262。當數(shù)據(jù)被接收時,遠程存儲設備26建立已修改的槽的鏈表。所建立的鏈表可以是循環(huán)的、線性的(具有NULL終止)、或任何其它適當?shù)脑O計。鏈表接著可用于恢復只緩存虛擬設備254、256中的活動態(tài)虛擬設備。
圖9的流程圖300示出了兩個二選一的通路342、344,其圖示了使用已修改的槽的列表的實施例的實施。在步驟302,指針(用于反復通過已修改的槽的列表)被使得指向列表的第一單元。在步驟302之后是步驟306,其由另一通路342到達。在使用已修改的槽的列表的實施例中,不需要測定步驟304,因為列表上沒有槽應指向標準邏輯設備252。
在步驟306之后,如上以先前實施例所述,處理繼續(xù),除了步驟336為遍歷已修改的槽的列表而不是指向COVD中的下一槽以外。類似地,在步驟338的測試確定指針是否在列表的末尾(或在循環(huán)鏈表的情況下回到開始)。同樣,如果在步驟338確定有更多的槽要處理,則控制從步驟338轉到步驟306,如另一通路344所示。如上所述,對于使用已修改的槽的列表的實施例,步驟304可被排除。
參考圖10,流程圖350示出了連同本地存儲設備24增加序號執(zhí)行的步驟。處理開始于第一步驟352,在增加序號之前本地存儲設備24等待至少M秒。在在此的實施例中,M為30,當然,M可以為任何數(shù)字。如果存儲設備24、26之間的通信中斷,較大的M值增加了可能丟失的數(shù)據(jù)的量。然而,較小的M值可能因更頻繁地遞增序號而增加內(nèi)務操作的總量。
在步驟352之后是測定步驟354,其確定是否本地存儲設備24的所有HA已設置位,其表明HA已完成在前序號的所有I/O。當序號改變時,每一HA注意到該改變并設置位,其表明在前序號的所有I/O完成。例如,如果序號從N-1變?yōu)镹,HA將在HA已完成序號N-1的所有I/O時設置位。注意,在某些情況下,HA的單一I/O可能需要很長時間并可能在序號已改變之后仍然在進行之中。還應注意,對于某些系統(tǒng),可使用不同的機制來確定所有HA已完成它們的N-1I/O。不同的機制可包括檢查存儲器37中的設備表。
如果在測定步驟354確定來自在前序號的I/O已被完成,則控制從步驟354轉到測定步驟356,其確定列表74、76中的不活動態(tài)列表是否是空的。應注意,可不進行序號轉換,除非及直到對應于列表74、76的不活動態(tài)列表的所有數(shù)據(jù)已使用RDF協(xié)議全部從本地存儲設備24傳輸?shù)竭h程存儲設備26為止。一旦列表74、76中的不活動態(tài)列表被確定為空,則控制從步驟356轉到步驟358,在前序號的提交從本地存儲設備24發(fā)送到遠程存儲設備26。如上所述,遠程存儲設備26接收特定序號的提交信息將使得遠程存儲設備26開始恢復對應于序號的數(shù)據(jù)。
在步驟358之后是步驟362,對列表74、76中的不活動態(tài)列表的數(shù)據(jù)復制被暫停。如本文別處所述,不活動態(tài)列表被掃描以將相應的數(shù)據(jù)從本地存儲設備24發(fā)送到遠程存儲設備26。暫停復制數(shù)據(jù)直到序號轉換完成為止是有用的。在在此的實施例中,暫停通過發(fā)送消息給RA 30a-30c實現(xiàn)。然而,本領域一般技術人員應該意識到的是,對于使用其它組件來幫助使用在此描述的系統(tǒng)發(fā)送數(shù)據(jù)的實施例,暫停復制可通過發(fā)送適當?shù)南?指令給其它組件實現(xiàn)。
在步驟362之后是步驟364,其增加序號。在步驟364之后是步驟366,在測定步驟354中使用的HA的位均被清零,使得這些位可連同序號的增加而被再次設置。在步驟366之后是測定步驟372,其確定遠程存儲設備26是否已確認在步驟358發(fā)送的提交信息。確認提交信息已在上面結合圖8進行了描述。一旦確定遠程存儲設備26已確認在步驟358發(fā)送的提交信息,控制從步驟372轉到步驟374,在步驟362提供的暫停復制設定被解除,使得復制可重新開始。在步驟374之后,處理結束。注意,從步驟374回到步驟352以開始新的循環(huán)從而連續(xù)增加序號是可能的。
使用R1設備上的COVD來收集與活動態(tài)數(shù)據(jù)和非活動態(tài)數(shù)據(jù)塊相關的槽也是可能的。在這種情況下,正象R2設備處那樣,一COVD可與非活動態(tài)序號相關聯(lián),而另一COVD可與活動態(tài)序號相關聯(lián)。這將在下面討論。
參考圖11,圖表400示出了用于構建和保持數(shù)據(jù)塊52、54的項目。標準邏輯設備402包含由主機22寫的數(shù)據(jù)并對應于圖2的數(shù)據(jù)單元51和圖1的磁盤33a-33c。標準邏輯設備402包含由主機22寫到本地存儲設備24的數(shù)據(jù)。
兩個只緩存虛擬設備404、406可與標準邏輯設備402一起使用。只緩存虛擬設備404、406對應可能保存在本地存儲設備24的存儲器37中的設備表。每一只緩存虛擬設備404、406的表的每一磁軌項或指向標準邏輯設備402的磁軌或指向連同本地存儲設備24使用的高速緩存器408的槽。在某些實施例中,高速緩存器408可被提供在本地存儲設備24的存儲器37中。
高速緩存器408包含多個緩存槽412-414,其可連同對標準邏輯設備402進行寫一起使用,同時,還可連同只緩存虛擬設備404、406一起使用。在在此的實施例中,只緩存虛擬設備404、406的每一磁軌表項包含一空值以指向標準邏輯設備402的相應磁軌。否則,每一只緩存虛擬設備404、406的磁軌表中的項包含指向高速緩存器408中的槽412-414之一的指針。
每一只緩存虛擬設備404、406可用于數(shù)據(jù)塊52、54之一,從而,例如,只緩存虛擬設備404可對應于數(shù)據(jù)塊52(序號N),而只緩存虛擬設備406可對應于數(shù)據(jù)塊54(序號N-1)。因此,當數(shù)據(jù)由主機22寫到本地存儲設備24時,數(shù)據(jù)被提供給高速緩存器408且只緩存虛擬設備404的適當指針被調(diào)整。應注意,數(shù)據(jù)將不從高速緩存器408中移除,直到數(shù)據(jù)被降級到標準邏輯設備402為止,且數(shù)據(jù)還由只緩存虛擬設備404釋放,如本文別處所述。
在在此的實施例中,只緩存虛擬設備404、406之一被視為“活動態(tài)”,而另一只緩存虛擬設備被視為“非活動態(tài)”。因而,例如,當序號N為偶數(shù)時,只緩存虛擬設備404可以為活動態(tài),而只緩存虛擬設備406為非活動態(tài)。只緩存虛擬設備404、406中的活動態(tài)虛擬設備處理來自主機22的寫,而只緩存虛擬設備404、406中的非活動態(tài)虛擬設備對應于正從本地存儲設備24傳輸?shù)竭h程存儲設備26的數(shù)據(jù)。
當主機22所寫的數(shù)據(jù)使用只緩存虛擬設備404、406中的活動態(tài)虛擬設備進行積聚時(對于序號N),對應于只緩存虛擬設備404、406中的非活動態(tài)虛擬設備的數(shù)據(jù)(對于在前序號N-1)從本地存儲設備24傳輸?shù)竭h程存儲設備26。對于本實施例及有關的實施例,本地存儲設備的DA 35a-35c處理對只緩存虛擬設備404、406的不活動態(tài)虛擬設備的掃描以將復制請求發(fā)送給一個或多個RA 30a-30c從而將數(shù)據(jù)從本地存儲設備24傳輸?shù)竭h程存儲設備26。因而,上述與暫停和重新開始復制有關的步驟362、374可包括提供消息/指令給DA35a-35c。
一旦數(shù)據(jù)已被傳輸給遠程存儲設備26,只緩存虛擬設備404、406的非活動態(tài)虛擬設備中的對應項可被設定為空值。此外,如果槽中的數(shù)據(jù)不再因另外的目的所需要(如要被降級到標準邏輯設備402),數(shù)據(jù)還可從高速緩存器408中移除(即槽被返回到槽池中以供后用)。一機制可用于確保數(shù)據(jù)不被從高速緩存器408移除,直到所有鏡像(包括只緩存虛擬設備404、406)不再使用該數(shù)據(jù)為止。這樣的機制在1996年7月16日授予的美國專利5,537,568及2001年7月7日申請的美國專利申請09/850,551中描述,二者均通過引用組合于此。
參考圖12,流程圖400示出了連同主機22執(zhí)行寫操作由HA28執(zhí)行的步驟,其是針對兩個COVD均由R1設備使用以提供在此描述的系統(tǒng)的實施例。處理開始于第一步驟442,對應于寫的槽被鎖定。在在此的實施例中,高速緩存器408的每一槽412-414對應于標準邏輯設備402上的數(shù)據(jù)磁軌。在步驟442鎖定槽可在HA28執(zhí)行的處理期間阻止另外的過程在相應的槽上運行,所述HA28執(zhí)行的處理對應于流程圖440的步驟。
在步驟442之后為步驟444,序號N的值被設定。正象使用列表而不是在R1側上使用COVD的實施例那樣,在步驟444獲得的序號的值在HA28執(zhí)行的整個寫操作期間均被保持,且槽被鎖定。如本文別處所述,序號被分配給每一寫以設定數(shù)據(jù)塊52、54之一屬于哪一寫。主機22執(zhí)行的寫被分配以當前序號。單一寫操作始終保持相同的序號是有用的。
在步驟444之后是測定步驟446,其確定只緩存虛擬設備404、406中的非活動態(tài)虛擬設備是否已經(jīng)指向在步驟442鎖定的槽。這可能在序號小于當前序號時如果對同一槽的寫已被提供的情況下發(fā)生。對應于在前序號的寫的數(shù)據(jù)可能尚未被傳輸給遠程存儲設備26。
如果在測定步驟446確定只緩存虛擬設備404、406中的非活動態(tài)虛擬設備沒有指向該槽,則控制從測定步驟446轉到另一測定步驟448,其確定只緩存虛擬設備404、406中的活動態(tài)虛擬設備是否指向該槽。如果在序號與當前序號相同時先前已有對該槽的寫,則只緩存虛擬設備404、406中的活動態(tài)虛擬設備指向該槽是可能的。如果在測定步驟448確定只緩存虛擬設備404、406中的活動態(tài)虛擬設備沒有指向該槽,則控制從測定步驟448轉到步驟452,為數(shù)據(jù)獲得新槽。在步驟452之后是步驟454,只緩存虛擬設備404、406中的活動態(tài)虛擬設備被使得指向該槽。
在步驟454之后或在步驟448之后(如果只緩存虛擬設備404、406的活動態(tài)虛擬設備指向該槽)是步驟456,設置標志。在步驟456,RDF_WP標志(RDF寫未決標志)被設定以表明該槽需要使用RDF傳輸給遠程存儲設備26。此外,在步驟456,IN_CACHE標志被設定以表明該槽需要被降級到標準邏輯設備402。應注意,在某些情況下,如果只緩存虛擬設備404、406的活動態(tài)虛擬設備已經(jīng)指向該槽(如在步驟448確定),則RDF_WP和IN_CACHE標志在執(zhí)行步驟456前已被設定是可能的。然而,在步驟456設置標志確保標志被正確地設置,而不管先前的狀態(tài)如何。
在步驟456之后是步驟458,指向該槽的磁軌表中的間接標志被清零,以表明有關數(shù)據(jù)被提供在該槽中而不是在間接指向其的另外的槽中。在步驟458之后是步驟462,正由主機22和HA28寫的數(shù)據(jù)被寫到該槽中。在步驟462之后是步驟464,其解鎖槽。在步驟464之后,處理結束。
如果在測定步驟446確定只緩存虛擬設備404、406中的非活動態(tài)虛擬設備指向該槽,則控制從步驟446轉到步驟472,其獲得新槽。在步驟472獲得的新槽可用于只緩存虛擬設備404、406的非活動態(tài)虛擬設備以實現(xiàn)RDF傳輸,同時舊槽可與只緩存虛擬設備404、406的活動態(tài)虛擬設備相關聯(lián),如下所述。
在步驟472之后是步驟474,舊槽的數(shù)據(jù)被復制到在步驟472獲得的新槽。在步驟474之后是步驟476,(上述的)間接標志被設定以表明只緩存虛擬設備404、406的非活動態(tài)虛擬設備的磁軌表項指向舊槽及表明數(shù)據(jù)在舊槽所指向的新槽中。因此,在步驟476設置間接標志影響只緩存虛擬設備404、406的非活動態(tài)虛擬設備的磁軌表從而導致磁軌表項表明數(shù)據(jù)在新槽中。
在步驟476之后是步驟478,新槽中的記錄的鏡像位被調(diào)整。當數(shù)據(jù)在步驟474從舊槽復制到新槽時,被復制的任何本地鏡像位均被清零,因為新槽的目的只是簡單地實現(xiàn)對只緩存虛擬設備的非活動態(tài)虛擬設備的RDF傳輸。舊槽將用于處理任何本地鏡像。在步驟478之后是步驟462,數(shù)據(jù)被寫到槽中。在步驟462之后是步驟464,解鎖槽。在步驟464之后,處理結束。
參考圖13,流程圖500示出了連同本地存儲設備24將數(shù)據(jù)塊54傳輸給遠程存儲設備26所執(zhí)行的步驟。傳輸實質上包括對只緩存虛擬設備404、406的非活動態(tài)虛擬設備先前在活動態(tài)時的反復操作期間已寫到那里的磁軌,掃描只緩存虛擬設備404、406的非活動態(tài)虛擬設備。在該實施例中,本地存儲設備24的DA35a-35c掃描只緩存虛擬設備404、406的非活動態(tài)虛擬設備以通過一個或多個RA30a-30c、使用RDF協(xié)議將需要傳輸?shù)臄?shù)據(jù)復制到遠程存儲設備26。
處理開始于第一步驟502,指向只緩存虛擬設備404、406的非活動態(tài)虛擬設備的第一磁軌以開始通過所有磁軌的反復過程。在第一步驟502之后是測定步驟504,其確定RDF_WP標志是否已被設定。如本文別處所述,RDF_WP標志被用于表明槽(磁軌)包含需要經(jīng)RDF鏈路傳輸?shù)臄?shù)據(jù)。被設置的RDF_WP標志表明槽(磁軌)中的至少部分數(shù)據(jù)將使用RDF傳輸。在在此的實施例中,整個槽均不被傳輸。而是,只有槽內(nèi)具有適當?shù)溺R像位設置(表明記錄已改變)的記錄才被傳輸給遠程存儲設備26。然而,在其它實施例中,假如遠程存儲設備26只寫對應于具有適當鏡像位設置的記錄的數(shù)據(jù)并忽略磁軌的其它數(shù)據(jù),則可能傳輸整個槽,其可以是也可不是有效的。
如果在測定步驟504確定被處理的緩存器具有RDF_WP標志設置,則控制從步驟504轉到測定步驟505,其確定槽是否包含數(shù)據(jù)或確定槽是否是指向包含相關數(shù)據(jù)的另一槽的間接槽。在某些情況下,槽可能不包含對應于槽的磁盤部分的數(shù)據(jù)。即槽可能是指向包含數(shù)據(jù)的另一槽的間接槽。如果在步驟505確定槽是間接槽,則控制從步驟505轉到步驟506,獲取數(shù)據(jù)(從間接槽指向的槽獲取)。因而,如果槽是直接槽,正由RDF發(fā)送的數(shù)據(jù)被保存在該槽中,而如果槽是間接槽,則正由RDF發(fā)送的數(shù)據(jù)被保存在由間接槽所指向的另一槽中。
在步驟506之后或步驟505(如果槽是直接槽)是步驟507,正被發(fā)送的數(shù)據(jù)(直接或間接從槽)由DA 35a-35c之一復制以使用RDF協(xié)議從本地存儲設備24發(fā)送到遠程存儲設備26。在步驟507之后是測定步驟508,其確定遠程存儲設備26是否已確認數(shù)據(jù)的接收。如果否,則控制從步驟508轉回到步驟507以重新發(fā)送數(shù)據(jù)。在其它實施例中,不同的及更多有關的處理可用于發(fā)送數(shù)據(jù)并確認其接收。這樣的處理可包括錯誤報告及其它處理,其是在一定量的發(fā)送數(shù)據(jù)的嘗試失敗之后執(zhí)行的處理。
一旦在測定步驟508確定數(shù)據(jù)已被成功發(fā)送,控制從步驟508轉到步驟512以清零RDF_WP標志(因為數(shù)據(jù)已經(jīng)RDF成功發(fā)送)。在步驟512之后是步驟514,適當?shù)溺R像標志被清零以表明至少RDF鏡像(R2)不再需要數(shù)據(jù)。在在此的實施例中,作為槽(磁軌)的一部分的每一記錄具有各自的鏡像標志,其表明哪些鏡像使用特定的記錄。R2設備是每一記錄的鏡像之一且是對應于R2設備的標志在步驟514被清零。
在步驟514之后是測定步驟516,其確定正被處理的磁軌的任意記錄是否具有任意其它鏡像標志設置(對于其它鏡像設備)。如果否,則控制從步驟516轉到步驟518,其釋放槽(即不再被使用)。在一些實施例中,未使用的槽可被保持在可用槽池中。應注意,對于槽的一些記錄,如果另外的標志仍被設置,則可能意味著記錄需要被降級到標準邏輯設備402或正由一些其它鏡像(包括另一R2設備)使用。在步驟518之后,或在步驟516之后(如果更多的鏡像標志存在)是步驟522,用于反復通過只緩存虛擬設備404、406的非活動態(tài)虛擬設備的每一磁軌項的指針被使得指向下一磁軌。在步驟522之后是測定步驟524,其確定只緩存虛擬設備404、406中的非活動態(tài)虛擬設備是否有更多的磁軌要被處理。如果否,則處理結束。否則,控制轉回到測定步驟504,如上所述。注意,如果確定對于正被處理的磁軌RDF_WP標志未被設置,步驟522還可從測定步驟504到達。
在某些情況下,在系統(tǒng)正操作和執(zhí)行從本地存儲設備(R1)到遠程存儲設備的虛擬排序的寫時,能夠使用連接到遠程存儲設備的主機從R2設備讀數(shù)據(jù)是有用的。與此有關,對于連接到遠程存儲設備的主機,能夠讀一致的、最新數(shù)據(jù)(即R2側所提交的數(shù)據(jù)塊的一部分)是有用的。
圖14示出了從主機602到本地存儲設備604及經(jīng)鏈路608到遠程存儲設備606的數(shù)據(jù)通路。圖14的系統(tǒng)類似于圖2中所示的系統(tǒng)。從主機602寫到本地存儲設備604的數(shù)據(jù)被本地保存,如本地存儲設備604的數(shù)據(jù)單元612所示。由主機602寫到本地存儲設備604的數(shù)據(jù)還被本地存儲設備604保持并由本地存儲設備604經(jīng)鏈路608發(fā)送到遠程存儲設備606。
主機602進行的每一數(shù)據(jù)寫(例如,記錄、多個記錄、磁軌等的寫)被分配以序號。序號可提供在與寫相關聯(lián)的適當?shù)臄?shù)據(jù)字段中。在圖14中,主機602進行的寫被示出為分配以序號N。由主機602執(zhí)行的、被分配以序號N的所有寫均被收集在單一數(shù)據(jù)塊614中。數(shù)據(jù)塊614代表由主機602幾乎在同時進行的多個獨立的寫。
通常,本地存儲設備604積聚一序號的數(shù)據(jù)塊,同時將先前積聚的數(shù)據(jù)塊(具有在前的序號)傳輸給遠程存儲設備606。因而,在本地存儲設備604正積聚來自主機602的、被分配序號N的寫的同時,對在前序號(N-1)出現(xiàn)的寫由本地存儲設備604經(jīng)鏈路608傳輸給遠程存儲設備606。數(shù)據(jù)塊616代表來自主機602的、被分配以序號N-1的、尚未被傳輸給遠程存儲設備606的寫。
遠程存儲設備606從對應于被分配以序號N-1的寫的數(shù)據(jù)塊616接收數(shù)據(jù)并建立具有序號N-1的主機寫的新數(shù)據(jù)塊618。數(shù)據(jù)可使用適當?shù)腞DF協(xié)議傳輸,其確認跨鏈路608發(fā)送的數(shù)據(jù)。當遠程存儲設備606已從數(shù)據(jù)塊616接收所有數(shù)據(jù)時,本地存儲設備604發(fā)送提交信息給遠程存儲設備606以提交所有被分配以N-1序號的、對應于數(shù)據(jù)塊618的數(shù)據(jù)。通常,一旦對應于特定序號的數(shù)據(jù)塊被提交,該數(shù)據(jù)塊可被寫到邏輯存儲設備。這在圖14中用數(shù)據(jù)塊622表示,其對應于被分配以序號N-2的寫(即,主機602寫到本地存儲設備606時使用的當前序號之前的第二個序號)。
在圖14中,數(shù)據(jù)塊622被示出為寫到數(shù)據(jù)單元624中,其代表遠程存儲設備606的磁盤存儲(標準邏輯設備)。因此,遠程存儲設備606正接收和積聚對應于序號N-1的數(shù)據(jù)塊618,同時,對應于在前序號(N-2)的數(shù)據(jù)塊622正被寫到遠程存儲設備606的磁盤存儲,由數(shù)據(jù)單元624圖示。在一些實施例中,為了寫(但不必立即被寫),數(shù)據(jù)塊622的數(shù)據(jù)被標記,而數(shù)據(jù)塊618的數(shù)據(jù)則未被標記。保存在數(shù)據(jù)單元624上的數(shù)據(jù)被示出為具有序號N-3,這表明數(shù)據(jù)單元624上的數(shù)據(jù)可以是由數(shù)據(jù)塊622代表的所提交數(shù)據(jù)之后的一(或更多)代。
因而,在運行中,主機602將數(shù)據(jù)寫到本地存儲設備604,其被本地保存在數(shù)據(jù)單元612中并被積聚在數(shù)據(jù)塊614中。一旦特定序號的所有數(shù)據(jù)已被積聚(本文別處描述),本地存儲設備604遞增序號。來自數(shù)據(jù)塊616的、對應于小于當前序號的序號的數(shù)據(jù)從本地存儲設備604經(jīng)鏈路608傳輸給遠程存儲設備606。數(shù)據(jù)塊622對應于已由本地存儲設備604發(fā)送消息給遠程存儲設備606進行提交的序號的數(shù)據(jù)。數(shù)據(jù)塊622的數(shù)據(jù)被寫到遠程存儲設備的磁盤存儲624,其包含來自對應于序號N-3的先前代的數(shù)據(jù)。
對于R2主機626,可能希望連接到遠程存儲設備606以從遠程存儲設備606讀數(shù)據(jù),所述數(shù)據(jù)在開始已由主機602提供給本地存儲設備604并從本地存儲設備604經(jīng)鏈路608傳輸給遠程存儲設備606。應注意,對應于數(shù)據(jù)塊618的數(shù)據(jù)不必一致,因為其還在從本地存儲設備604提供。然而,數(shù)據(jù)塊622的數(shù)據(jù)是一致的,因為數(shù)據(jù)塊622已被提交。因此,當R2主機626希望從遠程存儲設備606讀數(shù)據(jù)時,數(shù)據(jù)或從數(shù)據(jù)塊622提供,如果數(shù)據(jù)不在數(shù)據(jù)塊中,則從數(shù)據(jù)單元624提供,如下面將詳述的那樣。
參考圖15,流程圖650示出了連同R2主機626從遠程存儲設備606讀數(shù)據(jù)所執(zhí)行的步驟。處理開始于第一步驟652,其確定對應于正被R2主機626讀的數(shù)據(jù)的COVD槽是否指向標準邏輯設備(即指向數(shù)據(jù)單元624)。如果是,則R2主機626所想要的數(shù)據(jù)在數(shù)據(jù)單元624上且控制從步驟652轉到步驟654,想要的數(shù)據(jù)從對應于數(shù)據(jù)單元624的標準邏輯設備讀取。應注意,在步驟654從標準邏輯設備讀數(shù)據(jù)包括從高速緩存器讀數(shù)據(jù),或者,如果數(shù)據(jù)在開始不在高速緩存器中,則從磁盤讀數(shù)據(jù),可選地,將數(shù)據(jù)從磁盤移到高速緩存器中。在步驟654之后,處理結束。
如果在測定步驟652確定對應于正被R2主機626讀的數(shù)據(jù)的COVD槽沒有指向標準邏輯設備,則控制從測定步驟652轉到步驟656,COVD的槽被鎖定。在步驟656鎖定槽阻止其它操作訪問該槽,如從數(shù)據(jù)塊622恢復數(shù)據(jù)到數(shù)據(jù)單元624的操作。
在步驟656之后是測定步驟658,其確定COVD槽是否指向標準邏輯設備。在步驟658的測定步驟與步驟652的測定步驟一樣。在步驟658的測定是有用的,因為在測定步驟652之后但在COVD槽在步驟656被鎖定之前,另一過程(如從數(shù)據(jù)塊622恢復數(shù)據(jù)到數(shù)據(jù)單元624的過程)已訪問該COVD并將數(shù)據(jù)恢復到標準邏輯設備是可能的。在步驟658進行重新測定確保防止這樣的競態(tài)條件。
如果在測定步驟658確定在步驟656鎖定的COVD槽現(xiàn)在指向標準邏輯設備,則控制從步驟658轉到步驟662,COVD槽被解鎖。在步驟662之后是步驟654,R2主機626想要的數(shù)據(jù)從數(shù)據(jù)單元624讀取。在步驟654之后,處理結束。
如果在測定步驟658確定包含R2主機626想要的數(shù)據(jù)的COVD槽沒有指向標準邏輯設備,則控制從步驟658轉到步驟664,COVD中的數(shù)據(jù)被恢復到標準邏輯設備。在步驟664恢復數(shù)據(jù)通過使用類似于步驟308、312、314、316、318、322、324、326、328、332、334的步驟實現(xiàn),這些步驟已在上面結合圖9的流程圖進行了描述。在步驟664之后,控制轉到步驟654,如上所述,從標準邏輯設備讀數(shù)據(jù)。在步驟654之后,處理結束。
對于某些實施例,將R2主機626執(zhí)行的每一讀操作限制為一次一磁軌是有用的。這減少了不一致數(shù)據(jù)的可能性,其由在R2主機626已讀部分磁軌之后但在R2主機626已讀所有磁軌之前在R2設備606處發(fā)生的循環(huán)切換導致。在其它實施例中,如果采取適當?shù)牟襟E,R2主機626讀多個磁軌是可能的。
參考圖16A,流程圖700示出了R2主機具有一次讀一個以上磁軌的能力所執(zhí)行的步驟。處理開始于第一步驟702,其確定讀操作是否涉及一個以上磁軌。如果否,則控制從步驟702轉到步驟704,讀操作按本文別處描述的那樣執(zhí)行。在步驟704之后,處理結束。
如果在步驟702確定有一個以上的磁軌正被讀,控制從步驟702轉到步驟706以獲取R2設備606的當前序號(即數(shù)據(jù)塊622的序號)。在步驟706之后是步驟708,執(zhí)行讀。應注意,在步驟708的讀是讀一個以上磁軌。在步驟708之后是步驟712,R2設備606的當前序號被再次獲得。在步驟712之后是步驟714,其確定在步驟712獲得的序號是否與在步驟706獲得的序號一樣。如果是,則序號在多磁軌讀操作期間沒有改變且控制從步驟714轉到步驟716,其返回已被讀的數(shù)據(jù)。在步驟716之后,處理結束。否則,如果在步驟714確定序號不同,控制從步驟714轉回到步驟706以重復上述順序的步驟。應注意,如果在序號改變之間的時間足夠長(如30秒),則不期望在步驟714,序號將連續(xù)兩次不同。
參考圖16B,流程圖示出了具有一次讀多個磁軌的能力的R2主機所執(zhí)行的步驟的另一實施例,其不同于圖16A的流程圖700所示的實施例。處理開始于第一步驟722,其確定讀操作是否涉及一個以上磁軌。如果否,則控制從步驟722轉到步驟724,按本文別處描述的那樣執(zhí)行讀操作。在步驟724之后,處理結束。
如果在步驟722確定有一個以上的磁軌正被讀,控制從步驟722轉到步驟726以獲得R2設備606的當前序號(即數(shù)據(jù)塊622的序號)。在步驟726之后是步驟728,執(zhí)行讀。應注意,在步驟728的讀是讀一個以上磁軌。在步驟728之后是步驟732,R2設備606的當前序號被再次獲得。在步驟732之后是步驟734,其確定在步驟732獲得的序號是否與在步驟726獲得的序號一樣。如果是,則序號在多磁軌讀操作期間沒有改變且控制從步驟734轉到步驟736,其返回已被讀的數(shù)據(jù)。在步驟736之后,處理結束。否則,如果在步驟734確定序號不同,控制從步驟734轉到步驟738,返回錯誤消息。在步驟738之后,處理結束。應注意,接收在步驟738提供的錯誤消息的主機可簡單地重新開始讀操作。因此,主機可繼續(xù)嘗試讀操作,直到獲得成功的結果為止。
在某些情況下,在系統(tǒng)正操作和執(zhí)行從本地存儲設備(R1)到遠程存儲設備的虛擬排序的寫時,能夠使用連接到本地存儲設備的主機從R2設備讀數(shù)據(jù)是有用的。與此有關,對于連接到本地存儲設備的主機,能夠讀一致的、最新數(shù)據(jù)(即R2側所提交的數(shù)據(jù)塊的一部分)是有用的。
圖17示出了從主機802到本地存儲設備804及經(jīng)鏈路808到遠程存儲設備806的數(shù)據(jù)通路。圖17的系統(tǒng)類似于圖2中所示的系統(tǒng)。從主機802寫到本地存儲設備804的數(shù)據(jù)被本地保存,如本地存儲設備804的數(shù)據(jù)單元812所示。由主機802寫到本地存儲設備804的數(shù)據(jù)還被本地存儲設備804保持并由本地存儲設備804經(jīng)鏈路808發(fā)送到遠程存儲設備806。
主機802進行的每一數(shù)據(jù)寫(例如,記錄、多個記錄、磁軌等的寫)被分配以序號。序號可提供在與寫相關聯(lián)的適當?shù)臄?shù)據(jù)字段中。在圖17中,主機802進行的寫被示出為分配以序號N。由主機802執(zhí)行的、被分配以序號N的所有寫均被收集在單一數(shù)據(jù)塊814中。數(shù)據(jù)塊814代表由主機802幾乎在同時進行的多個獨立的寫。
通常,本地存儲設備804積聚一序號的數(shù)據(jù)塊,同時將先前積聚的數(shù)據(jù)塊(具有在前的序號)傳輸給遠程存儲設備806。因而,在本地存儲設備804正積聚來自主機802的、被分配序號N的寫的同時,對在前序號(N-1)出現(xiàn)的寫由本地存儲設備804經(jīng)鏈路808傳輸給遠程存儲設備806。數(shù)據(jù)塊816代表來自主機802的、被分配以序號N-1的、尚未被傳輸給遠程存儲設備806的寫。
遠程存儲設備806從對應于被分配以序號N-1的寫的數(shù)據(jù)塊816接收數(shù)據(jù)并建立具有序號N-1的主機寫的新數(shù)據(jù)塊818。數(shù)據(jù)可使用適當?shù)腞DF協(xié)議傳輸,其確認跨鏈路808發(fā)送的數(shù)據(jù)。當遠程存儲設備806已從數(shù)據(jù)塊816接收所有數(shù)據(jù)時,本地存儲設備804發(fā)送提交信息給遠程存儲設備806以提交所有被分配以N-1序號的、對應于數(shù)據(jù)塊818的數(shù)據(jù)。通常,一旦對應于特定序號的數(shù)據(jù)塊被提交,該數(shù)據(jù)塊可被寫到邏輯存儲設備。這在圖17中用數(shù)據(jù)塊822表示,其對應于被分配以序號N-2的寫(即,主機802寫到本地存儲設備806時使用的當前序號之前的第二個序號)。
在圖17中,數(shù)據(jù)塊822被示出為寫到數(shù)據(jù)單元824中,其代表遠程存儲設備806的磁盤存儲(標準邏輯設備)。因此,遠程存儲設備806正接收和積聚對應于序號N-1的數(shù)據(jù)塊818,同時,對應于在前序號(N-2)的數(shù)據(jù)塊822正被寫到遠程存儲設備806的磁盤存儲,由數(shù)據(jù)單元824圖示。在一些實施例中,為了寫(但不必立即被寫),數(shù)據(jù)塊822的數(shù)據(jù)被標記,而數(shù)據(jù)塊818的數(shù)據(jù)則未被標記。保存在數(shù)據(jù)單元824上的數(shù)據(jù)被示出為具有序號N-3,這表明數(shù)據(jù)單元824上的數(shù)據(jù)可以是由數(shù)據(jù)塊822代表的所提交數(shù)據(jù)之后的一(或更多)代。
因而,在運行中,主機802將數(shù)據(jù)寫到本地存儲設備804,其被本地保存在數(shù)據(jù)單元812中并被積聚在數(shù)據(jù)塊814中。一旦特定序號的所有數(shù)據(jù)已被積聚(本文別處描述),本地存儲設備804遞增序號。來自數(shù)據(jù)塊816的、對應于小于當前序號的序號的數(shù)據(jù)從本地存儲設備804經(jīng)鏈路808傳輸給遠程存儲設備806。數(shù)據(jù)塊822對應于已由本地存儲設備804發(fā)送消息給遠程存儲設備806進行提交的序號的數(shù)據(jù)。數(shù)據(jù)塊822的數(shù)據(jù)被寫到遠程存儲設備的磁盤存儲824,其包含來自對應于序號N-3的先前代的數(shù)據(jù)。
對于另一主機826,可能希望連接到本地存儲設備804以從遠程存儲設備806讀數(shù)據(jù),所述數(shù)據(jù)在開始已由主機802提供給本地存儲設備804并從本地存儲設備804經(jīng)鏈路808傳輸給遠程存儲設備806。對于主機802,可能還希望讀數(shù)據(jù)。例如,在某些情況下,R1設備可能發(fā)生故障但可能希望主機802、826中的一個或兩個繼續(xù)以最新版本的數(shù)據(jù)進行工作,同時保持R2側的一致性。應注意,想要的數(shù)據(jù)可能部分在本地磁盤單元812上、部分在N數(shù)據(jù)塊814中、部分在N-1數(shù)據(jù)塊816、818中,部分在N-2數(shù)據(jù)塊822中,及部分在遠程存儲設備806的磁盤單元824上。在此的對讀數(shù)據(jù)的描述可應用于讀數(shù)據(jù)的主機802和/或讀數(shù)據(jù)的其它主機826。
參考圖18,流程圖850示出了連同主機802、826之一或二者從R2設備806讀數(shù)據(jù)所執(zhí)行的步驟。處理開始于第一步驟852,其確定想要的數(shù)據(jù)(正被讀的數(shù)據(jù))是否在R1設備的高速緩存器中。應注意,如果所有想要的數(shù)據(jù)均在R1設備804的高速緩存器中,則不必從R2設備806獲得任何數(shù)據(jù)。如果在步驟852確定數(shù)據(jù)在R1設備的高速緩存器中,則控制從步驟852轉到步驟854,響應于讀請求,R1設備804的高速緩存器中的數(shù)據(jù)被返回。在步驟854之后,處理結束。
如果在測定步驟852確定所有所請求的數(shù)據(jù)不在R1設備804的高速緩存器中,則控制從步驟852轉到測定步驟856,其確定是否部分數(shù)據(jù)在對應于N數(shù)據(jù)塊814及N-1數(shù)據(jù)塊816之一或二者的磁軌的槽中。如果是,則控制從步驟856轉到步驟862,產(chǎn)生臨時槽,用于接收從R2設備讀的數(shù)據(jù)(如下述)。在步驟862之后是步驟864,對應于N和N-1數(shù)據(jù)塊814、816之一或二者的槽被鎖定。在步驟864鎖定槽阻止數(shù)據(jù)在執(zhí)行讀過程時改變。
在步驟864之后是測定步驟874,其確定是否所有想要的數(shù)據(jù)均在N和N-1數(shù)據(jù)塊814、816之一或二者中。如果否,則控制從步驟874轉到步驟876,R1設備804發(fā)送讀請求給R2設備806。在R2設備806處處理讀請求將在下文中詳細描述。在步驟876之后是步驟878,來自R2設備806的數(shù)據(jù)被R1設備804讀。如果已在步驟862產(chǎn)生臨時槽,則來自R2設備806的數(shù)據(jù)被讀進臨時槽。否則,數(shù)據(jù)可被直接接收到R1設備804。
在步驟878之后或步驟874之后(如果所有想要的數(shù)據(jù)被發(fā)現(xiàn)在N和N-1數(shù)據(jù)塊814、816之一或二者中)是步驟882,N數(shù)據(jù)塊814、R1設備804上的N-1數(shù)據(jù)塊816、R2設備806返回的數(shù)據(jù)被合并。應注意,N-1數(shù)據(jù)(如果有)被合并在臨時槽(其較舊)中的任何數(shù)據(jù)的上面,且合并的結果被合并在任何N數(shù)據(jù)的上面,其是最新的數(shù)據(jù)。將第一組數(shù)據(jù)合并在第二組數(shù)據(jù)的上面意味著第一組數(shù)據(jù)優(yōu)先于第二組數(shù)據(jù),從而來自第一組的數(shù)據(jù)蓋寫第二組的相應數(shù)據(jù)。
在步驟882合并數(shù)據(jù)類似于圖9的流程圖300的合并步驟314。應注意,來自磁軌的不同部分的數(shù)據(jù)與不同序號相關聯(lián)并位于R1設備804和/或R2設備806之上是可能的。因而,步驟882處理所有緩存槽中的所有數(shù)據(jù)的合并以在臨時槽中提供單磁軌價值的數(shù)據(jù)。
在步驟882之后是步驟884,合并后的數(shù)據(jù)被返回到發(fā)出讀指令的主機。在步驟884之后是步驟886,在讀過程期間被鎖定的任何槽均被解鎖。在步驟886之后是步驟888,在讀過程期間被分配的任何臨時槽均被解除分配。在步驟888之后,處理結束。
在一些實施例中,在步驟864之后或測定步驟856之后(如果在N和N-1數(shù)據(jù)塊814、816中沒有數(shù)據(jù))放棄測定步驟874并總是執(zhí)行步驟876是可能的。這如流程圖850中從步驟864到步驟876的另一通路892所示。
參考圖19A,流程圖900示出了在R2設備806處處理讀請求的一實施例,讀請求由R1設備804提供。處理開始于第一步驟902,N-2數(shù)據(jù)塊822(其已被提交)中的任何數(shù)據(jù)被恢復到磁盤單元824。即,如果在N-2數(shù)據(jù)塊822有任何數(shù)據(jù)要被讀,則在步驟902數(shù)據(jù)被恢復到磁盤單元824。
在步驟902之后是步驟903,其確定在N-1數(shù)據(jù)塊818中是否有任何數(shù)據(jù)要被讀。如果是,控制從步驟903轉到步驟904,在R2設備806上分配臨時槽。在步驟904之后是步驟906,磁盤單元824的數(shù)據(jù)被復制到在步驟904分配的臨時槽。在步驟906之后是步驟908,臨時槽中的數(shù)據(jù)與R2設備806上N-1數(shù)據(jù)塊818中的任何對應數(shù)據(jù)進行合并。
在步驟908之后是步驟912,在步驟908合并數(shù)據(jù)的結果被返回給R1設備804。注意,然而,如果在步驟903確定N-1數(shù)據(jù)塊818中沒有數(shù)據(jù)要讀,步驟912也可被到達,在這種情況下,磁盤的數(shù)據(jù)在步驟912被返回。在步驟912之后是步驟914,在步驟904分配的槽(如果執(zhí)行步驟904的話)被解除分配。在步驟914之后,處理結束。
參考圖19B,流程圖920示出了在R2設備806處處理讀請求的另一實施例。處理開始于第一步驟921,其確定N-1和N-2數(shù)據(jù)塊818、822中是否有任何數(shù)據(jù)要被讀。如果是,控制從步驟921轉到步驟922,分配臨時槽。在步驟922之后是步驟924,磁盤單元824的數(shù)據(jù)被復制到在步驟922分配的臨時槽。在步驟924之后是步驟926,N-2數(shù)據(jù)塊822的數(shù)據(jù)與臨時槽中的數(shù)據(jù)合并。在步驟926之后是步驟928,R2設備806上的N-1數(shù)據(jù)塊818的數(shù)據(jù)與臨時槽合并。
在步驟928之后是步驟932,所有合并到臨時槽中的結果從R2設備806返回給R1設備804。應注意,然而,如果在步驟921確定在N-1和N-2數(shù)據(jù)塊818、822中沒有數(shù)據(jù)要讀,步驟932也可被到達,在這種情況下,磁盤的數(shù)據(jù)在步驟932被返回。在步驟932之后是步驟934,在步驟922分配的臨時槽(如果步驟922被執(zhí)行的話)被解除分配。在步驟934之后,處理結束。
在本發(fā)明已連同多個實施例進行公開的同時,其修改對本領域技術人員而言應是顯而易見的。因此,本發(fā)明的實質和范圍在下述權利要求中提出。
權利要求
1.排序數(shù)據(jù)寫的方法,包括主存儲設備接收多個數(shù)據(jù)寫;主存儲設備將第一時間之后及第二時間之前開始的數(shù)據(jù)寫與第一數(shù)據(jù)塊關聯(lián);主存儲設備將第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊關聯(lián);及在完成與第一數(shù)據(jù)塊相關聯(lián)的所有寫之后,主存儲設備開始將與第一數(shù)據(jù)塊關聯(lián)的寫傳輸給輔助存儲設備。
2.根據(jù)權利要求1所述的方法,還包括在主存儲設備將與第一數(shù)據(jù)塊關聯(lián)的所有寫傳輸給輔助存儲設備之后,主存儲設備發(fā)送消息給輔助存儲設備;及響應于從主存儲設備接收消息,輔助存儲設備保存與第一數(shù)據(jù)塊關聯(lián)的數(shù)據(jù)寫。
3.根據(jù)權利要求2所述的方法,還包括在保存與第一數(shù)據(jù)塊相關聯(lián)的所有數(shù)據(jù)寫之后,輔助存儲設備發(fā)送確認給主存儲設備。
4.根據(jù)權利要求3所述的方法,還包括在發(fā)送消息給輔助存儲設備之后,主存儲設備暫停傳輸數(shù)據(jù)給輔助存儲設備。
5.根據(jù)權利要求4所述的方法,還包括在暫停傳輸數(shù)據(jù)給隨后的數(shù)據(jù)寫之后,主存儲設備將數(shù)據(jù)寫與第三數(shù)據(jù)塊關聯(lián),第三數(shù)據(jù)塊不同于第一和第二數(shù)據(jù)塊。
6.根據(jù)權利要求5所述的方法,還包括響應于輔助存儲設備發(fā)送確認給主存儲設備,主存儲設備重新開始傳輸數(shù)據(jù)給輔助存儲設備。
7.根據(jù)權利要求1所述的方法,還包括提供數(shù)據(jù)寫給主存儲設備的緩存槽。
8.根據(jù)權利要求7所述的方法,還包括響應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫對應于已經(jīng)與第一數(shù)據(jù)塊相關聯(lián)的緩存槽,將數(shù)據(jù)復制到新的緩存槽。
9.根據(jù)權利要求7所述的方法,還包括主存儲設備使用第一指針列表指向與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的緩存槽;及主存儲設備使用第二指針列表指向與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的緩存槽。
10.根據(jù)權利要求9所述的方法,還包括在每一槽的標題部分中提供高速緩存標簽字段,高速緩存標簽字段包括與槽相關聯(lián)的序號,其中序號對應于特定的數(shù)據(jù)塊。
11.根據(jù)權利要求10所述的方法,其中高速緩存標簽字段還包括密碼字段,其在槽第一次使用時被寫入。
12.根據(jù)權利要求11所述的方法,還包括響應于槽不再被使用,清零密碼字段。
13.根據(jù)權利要求7所述的方法,還包括主存儲設備使用緩存槽的第一只緩存虛擬設備對應于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫;及主存儲設備使用緩存槽的第二只緩存虛擬設備對應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫。
14.將已排序的寫保存到遠程存儲設備的方法,包括接收用于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的消息;響應于與不同于所述第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)被保存;及開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲。
15.根據(jù)權利要求14所述的方法,還包括確認消息。
16.根據(jù)權利要求14所述的方法,還包括連同接收與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表。
17.根據(jù)權利要求16所述的方法,其中開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲包括遍歷被修改的槽的列表。
18.根據(jù)權利要求1所述的方法,其中接收多個數(shù)據(jù)寫包括從主機接收多個數(shù)據(jù)寫。
19.根據(jù)權利要求1所述的方法,還包括在主存儲設備將與第一數(shù)據(jù)塊相關聯(lián)的所有寫傳輸給輔助存儲設備之后,主存儲設備發(fā)送消息給輔助存儲設備。
20.排序數(shù)據(jù)寫的計算機軟件,包括將第一時間之后及第二時間之前開始的數(shù)據(jù)寫與第一數(shù)據(jù)塊關聯(lián)的可執(zhí)行代碼;將第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊關聯(lián)的可執(zhí)行代碼;及在完成與第一數(shù)據(jù)塊相關聯(lián)的所有寫之后,開始將與第一數(shù)據(jù)塊關聯(lián)的寫傳輸給存儲設備的可執(zhí)行代碼。
21.根據(jù)權利要求20所述的計算機軟件,還包括在傳輸與第一數(shù)據(jù)塊關聯(lián)的所有寫之后,發(fā)送消息給存儲設備的可執(zhí)行代碼;及在發(fā)送消息給存儲設備之后暫停傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。
22.根據(jù)權利要求21所述的計算機軟件,還包括在暫停傳輸數(shù)據(jù)給隨后的數(shù)據(jù)寫之后,將數(shù)據(jù)寫與第三數(shù)據(jù)塊關聯(lián)的可執(zhí)行代碼,其中第三數(shù)據(jù)塊不同于第一和第二數(shù)據(jù)塊。
23.根據(jù)權利要求22所述的計算機軟件,還包括響應于存儲設備確認處理消息,重新開始傳輸數(shù)據(jù)給存儲設備的可執(zhí)行代碼。
24.根據(jù)權利要求20所述的計算機軟件,還包括提供數(shù)據(jù)寫給緩存槽的可執(zhí)行代碼。
25.根據(jù)權利要求24所述的計算機軟件,還包括響應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫對應于已經(jīng)與第一數(shù)據(jù)塊相關聯(lián)的緩存槽,將數(shù)據(jù)復制到新的緩存槽的可執(zhí)行代碼。
26.根據(jù)權利要求24所述的計算機軟件,還包括使用第一指針列表指向與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的緩存槽的可執(zhí)行代碼;及使用第二指針列表指向與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的緩存槽的可執(zhí)行代碼。
27.根據(jù)權利要求26所述的計算機軟件,還包括在每一槽的標題部分中提供高速緩存標簽字段的可執(zhí)行代碼,高速緩存標簽字段包括與槽相關聯(lián)的序號,其中序號對應于特定的數(shù)據(jù)塊。
28.根據(jù)權利要求27所述的計算機軟件,其中高速緩存標簽字段還包括密碼字段,其在槽第一次使用時被寫入。
29.根據(jù)權利要求28所述的計算機軟件,還包括響應于槽不再被使用而清零密碼字段的可執(zhí)行代碼。
30.根據(jù)權利要求24所述的計算機軟件,還包括使用緩存槽的第一只緩存虛擬設備對應于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼;及使用緩存槽的第二只緩存虛擬設備對應于與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫的可執(zhí)行代碼。
31.根據(jù)權利要求20所述的計算機軟件,還包括在傳輸與第一數(shù)據(jù)塊相關聯(lián)的所有寫之后發(fā)送消息給存儲設備的可執(zhí)行代碼。
32.將已排序的寫保存到遠程存儲設備的計算機軟件,包括接收用于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的消息的可執(zhí)行代碼;等待與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)被保存的可執(zhí)行代碼;及在第二數(shù)據(jù)塊已被保存之后開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼。
33.根據(jù)權利要求32所述的計算機軟件,還包括確認消息的可執(zhí)行代碼。
34.根據(jù)權利要求32所述的計算機軟件,還包括連同接收與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù),建立被修改的槽的列表的可執(zhí)行代碼。
35.根據(jù)權利要求34所述的計算機軟件,其中開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲的可執(zhí)行代碼包括遍歷被修改的槽的列表的可執(zhí)行代碼。
36.數(shù)據(jù)存儲設備,包括至少一包含數(shù)據(jù)的磁盤驅動器;至少一連接到至少一磁盤驅動器的主機適配器,其接收將要保存在至少一磁盤驅動器上的數(shù)據(jù);及至少一遠程適配器,其連接到至少一磁盤驅動器及至少一主機適配器,其傳輸數(shù)據(jù)給遠程存儲設備,其中,響應于至少一主機適配器進行的數(shù)據(jù)接收,在第一時間之后及第二時間之前開始的數(shù)據(jù)寫與第一數(shù)據(jù)塊關聯(lián),在第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊關聯(lián),在完成與第一數(shù)據(jù)塊相關聯(lián)的所有寫之后,開始將與第一數(shù)據(jù)塊相關聯(lián)的寫傳輸給遠程存儲設備。
全文摘要
主存儲設備排序多個數(shù)據(jù)寫,其通過將第一時間之后及第二時間之前開始的數(shù)據(jù)寫與第一數(shù)據(jù)塊相關聯(lián),將在第二時間之后開始的數(shù)據(jù)寫與不同于第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián),在與第一數(shù)據(jù)塊相關聯(lián)的所有寫完成之后,開始將與第一數(shù)據(jù)塊相關聯(lián)的寫傳輸給輔助存儲設備。排序數(shù)據(jù)寫還可包括,在主存儲設備將與第一數(shù)據(jù)塊相關聯(lián)的所有寫傳輸給輔助存儲設備之后,主存儲設備發(fā)送消息給輔助存儲設備,及響應于從主存儲設備接收消息,輔助存儲設備保存與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)寫。遠程存儲設備保存已排序的寫,其通過接收用于與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的消息,響應于與不同于所述第一數(shù)據(jù)塊的第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)尚未被保存,等待與第二數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)被保存;及開始與第一數(shù)據(jù)塊相關聯(lián)的數(shù)據(jù)的存儲。遠程存儲設備還可確認消息。
文檔編號G06F12/08GK1764904SQ200480008082
公開日2006年4月26日 申請日期2004年2月6日 優(yōu)先權日2003年3月25日
發(fā)明者戴維·梅雷, 馬克·J.·霍爾斯特德, 哈伊姆·科佩洛維茨, 本杰明·W.·約德, 阿迪·奧弗, 哈納·莫雷塞特 申請人:伊姆西公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1