專利名稱:提高連續(xù)遠程拷貝的網(wǎng)絡(luò)效率的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及存儲系統(tǒng),并且尤其涉及除了數(shù)據(jù)的初始寫輸入/輸出(I/O)操作之外的用于提高向該數(shù)據(jù)應(yīng)用諸如遠程拷貝之類的數(shù)據(jù)轉(zhuǎn)移功能的效率的系統(tǒng)和方法。
背景技術(shù):
根據(jù)近年來的趨勢,遠程拷貝技術(shù)是保持或保留商務(wù)活動免于遭受大規(guī)模災(zāi)害的重要技術(shù)之一。在總體上可以將遠程拷貝技術(shù)分為兩類,即同步的和異步的。在由并非短距離的距離間隔開的多個數(shù)據(jù)中心之間使用同步遠程拷貝。在由比同步遠程拷貝中的距離更長的距離間隔開的多個數(shù)據(jù)中心之間使用異步遠程拷貝。例如,美國專利No. 7152079公 開了在存儲系統(tǒng)之間的數(shù)據(jù)復(fù)制(更具體而言,異步遠程拷貝)。到目前為止,遠程拷貝技術(shù)通常需要寬帶網(wǎng)絡(luò)來轉(zhuǎn)移數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)移出現(xiàn)在初始拷貝、故障恢復(fù)、和用于寫I/o的鏡像。然而,通常而言在數(shù)據(jù)中心之間的數(shù)據(jù)轉(zhuǎn)移的成本較高。因此,人們希望減少遠程拷貝的流量。傳統(tǒng)上,用戶選擇要應(yīng)用遠程拷貝功能的卷,而不對未被選擇的卷應(yīng)用遠程拷貝功能。用戶在ー個卷中可能具有可變數(shù)據(jù),而許多卷并不需要用戶應(yīng)用遠程拷貝功能。
發(fā)明內(nèi)容
本發(fā)明的示例性實施例提供了除了數(shù)據(jù)的初始寫入I/O操作之外的用于選擇該數(shù)據(jù)來應(yīng)用諸如遠程拷貝功能之類的數(shù)據(jù)轉(zhuǎn)移功能的系統(tǒng)和方法。在主計算機上工作的每個應(yīng)用程序具有ID(標識符)。存儲系統(tǒng)在存儲器中存儲應(yīng)用程序的訪問ID和卷中的訪問的區(qū)域之間的關(guān)系。按照這種方式,存儲系統(tǒng)能夠識別到遠程存儲的初始拷貝的對齊。存儲系統(tǒng)針對每個寫I/O檢查和找到應(yīng)用程序的ID。基于每個寫I/O的應(yīng)用程序的ID,存儲系統(tǒng)能夠選擇需要映射到遠程存儲的每個寫I/O。由于僅針對選擇的數(shù)據(jù)執(zhí)行數(shù)據(jù)轉(zhuǎn)移功能,因此系統(tǒng)實現(xiàn)了網(wǎng)絡(luò)效率。該方法也是方便的,尤其是在虛擬機環(huán)境下更是如此,在所述虛擬機環(huán)境下,通常向每個虛擬機針對存儲I/O分配獨立的WffPN(全局端ロ名稱)和/或IP地址。在具體的實施例中,該方法通過針對每個寫I/O利用檢查ID (WffPN或IP地址)尋找需要進ー步的數(shù)據(jù)轉(zhuǎn)移的應(yīng)用程序的數(shù)據(jù)來減少兩個數(shù)據(jù)中心之間的遠程拷貝流量,井能夠減少在多個虛擬機共享和存儲ー個卷中的數(shù)據(jù)的環(huán)境下的遠程拷貝流量。本發(fā)明的ー個方面涉及ー種存儲系統(tǒng)的數(shù)據(jù)的控制方法,所述存儲系統(tǒng)經(jīng)由網(wǎng)絡(luò)被連接到ー個或多個主計算機。所述方法包括從主計算機接收數(shù)據(jù)的寫輸入/輸出(I/O)命令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送寫I/O請求的主計算機上運行的應(yīng)用程序;保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述存儲系統(tǒng)的第一卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄;除了將所述數(shù)據(jù)寫入到所述第一卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行在所述第一卷和第二存儲卷之間的數(shù)據(jù)轉(zhuǎn)移功能;和如果要對所述數(shù)據(jù)執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,則對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能。
在一些實施例中,所述存儲位置被用來確定是否要執(zhí)行在所述第一卷和第二存儲卷之間的數(shù)據(jù)轉(zhuǎn)移功能。所述數(shù)據(jù)轉(zhuǎn)移功能包括所述數(shù)據(jù)的數(shù)據(jù)拷貝、所述數(shù)據(jù)的數(shù)據(jù)鏡像、所述數(shù)據(jù)的數(shù)據(jù)恢復(fù)和所述數(shù)據(jù)的遠程拷貝中的至少一個。所述應(yīng)用程序ID是所述寫I/O命令的啟動器的啟動器端口的WffPN(全局端口名稱)和IP地址中的一方。所述應(yīng)用程序ID是發(fā)出所述寫I/O命令的主計算機上的虛擬機的ID。所述寫I/O命令中的應(yīng)用程序ID和要寫入所述存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄的保持包括保持數(shù)據(jù)對齊表并保持啟動器過濾表,所述數(shù)據(jù)對齊表示出了存儲位置和對應(yīng)的應(yīng)用程序ID之間的關(guān)系,所述啟動器過濾表示出了應(yīng)用程序ID和數(shù)據(jù)轉(zhuǎn)移狀態(tài)之間的關(guān)系,所述數(shù)據(jù)轉(zhuǎn)移狀態(tài)指示是否要針對所述應(yīng)用程序ID運用數(shù)據(jù)轉(zhuǎn)移功能。在具體的實施例中,方法還包括基于所述寫I/O命令,識別要寫入所述第一卷中 的數(shù)據(jù)的存儲位置。所述應(yīng)用程序ID通過在所述主計算機上運行的應(yīng)用程序而被包括在SCSI命令中。在確定要對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能之后,執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,該執(zhí)行步驟包括在所述存儲系統(tǒng)的要寫入所述數(shù)據(jù)的所述第一卷的頂部地址初始設(shè)置進程指針;檢查所保持的所述關(guān)系的記錄,以確定所述進程指針當前是否指向代表具有對應(yīng)的應(yīng)用程序ID的存儲位置的地址,所述對應(yīng)的應(yīng)用程序ID指示要執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,并且如果確定的結(jié)果是肯定的,則對所述進程指針當前指向的地址的地址范圍內(nèi)的數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移;將所述進程指針設(shè)置為指向下一地址并重復(fù)所述檢查,直到所述進程指針到達所述第一卷的底部地址為止。方法還包括確定所述存儲系統(tǒng)中的具有要寫入的所述數(shù)據(jù)的存儲位置的所述第一卷是否使用所述數(shù)據(jù)轉(zhuǎn)移功能;和只有所述卷使用所述數(shù)據(jù)轉(zhuǎn)移功能時,才對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能。本發(fā)明的另一方面涉及第一存儲系統(tǒng),其經(jīng)由網(wǎng)絡(luò)被連接到信息系統(tǒng)中的第二存儲系統(tǒng)和一個或多個主計算機,所述第一存儲系統(tǒng)包括處理器;存儲器;輸入/輸出(I/O)控制模塊,其被配置用于從主計算機接收數(shù)據(jù)的寫I/O命令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送所述寫I/O請求的主計算機上運行的應(yīng)用程序;保持在所述寫I/O命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄;和除了將所述數(shù)據(jù)寫入到所述第一存儲系統(tǒng)的卷中的存儲位置之夕卜,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能;和數(shù)據(jù)轉(zhuǎn)移控制模塊,其被配置用于如果要對所述數(shù)據(jù)執(zhí)行數(shù)據(jù)轉(zhuǎn)移功能,則對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能。本發(fā)明的另一方面涉及一種計算機可讀存儲介質(zhì),其存儲用于控制數(shù)據(jù)處理器來管理第一存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移的多個指令,所述第一存儲系統(tǒng)經(jīng)由網(wǎng)絡(luò)被連接到第二存儲系統(tǒng)和一個或多個主計算機。所述多個指令包括使所述數(shù)據(jù)處理器從主計算機接收數(shù)據(jù)的寫輸入/輸出(I/O)命令的指令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送所述寫I/O請求的主計算機上運行的應(yīng)用程序;使所述數(shù)據(jù)處理器保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄的指令;使所述數(shù)據(jù)處理器除了將所述數(shù)據(jù)寫入到所述第一存儲系統(tǒng)的卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能的指令;和使所述數(shù)據(jù)處理器在要對所述數(shù)據(jù)執(zhí)行數(shù)據(jù)轉(zhuǎn)移功能的情況下,對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能的指令。
基于以下詳細描述的具體實施例,本發(fā)明的這些和其他的特征和優(yōu)勢對于本領(lǐng)域一般技術(shù)人員而言將變得更加明顯。
圖I說明了可以應(yīng)用本發(fā)明的方法和裝置的信息系統(tǒng)的硬件配置的示例。圖2說明了圖I的存儲子系統(tǒng)中的啟動器過濾表112的示例。圖3說明了圖I的本地存儲系統(tǒng)中的數(shù)據(jù)對齊表113的示例。圖4說明了圖I的本地存儲子系統(tǒng)中的I/O控制120的處理流程的示例。
圖5說明了圖I的本地存儲子系統(tǒng)中的遠程初始拷貝控制的處理流程的示例。圖6說明了來自主計算機的寫I/O幀結(jié)構(gòu)的示例。圖7說明了來自主計算機的寫I/O幀結(jié)構(gòu)的另ー示例。圖8說明了來自主計算機的寫I/O幀結(jié)構(gòu)的又一示例。
具體實施例方式在本發(fā)明的以下詳細描述中,參照構(gòu)成本公開一部分的附圖,所示的附圖是說明性而并非限制性的,可以通過示例性的實施例來實踐本發(fā)明。在各個附圖中,相同的標記在實質(zhì)上指代相同的部分。此外,應(yīng)當注意的是,盡管如下所述且在附圖中說明的詳細的描述提供了各個示例性的實施例,本發(fā)明并不限于在這里描述和說明的實施例,而是可以被擴展到本領(lǐng)域技術(shù)人員已知或應(yīng)當能夠知曉的其它實施例。說明書中對“ー個實施例”、“該實施例”或“這些實施例”的引用表示與實施例相關(guān)聯(lián)而描述的特定特征、結(jié)構(gòu)或特點被包括在本發(fā)明的至少ー個實施例中,并且在說明書中的各個位置出現(xiàn)的這些詞語并不一定均指代相同的實施例。此外,在以下的詳細描述中,闡述了許多具體的細節(jié)以便提供對本發(fā)明的透徹理解。然而,對于本領(lǐng)域一般技術(shù)人員而言顯而易見的是,可能并不需要所有這些具體的細節(jié)來實踐本發(fā)明。在其它情況下,并未詳細描述公知的結(jié)構(gòu)、材料、電路、處理和接ロ,和/或可以框圖的形式說明公知的結(jié)構(gòu)、材料、電路、處理和接ロ,以避免對本發(fā)明造成不必要的模糊。此外,以算法和計算機內(nèi)的運算的符號表示的形式呈現(xiàn)以下詳細描述的某些部分。這些算法描述和符號表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員使用的手段,以便最有效地將他們創(chuàng)新的核心內(nèi)容傳達給本領(lǐng)域的其它技術(shù)人員。算法是導(dǎo)致期望的結(jié)束狀態(tài)或結(jié)果的ー系列定義的步驟。在本發(fā)明中,執(zhí)行的步驟需要物理操縱有形的量來實現(xiàn)有形的結(jié)果。盡管不是必須的,但通常這些量采用能夠被存儲、變換、組合、比較、或操縱的電或磁信號或指令的形式。主要由于普遍使用的原因,已經(jīng)通過時間證明將這些信號指代為比特、值、単元、符號、字符、詞語、數(shù)字、或指令等是方便的。但應(yīng)當理解,所有這些和類似的詞語將關(guān)聯(lián)于適當?shù)奈锢砹?,并且僅是應(yīng)用到這些量上的方便的標記。除非在以下論述中另有明確說明,否則應(yīng)當理解在整個說明書中,使用諸如“處理”、“計算”、“運算”、“確定”或“顯示”等詞語進行的論述可以包括計算機系統(tǒng)或其它信息處理設(shè)備的動作和處理,所述計算機系統(tǒng)或其它信息處理設(shè)備操縱被表示為計算機系統(tǒng)的寄存器和存儲器中的物理(電子)量的數(shù)據(jù),和將該數(shù)據(jù)變換為被類似表示為計算機系統(tǒng)存儲器或寄存器或其它信息存儲、傳輸或顯示裝置中的物理量的其它數(shù)據(jù)。
本發(fā)明還涉及用于執(zhí)行這里的操作的裝置。可以針對所需的目的專門構(gòu)建該裝置,或者該裝置可以包括通過一個或多個計算機程序選擇性地激活或重新配置的一個或多個通用計算機。這種計算機程序可以被存儲在計算機可讀存儲介質(zhì)中,所述計算機可讀存儲介質(zhì)例如是(但不限于)光盤、磁盤、只讀存儲器、隨機存取存儲器、固態(tài)設(shè)備和驅(qū)動器、或適于存儲電子信息的任何其它類型的媒體。在這里呈現(xiàn)的算法和顯示并不固有地涉及任何特定的計算機或其它裝置。可以根據(jù)本文中的教誨利用程序和模塊使用各種通用系統(tǒng),或者可以證明構(gòu)建更專門的裝置來執(zhí)行期望的方法步驟是方便的。此外,并不參照任何特定的程序語言來描述本發(fā)明??梢岳斫獾氖牵梢允褂酶鞣N編程語言來實現(xiàn)在這里描述的本發(fā)明的教誨??梢杂梢粋€或多個處理設(shè)備(例如,中央處理單元(CPU)、處理器、或控制器)來執(zhí)行編程語言的指令。如以下更詳細描述的本發(fā)明的示例性實施例提供了除了數(shù)據(jù)的初始寫輸入/輸出(I/o)操作之外的用于提高向該數(shù)據(jù)應(yīng)用諸如遠程拷貝之類的數(shù)據(jù)轉(zhuǎn)移功能的效率的 裝置、方法和計算機程序。圖I說明了可以應(yīng)用本發(fā)明的方法和裝置的信息系統(tǒng)的硬件配置的示例。本地(第一)存儲子系統(tǒng)100和遠程(第二 )存儲子系統(tǒng)200經(jīng)由一個或多個網(wǎng)絡(luò)400、402和401連接。本地存儲子系統(tǒng)100經(jīng)由網(wǎng)絡(luò)400連接到一個或多個主計算機500。遠程存儲子系統(tǒng)200經(jīng)由網(wǎng)絡(luò)401連接到主計算機600。網(wǎng)絡(luò)400、401和402可以是FC(光纖通道),FCoE(以太網(wǎng)光纖通道)、或TCP/IP(傳輸控制協(xié)議/網(wǎng)間協(xié)議)網(wǎng)絡(luò)。存儲子系統(tǒng)100從主計算機500接收I/O命令,并將存儲卷130提供給主計算機500。存儲子系統(tǒng)200從主計算機600接收I/O命令,并將存儲卷230提供給主計算機600。本地存儲子系統(tǒng)100建立與遠程存儲子系統(tǒng)200的連續(xù)遠程拷貝。連續(xù)遠程拷貝同步或異步地將來自本地存儲子系統(tǒng)100的數(shù)據(jù)映射到遠程存儲系統(tǒng)200。主計算機500均包括CPU、存儲器和接口。CPU讀取在存儲器中存儲的程序,并執(zhí)行程序。程序包括應(yīng)用程序(AP)503、操作系統(tǒng)(OS)、虛擬機(VM)502和管理程序(hypervisor) 5010虛擬機可以執(zhí)行多個應(yīng)用程序,并且在它們之間沒有一一對應(yīng)的關(guān)系。主計算機600具有管理程序601。管理程序501和601管理和控制虛擬機。每個虛擬機具有用于存儲網(wǎng)絡(luò)的獨立ID。這種ID的示例包括用于FC/FCoE SAN(存儲區(qū)域網(wǎng)絡(luò))的WffPN或用于iSCSI SAN的IP (網(wǎng)間協(xié)議)地址。每一管理程序501和601還具有獨立ID。主計算機的管理程序?qū)⒃L問對應(yīng)的存儲子系統(tǒng)的存儲卷上的i_節(jié)點區(qū)域。存儲子系統(tǒng)100和200均具有存儲控制器,所述存儲控制器包括CPU、存儲器、存儲接口和盤接口。CPU控制存儲子系統(tǒng),并從存儲器中讀取微代碼和表格。存儲器存儲微代碼和表格。微代碼和表格可以包括I/O控制120和220、高速緩存控制、盤控制、RAID (冗余獨立磁盤陣列)控制、遠程拷貝控制110和210、和本地拷貝控制等。I/O控制120和220用于來自主計算機的I/O操作(120用于500,220用于600)。存儲接口經(jīng)由對應(yīng)的存儲網(wǎng)絡(luò)400和401將存儲子系統(tǒng)100和200連接到對應(yīng)的主計算機500和600。盤接口將CPU和存儲器連接到在盤單元中存儲的多個存儲設(shè)備,所述盤單元可以位于存儲子系統(tǒng)的內(nèi)部,或者可以是與存儲子系統(tǒng)相連接的外部單元。存儲設(shè)備可以包括用于存儲數(shù)據(jù)的諸如閃速存儲器和/或硬盤驅(qū)動器(HDD)之類的固態(tài)設(shè)備。本地存儲子系統(tǒng)100具有用于源(source)的遠程拷貝功能110,并且遠程存儲子系統(tǒng)具有用于目標的遠程拷貝功能210。
源的遠程拷貝功能110被存儲在本地存儲子系統(tǒng)100的存儲器中。其包括配置接ロ 111、啟動器過濾表112、數(shù)據(jù)對齊表113、遠程初始拷貝控制114、和遠程寫數(shù)據(jù)轉(zhuǎn)移控制115。可以選擇在存儲子系統(tǒng)中存儲的每個卷,從而卷應(yīng)用或不應(yīng)用遠程拷貝功能,并且存儲子系統(tǒng)保持這樣的配置信息。配置接ロ 111是用戶、存儲管理工具和/或管理程序(hypervisor)管理工具的接ロ,用于設(shè)置遠程拷貝對象虛擬機的信息。啟動器過濾表存儲遠程拷貝對象虛擬機的信息。從配置接ロ 111對該啟動器過濾表進行設(shè)置。數(shù)據(jù)對齊表113存儲虛擬機502的存儲的數(shù)據(jù)對齊的信息。由I/O控制120對數(shù)據(jù)對齊表113進行設(shè)置。遠程初始拷貝控制114將本地存儲子系統(tǒng)100的卷130中的數(shù)據(jù)轉(zhuǎn)移到遠程存儲子系統(tǒng)200的卷230。遠程初始拷貝控制114能夠選擇轉(zhuǎn)移對象區(qū)域。 目標的遠程拷貝功能210被存儲在遠程存儲子系統(tǒng)200的存儲器中。目標的遠程拷貝功能210能夠從本地存儲子系統(tǒng)100接收具有數(shù)據(jù)一致性的數(shù)據(jù)。如果在本地存儲子系統(tǒng)100中出現(xiàn)失敗,則其觸發(fā)故障轉(zhuǎn)移(failover)處理并改變遠程存儲子系統(tǒng)200而不是本地存儲子系統(tǒng)100上的操作。此時,使用遠程拷貝功能的虛擬機在遠程存儲子系統(tǒng)200的主計算機600上啟動。這在本領(lǐng)域中是公知的。本地存儲子系統(tǒng)100的本地卷130存儲數(shù)據(jù)131 (131a_e)。i_節(jié)點數(shù)據(jù)131a和虛擬機502的數(shù)據(jù)131b、131c和131d工作于主計算機500上。在圖I所示的示例中,本地拷貝將i_節(jié)點數(shù)據(jù)131a、數(shù)據(jù)131b、131e、數(shù)據(jù)131c的一部分從本地存儲子系統(tǒng)100轉(zhuǎn)移到遠程存儲子系統(tǒng)200。遠程卷130存儲i-節(jié)點數(shù)據(jù)231a、和數(shù)據(jù)231b、231c和231e。遠程存儲子系統(tǒng)200中的數(shù)據(jù)231a、231b和231e是本地存儲子系統(tǒng)100中的數(shù)據(jù)131a、131b和131e的鏡像數(shù)據(jù)。虛擬機可以運行多個應(yīng)用程序。在這種情況下,盡管應(yīng)用程序APO和APl運行在同一虛擬機VM#1上,但是也僅將與數(shù)據(jù)131c的應(yīng)用程序API相關(guān)的數(shù)據(jù)拷貝到數(shù)據(jù)231c,而不將與應(yīng)用程序APO相關(guān)的數(shù)據(jù)拷貝到數(shù)據(jù)231c。圖2說明了圖I的存儲子系統(tǒng)100中的啟動器過濾表112的示例。啟動器過濾表112存儲遠程拷貝對象虛擬機的信息。其包括作為所示的實施例中的WffPN的虛擬機502的應(yīng)用程序ID 112-1、以及關(guān)于虛擬機是被應(yīng)用還是未被應(yīng)用的遠程拷貝狀態(tài)112-2的信息的列?!皯?yīng)用”狀態(tài)表示遠程拷貝功能被應(yīng)用到虛擬機?!拔磻?yīng)用”表示遠程拷貝功能未被應(yīng)用到虛擬機。圖3說明了圖I的本地存儲系統(tǒng)100中的數(shù)據(jù)對齊表113的示例。數(shù)據(jù)對齊表113存儲虛擬機502的存儲的數(shù)據(jù)對齊的信息。其包括作為卷區(qū)域的LBA范圍113-1、以及作為訪問ID的列表的應(yīng)用程序ID 113-2的列,其中所述訪問ID是所示的實施例中的WWPN。應(yīng)用程序ID 113-2中的條目“空”表示該區(qū)域尚未被訪問。當卷被格式化時,該卷的數(shù)據(jù)對齊表113被格式化。圖4說明了圖I的本地存儲子系統(tǒng)100中的I/O控制120的處理流程的示例。當其從主計算機500接收到I/O時,該程序運行。在步驟120-0處,程序開始。在步驟120-1處,程序檢查卷是否使用遠程拷貝功能。如果為是,則程序進行到步驟120-2處;如果為否,則程序進行到步驟120-6處。在步驟1202處,程序從FC層中的所接收到的I/O命令獲得啟動器的WWPN,并將該信息存儲到數(shù)據(jù)對齊表113中。I/O命令包括FCID(光纖通道ID)。存儲子系統(tǒng)100能夠通過詢問網(wǎng)絡(luò)400中的交換機設(shè)備來獲得與該FCID相關(guān)的WWPN。在步驟120-3處,程序獲得SCSI層中的I/O命令的屬性,并檢查I/O命令是否為“寫入”。如果命令為“寫入”,則繼續(xù)到步驟120-4處;如果命令不為“寫入”,則繼續(xù)到步驟120-6處。在步驟120-4處,程序通過參照啟動器過濾表112,來檢查在步驟120-2處獲得的啟動器端ロ ID是否使用遠程拷貝功能。如果為是,則程序繼續(xù)到步驟120-5處;如果為否,則程序繼續(xù)到步驟120-6處。在步驟120-5處,程序運行遠程拷貝數(shù)據(jù)轉(zhuǎn)移程序,該遠程拷貝數(shù)據(jù)轉(zhuǎn)移程序可以是本領(lǐng)域中已知的任何適當?shù)某绦?。如果遠程拷貝是同步遠程拷貝,則程序等待來自遠程存儲子系統(tǒng)200的響應(yīng)。如果遠程拷貝是異步遠程拷貝,則在之后運行數(shù)據(jù)轉(zhuǎn)移,同時程序進行準備。在步驟120-6處,程序運行I/O操作程序,所述I/O操作程序可以是本領(lǐng)域中已知的任何適當?shù)某绦?。在步驟120-7處程序結(jié)束。圖5說明了圖I的本地存儲子系統(tǒng)100中的遠程初始拷貝控制114的處理流程的 示例。在建立遠程對(remote pair)或新的活動(應(yīng)用遠程拷貝)的應(yīng)用程序的ID/WWPN被登記到啟動器過濾表112之后運行該程序。在步驟114-0處,程序開始。在步驟114-1處,程序?qū)⑦M程指針設(shè)置為卷的頂部地址。在步驟114-2處,程序檢查進程指針是否超過了卷的底部地址。如果為是,則程序在步驟114-7處結(jié)束;如果為否,則程序繼續(xù)到步驟114-3處。在步驟114-3處,程序通過參照啟動器過濾表112和數(shù)據(jù)對齊表113,檢查是否有應(yīng)用遠程拷貝的虛擬機訪問了進程指針所指向的地址處的任何ー個WWPN。如果為是,則程序繼續(xù)到步驟114-4處;如果為否,則程序繼續(xù)到步驟114-5處。在步驟114-4處,程序?qū)⒌刂贩秶鷥?nèi)的數(shù)據(jù)從本地卷130拷貝到遠程卷230。在步驟114-5處,程序?qū)⑦M程指針設(shè)置為下一個地址并返回到步驟114-2。圖6說明了來自主計算機500的寫I/O幀結(jié)構(gòu)的示例(摘編自FC_FS_2草案)。其示出了“FC(光纖通道)”幀結(jié)構(gòu),在該幀結(jié)構(gòu)中,幀F(xiàn)l是FC幀。應(yīng)用程序ID Fl-I是公布寫I/O的應(yīng)用程序的ID。該ID是FCID。存儲子系統(tǒng)能夠通過對存儲網(wǎng)絡(luò)400中的交換機設(shè)備的請求,利用該FCID來搜索應(yīng)用程序的WffPN15AP 503還可以存儲F1-2中的其它ID,以部分地映射數(shù)據(jù),如圖I中所示。在這種情況下,由于在同一虛擬機上執(zhí)行多個應(yīng)用程序并且無法使用虛擬機的標識,因此可以使用Fl-I和F1-2的組合來標識應(yīng)用程序的ID。如果存儲子系統(tǒng)確定數(shù)據(jù)關(guān)聯(lián)于通過Fl-I和F1-2的組合的應(yīng)用程序,則存儲子系統(tǒng)會決定將數(shù)據(jù)映射到遠程站點。圖7說明了來自主計算機500的寫I/O幀結(jié)構(gòu)的另ー示例(摘編自FC_BB_5草案)。其示出了“ FCoE(以太網(wǎng)光纖通道)”巾貞結(jié)構(gòu),在該幀結(jié)構(gòu)中幀F(xiàn)2是FCoE幀。應(yīng)用程序ID F2-1是公布寫I/O的應(yīng)用程序的ID。該ID是FCID。存儲子系統(tǒng)能夠通過對存儲網(wǎng)絡(luò)400中的交換機設(shè)備的請求,利用該FCID來搜索應(yīng)用程序的WWPN。圖8說明了來自主計算機500的寫I/O幀結(jié)構(gòu)的又一示例(摘編自RFC791、RFC793、RFC790、RFC3720和SBC-3草案)。其示出了“ iSCSI ”幀結(jié)構(gòu),在該幀結(jié)構(gòu)中幀F(xiàn)3是包括IP、TCP和SCSI協(xié)議的iSCSI幀結(jié)構(gòu)。應(yīng)用程序ID F3-1是公布寫I/O的虛擬機502 的 ID。當然,圖I中所示的系統(tǒng)配置僅是可以實現(xiàn)本發(fā)明的信息系統(tǒng)的示例,并且本發(fā)明并不限于特定的硬件配置。實現(xiàn)本發(fā)明的計算機和存儲系統(tǒng)還可以具有能夠存儲和讀取用于實現(xiàn)上述本發(fā)明的模塊、程序和數(shù)據(jù)結(jié)構(gòu)的已知的I/o設(shè)備(例如,CD和DVD驅(qū)動器、軟盤驅(qū)動器、硬盤驅(qū)動器等)。這些模塊、程序和結(jié)構(gòu)可以被編碼在例如計算機可讀介質(zhì)上。例如,本發(fā)明的數(shù)據(jù)結(jié)構(gòu)可以被存儲在與其上貯存有在本發(fā)明中使用的程序的ー個或多個計算機可讀媒體無關(guān)的計算機可讀媒體上??梢酝ㄟ^數(shù)字數(shù)據(jù)通信的任何形式或介質(zhì)(例如,通信網(wǎng)絡(luò))互聯(lián)系統(tǒng)的部件。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)、廣域網(wǎng)(例如互聯(lián)網(wǎng))、無線網(wǎng)絡(luò)、和存儲區(qū)域網(wǎng)絡(luò)等。在說明書中,為了解釋的目的而闡述了大量的細節(jié),以便提供對本發(fā)明的徹底理解。然而,對于本領(lǐng)域技術(shù)人員而言顯而易見的是,實踐本發(fā)明并不需要所有這些具體的細節(jié)。還應(yīng)當注意的是,本發(fā)明可以被描述為過程,所述過程通常被示為流程圖、作業(yè)圖、結(jié)構(gòu)圖或框圖。盡管流程圖可以將操作描述為順序的過程,但也可以并行或并發(fā)地執(zhí)行許多操作。此外,操作的順序可以被重新排布。如本領(lǐng)域技術(shù)人員所知,可以通過硬件、軟件、或軟件和硬件的某一組合來執(zhí)行上述操作??梢允褂秒娐泛瓦壿嬈骷?硬件)來實現(xiàn)本發(fā)明的實施例的各個方面,并可以使用在機器可讀介質(zhì)(軟件)上存儲的指令來實現(xiàn)其它方面,所述指令當被處理器執(zhí)行時,使得處理器實施執(zhí)行本發(fā)明實施例的方法。此外,可僅以硬件來執(zhí)行本發(fā)明的一些實施例,并 可僅以軟件來執(zhí)行另一些實施例。此外,可在單個的単元中執(zhí)行所描述的各個功能,或可以任何的方式在多個部件之間分散各個功能。當通過軟件執(zhí)行時,可以由諸如通用計算機之類的處理器基于在計算機可讀介質(zhì)上存儲的指令來執(zhí)行方法。如果需要,可以壓縮和/或加密的格式將指令存儲在介質(zhì)中。從上文中顯而易見的是,本發(fā)明提供了除了數(shù)據(jù)的初始寫輸入/輸出(I/O)操作之外的用于提高向該數(shù)據(jù)應(yīng)用諸如遠程拷貝之類的數(shù)據(jù)轉(zhuǎn)移功能的效率的方法、裝置、和在計算機可讀媒體上存儲的程序。此外,盡管在本說明書中說明和描述了具體的實施例,但是本領(lǐng)域一般技術(shù)人員可以理解可以用構(gòu)思出來實現(xiàn)相同目的的任何布置來替代所公開的具體實施例。本公開意在涵蓋本發(fā)明的任何和所有的修改或變更,并且應(yīng)當理解在所附權(quán)利要求中使用的詞語并不應(yīng)當被解釋為將本發(fā)明限制到說明書中所公開的具體實施例中。與之形成對比的是,完全通過所附權(quán)利要求來界定本發(fā)明的范圍,根據(jù)權(quán)利要求解釋的確立規(guī)則以及與權(quán)利要求對等的整個范圍來構(gòu)建權(quán)利要求。
權(quán)利要求
1.一種存儲系統(tǒng)的數(shù)據(jù)的控制方法,所述存儲系統(tǒng)經(jīng)由網(wǎng)絡(luò)被連接到一個或多個主計算機,所述方法包括 從主計算機接收數(shù)據(jù)的寫輸入/輸出(I/o)命令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送寫I/O請求的主計算機上運行的應(yīng)用程序; 保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述存儲系統(tǒng)的第一卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄; 除了將所述數(shù)據(jù)寫入到所述第一卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行在所述第一卷和第二存儲卷之間的數(shù)據(jù)轉(zhuǎn)移功能;和 如果要對所述數(shù)據(jù)執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,則對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能。
2.根據(jù)權(quán)利要求I所述的方法, 其中,在所述確定過程中,使用所述存儲位置來確定是否要執(zhí)行在所述第一卷和第二存儲卷之間的數(shù)據(jù)轉(zhuǎn)移功能;和 其中,所述數(shù)據(jù)轉(zhuǎn)移功能包括所述數(shù)據(jù)的數(shù)據(jù)拷貝、所述數(shù)據(jù)的數(shù)據(jù)鏡像、所述數(shù)據(jù)的數(shù)據(jù)恢復(fù)和所述數(shù)據(jù)的遠程拷貝中的至少ー個。
3.根據(jù)權(quán)利要求I所述的方法, 其中,所述應(yīng)用程序ID是所述寫I/O命令的啟動器的啟動器端ロ的WffPN (全局端ロ名稱)和IP地址中的一方。
4.根據(jù)權(quán)利要求I所述的方法, 其中,所述應(yīng)用程序ID是發(fā)出所述寫I/O命令的主計算機上的虛擬機的ID。
5.根據(jù)權(quán)利要求I所述的方法, 其中,所述寫I/o命令中的應(yīng)用程序ID和要寫入所述存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄的保持包括保持數(shù)據(jù)對齊表并保持啟動器過濾表,所述數(shù)據(jù)對齊表示出了存儲位置和對應(yīng)的應(yīng)用程序ID之間的關(guān)系,所述啟動器過濾表示出了應(yīng)用程序ID和數(shù)據(jù)轉(zhuǎn)移狀態(tài)之間的關(guān)系,所述數(shù)據(jù)轉(zhuǎn)移狀態(tài)指示是否要針對所述應(yīng)用程序ID運用數(shù)據(jù)轉(zhuǎn)移功能。
6.根據(jù)權(quán)利要求I所述的方法,還包括 基于所述寫I/o命令,識別要寫入所述第一卷中的數(shù)據(jù)的存儲位置, 其中,所述應(yīng)用程序ID通過在所述主計算機上運行的應(yīng)用程序而被包括在SCSI命令中。
7.根據(jù)權(quán)利要求I所述的方法,其中在確定要對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能之后,執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,該執(zhí)行步驟包括在所述存儲系統(tǒng)的要寫入所述數(shù)據(jù)的所述第一卷的頂部地址初始設(shè)置進程指針;檢查所保持的所述關(guān)系的記錄,以確定所述進程指針當前是否指向代表具有對應(yīng)的應(yīng)用程序ID的存儲位置的地址,所述對應(yīng)的應(yīng)用程序ID指示要執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,并且如果確定的結(jié)果是肯定的,則對所述進程指針當前指向的地址的地址范圍內(nèi)的數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移; 將所述進程指針設(shè)置為指向下一地址并重復(fù)所述檢查,直到所述進程指針到達所述第一卷的底部地址為止。
8.根據(jù)權(quán)利要求I所述的方法,還包括 確定所述存儲系統(tǒng)中的具有要寫入的所述數(shù)據(jù)的存儲位置的所述第一卷是否使用所述數(shù)據(jù)轉(zhuǎn)移功能;和 只有所述卷使用所述數(shù)據(jù)轉(zhuǎn)移功能時,才對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能。
9.ー種第一存儲系統(tǒng),其經(jīng)由網(wǎng)絡(luò)被連接到信息系統(tǒng)中的第二存儲系統(tǒng)和ー個或多個主計算機,所述第一存儲系統(tǒng)包括 處理器; 存儲器; 輸入/輸出(I/O)控制模塊,其被配置用于 從主計算機接收數(shù)據(jù)的寫I/o命令,所述寫I/O命令包括應(yīng)用程序ID, 所述應(yīng)用程序ID標識出在發(fā)送所述寫I/O請求的主計算機上運行的應(yīng)用程序; 保持在所述寫I/O命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄;和 除了將所述數(shù)據(jù)寫入到所述第一存儲系統(tǒng)的卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能;和數(shù)據(jù)轉(zhuǎn)移控制模塊,其被配置用于 如果要對所述數(shù)據(jù)執(zhí)行數(shù)據(jù)轉(zhuǎn)移功能,則對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能。
10.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng), 其中所述數(shù)據(jù)轉(zhuǎn)移功能包括所述數(shù)據(jù)的數(shù)據(jù)拷貝、所述數(shù)據(jù)的數(shù)據(jù)鏡像、所述數(shù)據(jù)的數(shù)據(jù)恢復(fù)和所述數(shù)據(jù)的遠程拷貝中的至少ー個。
11.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng), 其中,所述應(yīng)用程序ID是所述寫I/O命令的啟動器的啟動器端ロ的WffPN (全局端ロ名稱)和IP地址中的一方。
12.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng), 其中所述應(yīng)用程序ID是發(fā)出所述寫I/O命令的主計算機上的虛擬機的ID。
13.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng), 其中,所述存儲位置用于確定是否要執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能; 其中,保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄包括保持數(shù)據(jù)對齊表和保持啟動器過濾表,所述數(shù)據(jù)對齊表示出了存儲位置和對應(yīng)的應(yīng)用程序ID之間的關(guān)系,所述啟動器過濾表示出了應(yīng)用程序ID和數(shù)據(jù)轉(zhuǎn)移狀態(tài)之間的關(guān)系,所述數(shù)據(jù)轉(zhuǎn)移狀態(tài)指示是否要針對所述應(yīng)用程序ID運用數(shù)據(jù)轉(zhuǎn)移功能;和 其中,所述數(shù)據(jù)對齊表和所述啟動器過濾表被存儲在所述存儲器中。
14.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng),其中所I/O控制模塊被配置為 基于所述寫I/O命令,識別要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置。
15.根據(jù)權(quán)利要求9所述的第一存儲系統(tǒng),還包括初始控制,所述初始控制被配置成用于在所述I/O控制模塊確定對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能之后,執(zhí)行如下處理 在所述第一存儲系統(tǒng)的要寫入所述數(shù)據(jù)的所述卷的頂部地址初始設(shè)置進程指針; 檢查所保持的所述關(guān)系的記錄,以確定所述進程指針當前是否指向代表具有對應(yīng)的應(yīng)用程序ID的存儲位置的地址,所述對應(yīng)的應(yīng)用程序ID指示要執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,并且如果確定的結(jié)果是肯定的,則對所述進程指針當前指向的地址的地址范圍內(nèi)的數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移; 將所述進程指針設(shè)置為指向下一地址并重復(fù)所述檢查,直到所述進程指針到達所述卷的底部地址為止。
16.一種計算機可讀存儲介質(zhì),其存儲用于控制數(shù)據(jù)處理器來管理第一存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移的多個指令,所述第一存儲系統(tǒng)經(jīng)由網(wǎng)絡(luò)被連接到第二存儲系統(tǒng)和ー個或多個主計算機,所述多個指令包括 使所述數(shù)據(jù)處理器從主計算機接收數(shù)據(jù)的寫輸入/輸出(I/O)命令的指令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送所述寫I/O請求的主計算機上運行的應(yīng)用程序; 使所述數(shù)據(jù)處理器保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄的指令; 使所述數(shù)據(jù)處理器除了將所述數(shù)據(jù)寫入到所述第一存儲系統(tǒng)的卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能的指令;和 使所述數(shù)據(jù)處理器在要對所述數(shù)據(jù)執(zhí)行數(shù)據(jù)轉(zhuǎn)移功能的情況下,對所述數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移功能的指令。
17.根據(jù)權(quán)利要求16所述的計算機可讀存儲介質(zhì), 其中,所述應(yīng)用程序ID是所述寫I/O命令的啟動器的啟動器端ロ的WffPN (全局端ロ名稱)和IP地址中的一方。
18.根據(jù)權(quán)利要求16所述的計算機可讀存儲介質(zhì), 其中,所述應(yīng)用程序ID是發(fā)出所述寫I/O命令的主計算機上的虛擬機的ID。
19.根據(jù)權(quán)利要求16所述的計算機可讀存儲介質(zhì), 其中,使所述數(shù)據(jù)處理器保持所述寫I/o命令中的應(yīng)用程序ID和要寫入所述第一存儲系統(tǒng)的卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄的指令包括 使所述數(shù)據(jù)處理器保持數(shù)據(jù)對齊表的指令,所述數(shù)據(jù)對齊表示出了存儲位置和對應(yīng)的應(yīng)用程序ID之間的關(guān)系;和 使所述數(shù)據(jù)處理器保持啟動器過濾表的指令,所述啟動器過濾表示出了應(yīng)用程序ID和數(shù)據(jù)轉(zhuǎn)移狀態(tài)之間的關(guān)系,所述數(shù)據(jù)轉(zhuǎn)移狀態(tài)指示是否要針對所述應(yīng)用程序ID運用數(shù)據(jù)轉(zhuǎn)移功能。
20.根據(jù)權(quán)利要求16所述的計算機可讀存儲介質(zhì),還包括使所述數(shù)據(jù)處理器在確定對所述數(shù)據(jù)執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能之后,執(zhí)行以下處理的指令 在所述第一存儲系統(tǒng)的要寫入所述數(shù)據(jù)的所述卷的頂部地址初始設(shè)置進程指針; 檢查所保持的所述關(guān)系的記錄,以確定所述進程指針當前是否指向代表具有對應(yīng)的應(yīng)用程序ID的存儲位置的地址,所述對應(yīng)的應(yīng)用程序ID指示要執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,并且如果確定的結(jié)果是肯定的,則對所述進程指針當前指向的地址的地址范圍內(nèi)的數(shù)據(jù)執(zhí)行向所述第二存儲系統(tǒng)的數(shù)據(jù)轉(zhuǎn)移; 將所述進程指針設(shè)置為指向下一地址并重復(fù)所述檢查,直到所述進程指針到達所述卷的底部地址為止。
全文摘要
本發(fā)明提供一種存儲系統(tǒng)的數(shù)據(jù)的控制方法,包括從主計算機接收數(shù)據(jù)的寫輸入/輸出(I/O)命令,所述寫I/O命令包括應(yīng)用程序ID,所述應(yīng)用程序ID標識出在發(fā)送寫I/O請求的主計算機上運行的應(yīng)用程序;保持所述寫I/O命令中的應(yīng)用程序ID和要寫入所述存儲系統(tǒng)的第一卷中的數(shù)據(jù)的存儲位置之間的關(guān)系的記錄;除了將所述數(shù)據(jù)寫入到所述第一卷中的存儲位置之外,基于所述應(yīng)用程序ID確定是否要對所述數(shù)據(jù)執(zhí)行在所述第一卷和第二存儲卷之間的數(shù)據(jù)轉(zhuǎn)移功能;以及如果要對所述數(shù)據(jù)執(zhí)行所述數(shù)據(jù)轉(zhuǎn)移功能,則對所述數(shù)據(jù)執(zhí)行向所述第二卷的數(shù)據(jù)轉(zhuǎn)移功能。
文檔編號G06F11/14GK102681912SQ201110432050
公開日2012年9月19日 申請日期2011年12月21日 優(yōu)先權(quán)日2011年3月1日
發(fā)明者川口智大 申請人:株式會社日立制作所