專利名稱:將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的方法、系統(tǒng)和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的方法、系統(tǒng)和程序。
背景技術(shù):
為了建立和維護(hù)數(shù)據(jù)的鏡像拷貝或?qū)?shù)據(jù)轉(zhuǎn)移到目標(biāo)位置的新位置,例如數(shù)據(jù)庫文件、目錄或任何數(shù)據(jù)組合的存儲元素可以從源存儲位置遷移到目標(biāo)存儲位置,其中遷移后數(shù)據(jù)將從該目標(biāo)位置訪問。例如在線或商業(yè)數(shù)據(jù)庫系統(tǒng)的轉(zhuǎn)移的許多大規(guī)模的數(shù)據(jù)轉(zhuǎn)移會花費(fèi)大量的時間以便在網(wǎng)絡(luò)上遷移。而且,在遷移過程中,系統(tǒng)會需要允許事務(wù)處理繼續(xù)。各種硬件和軟件解決方案提供了在數(shù)據(jù)被遷移時向源和目標(biāo)位置都傳送更新的機(jī)制。遷移操作通常包括對源數(shù)據(jù)的讀請求和然后向目標(biāo)發(fā)出寫請求。遷移系統(tǒng)必須解決潛在能發(fā)生在當(dāng)發(fā)起從應(yīng)用到源數(shù)據(jù)的寫請求時,源數(shù)據(jù)正在被遷移成目標(biāo)數(shù)據(jù)的沖突。例如,當(dāng)舊的源數(shù)據(jù)正在寫入時如果接收到新的源數(shù)據(jù),那么新的源數(shù)據(jù)就可能沒有遷移到目標(biāo)位置。
一個已知的這個潛在沖突的解決方案是串行化訪問源數(shù)據(jù),直到應(yīng)用數(shù)據(jù)的寫或遷移完成,以至在未完成的寫或遷移完成之前,任何干涉的應(yīng)用寫和遷移的操作都不允許發(fā)生。這延遲了向等待被當(dāng)前寫或遷移操作釋放的鎖的請求返回完成。這樣,串行化防止了在源數(shù)據(jù)完成到目標(biāo)數(shù)據(jù)的寫之前當(dāng)數(shù)據(jù)正在遷移時執(zhí)行對源數(shù)據(jù)的寫。而且,如果塊發(fā)生了更新,那么就延遲對同一塊的遷移操作直到更新完成。與串行化有關(guān)的延遲能減慢對源數(shù)據(jù)寫操作和將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的執(zhí)行。
發(fā)明內(nèi)容
提供了將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的方法、系統(tǒng)和程序。接收用于將應(yīng)用數(shù)據(jù)寫到還沒有遷移成目標(biāo)數(shù)據(jù)的源數(shù)據(jù)中的寫請求。為寫請求產(chǎn)生指示應(yīng)用數(shù)據(jù)要寫入的源數(shù)據(jù)的信息。將應(yīng)用數(shù)據(jù)寫入到源數(shù)據(jù)。接收將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的請求并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫請求的信息中指示的源數(shù)據(jù)重疊而返回重試遷移請求的指示。
現(xiàn)在參考附圖,其中相同的標(biāo)號在所有附圖中都表示對應(yīng)部分。
圖1說明實(shí)施方式實(shí)現(xiàn)于的計(jì)算環(huán)境;圖2說明在干涉的寫中維護(hù)的信息;圖3說明處理到要遷移源數(shù)據(jù)的寫請求的操作;圖4說明遷移數(shù)據(jù)的操作;圖5說明當(dāng)遷移數(shù)據(jù)時使用的讀緩沖區(qū);及圖6說明處理遷移請求的操作。
具體實(shí)施例方式
在下面描述中,參考組成本發(fā)明的一部分并且說明了本發(fā)明的幾個實(shí)施方式的附圖。應(yīng)當(dāng)理解,可以利用其它實(shí)施方式并且可以做結(jié)構(gòu)的和操作的改變而不背離本發(fā)明的范圍。
圖1說明了包括存貯器4的計(jì)算系統(tǒng)2。在計(jì)算機(jī)2中的進(jìn)程和線程在內(nèi)核地址空間6或用戶地址空間8中執(zhí)行,其中在內(nèi)核地址空間8中執(zhí)行的進(jìn)程可以比那些在用戶地址空間8中執(zhí)行的進(jìn)程以更高優(yōu)先級執(zhí)行。文件系統(tǒng)管理器10在內(nèi)核地址空間6中執(zhí)行以處理由在用戶地址空間8中執(zhí)行的遷移管理器12和應(yīng)用14發(fā)出的讀和寫的請求。遷移管理器12發(fā)起從源存儲18遷移源數(shù)據(jù)16中的塊到目標(biāo)存儲22中目標(biāo)數(shù)據(jù)20中的塊的操作。文件系統(tǒng)管理器10在調(diào)用遷移操作的命令下執(zhí)行遷移功能24來完成由遷移管理器12指定的數(shù)據(jù)的遷移操作。
源存儲18和目標(biāo)存儲22可以在同一個存儲設(shè)備或系統(tǒng)中,或在分離的存儲設(shè)備或系統(tǒng)中實(shí)現(xiàn)。源存儲18和目標(biāo)存儲22可以包含任何本領(lǐng)域已知的存儲設(shè)備,這樣一個存儲設(shè)備或多個相互連接的設(shè)備,例如盤驅(qū)動器,配置成獨(dú)立盤冗余陣列(RAID)、簡單盤集群(JBOD)、直接訪問存儲設(shè)備(DASD)、帶存儲設(shè)備、例如帶庫的單一或多個存儲單元等。計(jì)算機(jī)2通過連接26a和26b連接到源存儲18和目標(biāo)存儲22。連接26a和26b可以包括任何本領(lǐng)域已知的存儲和主機(jī)間的接口,比如網(wǎng)絡(luò)連接(例如以太網(wǎng)、無線網(wǎng)、光纖信道等)或任何其它本領(lǐng)域已知的數(shù)據(jù)傳送接口,比如高級技術(shù)附加設(shè)備(ATA)、串行ATA(SATA)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)等,它們對主機(jī)2可以是外部的或內(nèi)部的。
遷移圖28提供了源數(shù)據(jù)16中的數(shù)據(jù)單元怎樣對應(yīng)到目標(biāo)數(shù)據(jù)20中的單元的信息,使得源數(shù)據(jù)單元轉(zhuǎn)移到在遷移圖28中指示的相應(yīng)的目標(biāo)數(shù)據(jù)單元。遷移管理器12使用遷移圖28來確定將收到被遷移的源數(shù)據(jù)單元的目標(biāo)數(shù)據(jù)單元。源數(shù)據(jù)16可以包括數(shù)據(jù)庫、大文件、數(shù)據(jù)集、邏輯目錄、邏輯卷、文件系統(tǒng)、程序、多媒體文件等。
干涉寫列表30包括每個從應(yīng)用14接收的對作為由遷移管理器12發(fā)起的數(shù)據(jù)遷移操作的一部分正在遷移到目標(biāo)數(shù)據(jù)20的源數(shù)據(jù)16單元的寫請求的條目。圖2說明了干涉寫列表30中的條目50中為來自應(yīng)用14的寫請求維護(hù)的信息。條目50包括指示要對其進(jìn)行寫的源數(shù)據(jù)16的開始的源起始地址52和寫的字節(jié)長度54,其中開始52和長度54指示在將更新的源數(shù)據(jù)16中請求的數(shù)據(jù)或單元。狀態(tài)域56指示寫請求未完成還是已經(jīng)完成。
圖3說明由文件系統(tǒng)管理器10完成的處理對會從一個應(yīng)用14遷移的源數(shù)據(jù)16的寫請求的操作。圖3中的操作可以通過文件系統(tǒng)管理器10執(zhí)行遷移功能24來實(shí)現(xiàn),其中遷移功能24在執(zhí)行源數(shù)據(jù)經(jīng)受遷移模式的操作時由文件系統(tǒng)管理器10調(diào)用。當(dāng)從應(yīng)用14接收到(在塊100)的對源數(shù)據(jù)16的寫請求時,如果(在塊102)寫數(shù)據(jù)不與任何在遷移圖28中指示為沒有遷移的源數(shù)據(jù)重疊,那么文件系統(tǒng)管理器10寫(在塊104)接收到的數(shù)據(jù)到源數(shù)據(jù)16和相應(yīng)的目標(biāo)數(shù)據(jù)20。否則如果來自應(yīng)用14的寫數(shù)據(jù)與遷移圖28中指示為還沒有遷移的源數(shù)據(jù)16重疊,那么文件系統(tǒng)管理器10為接收到的寫請求增加(在塊106)條目50(圖2)到干涉寫列表30,指示要寫的請求的源數(shù)據(jù),即,要寫入的數(shù)據(jù)的源開始52和字節(jié)長度54的數(shù)據(jù),還有初始為未完成的狀態(tài)56。接收到的數(shù)據(jù)被寫(在塊108)到源數(shù)據(jù)16并且響應(yīng)對源數(shù)據(jù)16的寫數(shù)據(jù)的完成,干涉寫列表30中的條目50的狀態(tài)56,即干涉應(yīng)用寫請求的信息,被設(shè)置為(在塊110)完成。
圖4說明了由遷移管理器12執(zhí)行的實(shí)現(xiàn)遷移操作的操作。當(dāng)發(fā)起(在塊150)將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的操作時,遷移管理器12處理(在塊152)遷移圖28來確定源數(shù)據(jù)16的遷移到相應(yīng)的目標(biāo)數(shù)據(jù)20的一個或多個單元。遷移管理器12發(fā)出(在塊154)使文件系統(tǒng)管理器10從源數(shù)據(jù)16遷移確定的單元到相應(yīng)的目標(biāo)數(shù)據(jù)20的遷移請求。當(dāng)接收到對遷移請求(在塊156)的響應(yīng)時,如果(在塊158)遷移成功,那么遷移管理器12更新(在塊160)遷移圖28來指示源數(shù)據(jù)單元已被寫并且成功地遷移到相應(yīng)的目標(biāo)數(shù)據(jù)20。當(dāng)遷移(在塊158)不成功,那么確定(在塊162)是否應(yīng)該重試遷移。如果是,控制返回到塊154來重新為沒有成功遷移的源數(shù)據(jù)16發(fā)出遷移請求。否則,如果遷移沒有重試,那么執(zhí)行(在塊164)任何其它的錯誤處理。
在某些實(shí)施方式中,遷移管理器12可以通過提交讀命令和例如圖5中讀緩沖區(qū)170的讀緩沖區(qū)到文件系統(tǒng)管理器10發(fā)起遷移操作。在提交讀緩沖區(qū)時,遷移管理器12會提交指針到讀緩沖區(qū)170。文件系統(tǒng)管理器10執(zhí)行管理器功能24來處理來自遷移管理器12的讀作為用于讀取請求的源數(shù)據(jù)16和將讀取的源數(shù)據(jù)寫到相應(yīng)的目標(biāo)存儲22中的目標(biāo)數(shù)據(jù)20中的特定遷移命令。遷移管理器12開始可以通過例如IOCTL的帶外機(jī)制警告文件系統(tǒng)管理器10某個數(shù)據(jù)或存儲處于遷移狀態(tài)。IOCTL可以指定表示要遷移的設(shè)備或數(shù)據(jù)的打開文件描述符和由文件系統(tǒng)管理器10在當(dāng)I/O命令中聲明有源存儲18或源數(shù)據(jù)16時執(zhí)行以遷移數(shù)據(jù)的遷移功能24。
管理器功能24可以通過返回指示遷移管理器12提供的讀緩沖區(qū)170(圖5)沒有包括所有請求的數(shù)據(jù)的對來自遷移管理器12的讀的響應(yīng),指示遷移操作沒有完成。為了使遷移管理器12重試遷移操作,遷移功能24可以放置指示遷移管理器12重試遷移操作的遷移重試代碼172到遷移管理器12提供的讀緩沖區(qū)170中。這樣,遷移功能24通過提供指示不是所有請求的數(shù)據(jù)都包括在讀緩沖區(qū)170中和在讀緩沖區(qū)170中包含遷移重試代碼172的信息的組合,向遷移管理器12指示重試遷移操作。遷移功能24可以通過重寫遷移重試代碼172所在的位置和在讀緩沖區(qū)170中寫入任何其它識別的錯誤代碼,在讀緩沖區(qū)170中提供不同的錯誤代碼。這樣,遷移管理器12當(dāng)?shù)玫阶x取沒有完成的通知時,可以尋找遷移重試代碼172或其它錯誤代碼來處理。
圖6說明了在文件系統(tǒng)管理器10調(diào)用以處理可以由來自遷移管理器12的讀請求發(fā)起的遷移請求的遷移功能24中編碼的操作。這個讀請求可以指示要遷移的源數(shù)據(jù)16,也可以指示在遷移圖28中指示的在哪里寫入源數(shù)據(jù)16的相應(yīng)的目標(biāo)數(shù)據(jù)20??蛇x地,遷移功能24可以處理遷移圖28來確定指示的源數(shù)據(jù)16要遷移到的相應(yīng)的目標(biāo)數(shù)據(jù)20。遷移功能24處理(在塊200)來自遷移管理器12到要遷移的源數(shù)據(jù)16的遷移請求。在某些實(shí)施方式中,這個請求可以包括帶有讀緩沖區(qū)170的到要遷移的源數(shù)據(jù)16的讀請求。如果(在塊202)被請求的要遷移的源數(shù)據(jù)16與具有未完成狀態(tài)56的干涉寫列表30中的任何條目50(圖2)重疊,那么遷移功能24返回(在塊204)指示重試讀操作的響應(yīng)。在某些實(shí)施方式中,重試請求可以通過把遷移重試代碼172編碼到讀緩沖區(qū)170并返回指示少于所有請求的數(shù)據(jù)寫入到讀緩沖區(qū)170的消息來實(shí)現(xiàn)。這將保證遷移的源數(shù)據(jù)16是該數(shù)據(jù)最當(dāng)前的版本并且源數(shù)據(jù)是在任何較新的應(yīng)用數(shù)據(jù)應(yīng)用后遷移的。
如果(在塊202)源數(shù)據(jù)16沒有與任何從應(yīng)用14寫入到源數(shù)據(jù)16的數(shù)據(jù)重疊,如干涉寫列表30中的條目50所指示的,那么源數(shù)據(jù)16寫(在塊206)到遷移圖28指示的相應(yīng)的目標(biāo)數(shù)據(jù)20位置。如果(在塊208)要遷移的源數(shù)據(jù)16與干涉寫列表30中的任何條目重疊,不管狀態(tài)56(圖2)如何,即是未完成或完成,那么重試遷移,因?yàn)橛锌赡墚?dāng)遷移發(fā)生時,從應(yīng)用14到遷移的源數(shù)據(jù)16的未完成寫請求未完成或已完成。遷移功能24或一些其它處理然后通過在具有完成狀態(tài)56的干涉寫列表30上去除(在塊210)所有的條目對干涉寫列表30執(zhí)行清除操作。遷移功能24進(jìn)行到塊204來重試讀操作(如,通過把遷移重 試代碼編碼到讀緩沖區(qū)并且返回指示少于所有的數(shù)據(jù)寫入到了讀緩沖區(qū)的消息。)響應(yīng)重試讀取操作去除(在塊210)完成的條目,因?yàn)檩^早完成的干涉寫請求不會引起沖突或者寫入與重試的遷移操作不一致的數(shù)據(jù)。
如果(在塊208)寫入的源數(shù)據(jù)16沒有與來自干涉寫列表30中指示的應(yīng)用14的任何寫請求重疊,那么遷移成功并且遷移功能24(或者一些其它進(jìn)程)去除(在塊212)干涉寫列表30中具有完成狀態(tài)56(圖2)的所有條目50并且也去除在遷移圖28中在寫入的源數(shù)據(jù)之前寫入數(shù)據(jù)的那些條目50。遷移功能24然后給遷移請求返回(在塊214)完成。在以讀請求發(fā)起遷移請求的實(shí)施方式中,遷移功能24會給遷移管理器12返回指示讀緩沖區(qū)170包括所有請求的數(shù)據(jù)的響應(yīng)。
按照所述的實(shí)施方式,當(dāng)遷移數(shù)據(jù)時不需要鎖,以至于從應(yīng)用14的寫或從遷移管理器12到有遷移關(guān)系的源數(shù)據(jù)16的遷移操作被允許不使用鎖或串行化來完成。這樣避免了對應(yīng)用寫請求和遷移操作的延遲,這種延遲在使用鎖和串行化時會發(fā)生。代替使用鎖和串行化,使用某些所述的操作,如果有可能來自應(yīng)用14的干涉寫請求會導(dǎo)致沖突或不一致數(shù)據(jù)的遷移,那么重試遷移操作。
其它實(shí)施方式細(xì)節(jié)所述的操作可以作為方法、裝置或使用標(biāo)準(zhǔn)的編程和/或工程技術(shù)產(chǎn)生軟件、固件、硬件或其任何組合的制品來實(shí)現(xiàn)。在這里使用的術(shù)語“制品”指在硬件邏輯(例如集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)或例如磁存儲介質(zhì)(例如硬盤驅(qū)動器、軟盤、帶等)、光存儲(CD-ROM、光盤等)、易失性和非易失性存貯器設(shè)備(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件和可編程邏輯等)的計(jì)算機(jī)可讀介質(zhì)中實(shí)現(xiàn)的代碼或邏輯。在計(jì)算機(jī)可讀介質(zhì)中的代碼是通過處理器訪問和執(zhí)行的。優(yōu)選實(shí)施方式以其實(shí)現(xiàn)的代碼可以進(jìn)一步通過傳輸介質(zhì)或通過網(wǎng)絡(luò)從文件服務(wù)器訪問。在這種情況下,實(shí)現(xiàn)代碼的制品可以包括傳輸介質(zhì),例如網(wǎng)絡(luò)傳輸線、無線傳輸介質(zhì)、通過空間傳播的信號、無線電波和紅外線信號等。這樣,“制品”可以包括代碼所嵌入的介質(zhì)。另外,“制品”可以包括硬件和包含、處理和執(zhí)行代碼的軟件組件的組合。當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識到在不背離本發(fā)明范圍的情況下可以對這種配置進(jìn)行許多修改,并且制品可以包括本領(lǐng)域已知的任何信息承載介質(zhì)。
所述的操作可以通過電路完成,其中“電路”指硬件或者軟件或者它們的組合。用于執(zhí)行所述實(shí)施方式的操作的電路可以包括硬件設(shè)備,比如集成電路芯片、可編程門陣列(PGA)和專用集成電路(ASIC)等。電路也可以包括例如集成電路的處理器組件和在例如存貯器的計(jì)算機(jī)可讀介質(zhì)中的代碼,其中代碼由處理器執(zhí)行,以執(zhí)行所述實(shí)施方式的操作。
在某些實(shí)施方式中,操作描述為由組件完成,組件例如文件系統(tǒng)管理器10、遷移功能24和遷移管理器12。在可選的實(shí)施方式中,所述操作可以由與所述的或附加的組件不同的組件完成。而且,描述為由在內(nèi)核空間10或用戶空間8中的組件執(zhí)行的操作可以在具有與所述不同的優(yōu)先級的不同的地址空間中執(zhí)行。
圖3、4和6說明的操作顯示了特定的事件以特定的順序發(fā)生。在可選的實(shí)施方式中,某些操作可以以不同的順序執(zhí)行、修改或去除。而且,可以在上述邏輯中加入步驟并且仍然符合所述的實(shí)施方式。而且,這里所述的操作可以順序地發(fā)生或某些操作可以并行地處理。更進(jìn)一步,操作可以由單一的處理單元或分布的處理單元執(zhí)行。
上述本發(fā)明的各種實(shí)施方式的說明的提出是為了說明和描述。它不打算是窮盡的或者要將本發(fā)明限制所公開的精確形式。根據(jù)上述教義,可能有許多修改和變化。本發(fā)明的范圍不打算是由該具體描述而是由其所附權(quán)利要求限定的。上述說明、例子和數(shù)據(jù)提供了制造和使用本發(fā)明的構(gòu)成的完全描述。由于在不背離本發(fā)明的主旨和范圍的情況下可以作出本發(fā)明的許多實(shí)施方式,因此本發(fā)明在于下文所附的權(quán)利要求。
為避免疑問,在此貫穿說明書和權(quán)利要求書使用的術(shù)語“包括”不是要解釋成意思“只包括”。
權(quán)利要求
1.一種將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的方法,包括接收用于將應(yīng)用數(shù)據(jù)寫到還沒有遷移成目標(biāo)數(shù)據(jù)的源數(shù)據(jù)中的寫請求;產(chǎn)生指示應(yīng)用數(shù)據(jù)要寫入的源數(shù)據(jù)的用于該寫請求的信息;將應(yīng)用數(shù)據(jù)寫到源數(shù)據(jù)中;接收用于將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的請求;并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫請求的信息中指示的源數(shù)據(jù)重疊,返回重試遷移請求的指示。
2.如權(quán)利要求1所述的方法,其中用于寫應(yīng)用數(shù)據(jù)的寫請求來自應(yīng)用并且遷移請求來自遷移程序。
3.如權(quán)利要求2所述的方法,其中應(yīng)用和遷移程序在用戶地址空間執(zhí)行,并且其中所述接收寫請求、產(chǎn)生信息、寫所請求的數(shù)據(jù)、確定重疊和返回重試指示的步驟是由內(nèi)核地址空間中執(zhí)行的至少一個進(jìn)程執(zhí)行的。
4.如權(quán)利要求1、2或3所述的方法,其中所產(chǎn)生的用于一個寫請求的信息將應(yīng)用數(shù)據(jù)的寫狀態(tài)指示為未完成或者完成,其中重試指示在將要遷移的源數(shù)據(jù)被轉(zhuǎn)移為目標(biāo)數(shù)據(jù)之前并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個具有未完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
5.如前面任何一項(xiàng)權(quán)利要求所述的方法,其中所產(chǎn)生的用于一個寫請求的信息將寫狀態(tài)指示為未完成或者完成,其中重試指示在要遷移的源數(shù)據(jù)被轉(zhuǎn)移為目標(biāo)數(shù)據(jù)之后并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個具有未完成或完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
6.如權(quán)利要求5所述的方法,進(jìn)一步包括響應(yīng)將應(yīng)用數(shù)據(jù)寫到所產(chǎn)生的用于寫請求的信息中指示的源數(shù)據(jù)中,將所產(chǎn)生的用于一個寫請求的信息中的狀態(tài)設(shè)置為完成;其中為該寫請求將應(yīng)用數(shù)據(jù)寫到源數(shù)據(jù)中和響應(yīng)遷移請求將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的操作是相互獨(dú)立發(fā)生的。
7.如前面任何一項(xiàng)權(quán)利要求所述的方法,其中重試指示在將要遷移的源數(shù)據(jù)轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之前和將要遷移的源數(shù)據(jù)轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之后響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫的信息中指示的源數(shù)據(jù)重疊而返回。
8.如前面任何一項(xiàng)權(quán)利要求所述的方法,其中所產(chǎn)生的信息將寫狀態(tài)指示為未完成或者完成,所述方法進(jìn)一步包括在將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)之后,去除所產(chǎn)生的用于具有完成狀態(tài)的寫請求的信息。
9.如權(quán)利要求8所述的方法,進(jìn)一步包括響應(yīng)將要遷移的源數(shù)據(jù)寫到目標(biāo)數(shù)據(jù)中,去除所產(chǎn)生的用于對所述要遷移的源數(shù)據(jù)之前的源數(shù)據(jù)的寫請求的信息。
10.如前面任何一項(xiàng)權(quán)利要求所述的方法,其中返回重試遷移請求的指示包括在對遷移請求的響應(yīng)中指示請求沒有完成;并且在響應(yīng)中包括指示重試遷移請求的重試代碼。
11.如權(quán)利要求10所述的方法,其中遷移請求包括來自提供讀緩沖區(qū)的遷移進(jìn)程的讀請求,并且其中在響應(yīng)中指示遷移請求沒有完成包括指示不是所有請求的數(shù)據(jù)都包括在讀緩沖區(qū)中,并且其中重試代碼包含在響應(yīng)讀請求而返回的讀緩沖區(qū)中的預(yù)定位置。
12.一種將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的系統(tǒng),包括源存儲位置;目標(biāo)存儲位置;存貯器;能夠與源和目標(biāo)存儲位置和存貯器通信的電路,其中電路能夠執(zhí)行(i)接收用于將應(yīng)用數(shù)據(jù)寫到還沒有遷移成目標(biāo)數(shù)據(jù)的源數(shù)據(jù)中的寫請求;(ii)在存貯器中產(chǎn)生指示應(yīng)用數(shù)據(jù)要寫入的源數(shù)據(jù)的用于寫請求的信息;(iii)將應(yīng)用數(shù)據(jù)寫到源存儲位置處的源數(shù)據(jù)中;(iv)接收將源數(shù)據(jù)遷移成目標(biāo)存儲位置處的目標(biāo)數(shù)據(jù)的請求;以及(v)響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫請求的信息中指示的源數(shù)據(jù)重疊,返回重試遷移請求的指示。
13.如權(quán)利要求12所述的系統(tǒng),其中用于寫應(yīng)用數(shù)據(jù)的寫請求來自應(yīng)用并且遷移請求來自遷移程序。
14.如權(quán)利要求13所述的系統(tǒng),其中電路進(jìn)一步能夠執(zhí)行產(chǎn)生用戶地址空間和內(nèi)核地址空間,其中應(yīng)用和遷移程序在用戶地址空間執(zhí)行,并且其中所述接收寫請求、產(chǎn)生信息、寫所請求的數(shù)據(jù)、確定重疊和返回重試指示的步驟是由內(nèi)核地址空間中執(zhí)行的至少一個進(jìn)程執(zhí)行的。
15.如權(quán)利要求12、13或14所述的系統(tǒng),其中所產(chǎn)生的用于一個寫請求的信息將應(yīng)用數(shù)據(jù)的寫狀態(tài)指示為未完成或者完成,其中重試指示在要遷移的源數(shù)據(jù)被轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之前并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個具有未完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
16.如權(quán)利要求12、13、14或15所述的系統(tǒng),其中所產(chǎn)生的用于一個寫請求的信息將寫狀態(tài)指示為未完成或者完成,其中重試指示在要遷移的源數(shù)據(jù)被轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之后并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個具有未完成或完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
17.如權(quán)利要求16所述的系統(tǒng),其中電路進(jìn)一步能夠執(zhí)行響應(yīng)將應(yīng)用數(shù)據(jù)寫到所產(chǎn)生的用于寫請求的信息中指示的源數(shù)據(jù)中,設(shè)置所產(chǎn)生的用于一個寫請求的信息中的狀態(tài)為完成,其中為寫請求將應(yīng)用數(shù)據(jù)寫到源數(shù)據(jù)中和響應(yīng)遷移請求將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的操作是相互獨(dú)立地發(fā)生的。
18.如權(quán)利要求12至17任何一項(xiàng)所述的系統(tǒng),其中重試指示在將要遷移的源數(shù)據(jù)轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之前和將要遷移的源數(shù)據(jù)轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之后響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與在所產(chǎn)生的用于一個寫的信息中指示的源數(shù)據(jù)重疊而返回。
19.如權(quán)利要求12至18任何一項(xiàng)所述的系統(tǒng),其中產(chǎn)生的信息將寫狀態(tài)指示為未完成或者完成,其中電路進(jìn)一步能夠完成在將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)之后,去除所產(chǎn)生的用于具有完成狀態(tài)的寫請求的信息。
20.如權(quán)利要求19所述的系統(tǒng),其中電路進(jìn)一步能夠執(zhí)行響應(yīng)將要遷移的源數(shù)據(jù)寫到目標(biāo)數(shù)據(jù)中,去除所產(chǎn)生的用于對所述要遷移的源數(shù)據(jù)之前的源數(shù)據(jù)的寫請求的信息。
21.如權(quán)利要求12至20任何一項(xiàng)所述的系統(tǒng),其中返回重試遷移請求的指示包括在對遷移請求的響應(yīng)中指示請求沒有完成;并且在響應(yīng)中包括指示重試遷移請求的重試代碼。
22.如權(quán)利要求21所述的系統(tǒng),其中遷移請求包括來自提供讀緩沖區(qū)的遷移進(jìn)程的讀請求,并且其中在響應(yīng)中指示遷移請求沒有完成包括指示不是所有請求的數(shù)據(jù)被包括在讀緩沖區(qū)中,并且其中重試代碼包含在響應(yīng)讀請求而返回的讀緩沖區(qū)中的預(yù)定位置。
23.一種用于將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的制品,其中該制品使得執(zhí)行操作,所述操作包括接收將應(yīng)用數(shù)據(jù)寫到還沒有遷移成目標(biāo)數(shù)據(jù)的源數(shù)據(jù)中的寫請求;產(chǎn)生指示應(yīng)用數(shù)據(jù)要寫入的源數(shù)據(jù)的用于寫請求的信息;將應(yīng)用數(shù)據(jù)寫到源數(shù)據(jù)中;接收將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的請求;并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫請求的信息中指示的源數(shù)據(jù)重疊,返回重試遷移請求的指示。
24.如權(quán)利要求23所述的制品,其中用于寫應(yīng)用數(shù)據(jù)的寫請求來自應(yīng)用并且遷移請求來自遷移程序。
25.如權(quán)利要求24所述的制品,其中應(yīng)用和遷移程序在用戶地址空間執(zhí)行并且其中所述接收寫請求、產(chǎn)生信息、寫所請求的數(shù)據(jù)、確定重疊和返回重試指示的步驟是由內(nèi)核地址空間中執(zhí)行的至少一個進(jìn)程執(zhí)行的。
26.如權(quán)利要求23、24或25所述的制品,其中所產(chǎn)生的用于一個寫請求的信息將應(yīng)用數(shù)據(jù)的寫狀態(tài)指示為未完成或者完成,其中重試指示在要遷移的源數(shù)據(jù)被轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之前并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與產(chǎn)生的用于一個具有未完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
27.如權(quán)利要求23至26任何一項(xiàng)所述的制品,其中所產(chǎn)生的用于一個寫請求的信息將寫狀態(tài)指示為未完成或者完成,其中重試指示在要遷移的源數(shù)據(jù)被轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之后并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個具有未完成或完成狀態(tài)的寫請求的信息中指示的源數(shù)據(jù)重疊而返回。
28.如權(quán)利要求27所述的制品,其中操作進(jìn)一步包括響應(yīng)將應(yīng)用數(shù)據(jù)寫到產(chǎn)生的用于寫請求的信息中指示的源數(shù)據(jù),設(shè)置所產(chǎn)生的用于一個寫請求的信息中的狀態(tài)為完成;其中為寫請求將應(yīng)用數(shù)據(jù)寫到源數(shù)據(jù)中和響應(yīng)遷移請求將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的操作是相互獨(dú)立發(fā)生的。
29.如權(quán)利要求23至28任何一項(xiàng)所述的制品,其中重試指示在所請求的要遷移的源數(shù)據(jù)被轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之前和將要遷移的源數(shù)據(jù)轉(zhuǎn)移成目標(biāo)數(shù)據(jù)之后響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫的信息中指示的源數(shù)據(jù)重疊而返回。
30.如權(quán)利要求23至29任何一項(xiàng)所述的制品,其中產(chǎn)生的信息將寫狀態(tài)指示為未完成或者完成,其中操作進(jìn)一步包括在將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)之后,去除所產(chǎn)生的用于具有完成狀態(tài)的寫請求的信息。
31.如權(quán)利要求30所述的制品,其中操作進(jìn)一步包括響應(yīng)將要遷移的源數(shù)據(jù)寫到目標(biāo)數(shù)據(jù)中,去除所產(chǎn)生的用于對所述要遷移的源數(shù)據(jù)之前的源數(shù)據(jù)的寫請求的信息。
32.如權(quán)利要求23至31任何一項(xiàng)所述的制品,其中返回重試遷移請求的指示包括在對遷移請求的響應(yīng)中指示請求沒有完成;并且在響應(yīng)中包括指示重試遷移請求的重試代碼。
33.如權(quán)利要求32所述的制品,其中遷移請求包括來自提供讀緩沖區(qū)的遷移進(jìn)程的讀請求,并且其中在響應(yīng)中指示遷移請求沒有完成包括指示不是所有請求的數(shù)據(jù)都被包括在讀緩沖區(qū)中,并且其中重試代碼包含在響應(yīng)讀請求而返回的讀緩沖區(qū)中的預(yù)定位置。
全文摘要
提供了將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的方法、系統(tǒng)和程序。接收將應(yīng)用數(shù)據(jù)寫到還沒有遷移成目標(biāo)數(shù)據(jù)的源數(shù)據(jù)的寫請求。產(chǎn)生指示應(yīng)用數(shù)據(jù)要寫入的源數(shù)據(jù)的用于寫請求的信息。應(yīng)用數(shù)據(jù)寫入到源數(shù)據(jù)中。接收將源數(shù)據(jù)遷移成目標(biāo)數(shù)據(jù)的請求并且響應(yīng)確定出所請求的要遷移的源數(shù)據(jù)與所產(chǎn)生的用于一個寫請求的信息中指示的源數(shù)據(jù)重疊,返回重試遷移請求的指示。
文檔編號G06F11/20GK1934568SQ200580008004
公開日2007年3月21日 申請日期2005年5月10日 優(yōu)先權(quán)日2004年6月10日
發(fā)明者克里斯多弗·約漢·斯塔庫蒂斯, 威廉·羅伯特·哈塞爾頓 申請人:國際商業(yè)機(jī)器公司