專利名稱:用于傳輸數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及同時(shí)下載到多個(gè)目標(biāo)。
技術(shù)背景任何數(shù)據(jù)保護(hù)或復(fù)制解決方案中的一個(gè)挑戰(zhàn)是網(wǎng)絡(luò)帶寬使用率,特別是對(duì)于非常大的文件和特別是當(dāng)發(fā)往廣域網(wǎng)(WAN)速度目標(biāo) 位置時(shí)。當(dāng)自從前一次傳輸以來只有文件的某些部分更改時(shí),傳輸有 好幾個(gè)GB文件的全部是不切實(shí)際的。有各種技術(shù)用于優(yōu)化在復(fù)制解決方案中傳輸?shù)臄?shù)據(jù)量。復(fù)制解決 方案可以描述為提供數(shù)據(jù)的備份和保護(hù)。已知的技術(shù)具有各種缺點(diǎn)或 復(fù)雜性。當(dāng)今,對(duì)于公司的信息技術(shù)(IT)管理員來說特別相關(guān)的是 最終用戶電子郵件數(shù)據(jù)庫文件(例如,具有".pst,,擴(kuò)展名的 Microsoft Outlook 個(gè)人文件夾文件)的復(fù)制。近年來,這些最終 用戶電子郵件數(shù)據(jù)庫文件的大小顯著地?cái)U(kuò)大,每一個(gè)文件常常會(huì)超過 2GB那么大。此外,公司還大大地削減服務(wù)器端的電子郵件存儲(chǔ)量。 由于公司方面太小,難以將最終用戶電子郵件數(shù)據(jù)庫文件包括在服務(wù) 器端(例如,Microsoft Exchange服務(wù)器)備份中,因此,最終用 戶電子郵件數(shù)據(jù)庫文件(例如,.pst文件)通常是電子郵件消息的唯 一副本。這會(huì)給公司帶來巨大的風(fēng)險(xiǎn)和暴露,因?yàn)橹匾碾娮余]件消 息可能會(huì)丟失。所需要的是有效地備份最終用戶電子郵件數(shù)據(jù)庫文件 (如Microsoft Outlook pst文件或Lotus Notes."nsf"擴(kuò)展名文 件)的方法。如此,需要用于改善最終用戶電子郵件數(shù)據(jù)庫文件的存儲(chǔ)的方法。 發(fā)明內(nèi)容提供了用于傳輸數(shù)據(jù)的方法、計(jì)算機(jī)程序產(chǎn)品,以及系統(tǒng)。確定 指示器圖是否將與正在打開的源文件關(guān)聯(lián),其中,指示器圖指示自從 上一次傳輸?shù)侥繕?biāo)文件以來源文件的哪些源塊已經(jīng)更新。響應(yīng)于確定 指示器圖將與源文件關(guān)聯(lián),確定是否存在指示器圖。響應(yīng)于確定存在 指示器圖,基于上一次修改的時(shí)間和存儲(chǔ)在指示器圖和源文件中的最 后一個(gè)源文件大小,確定指示器圖是否值得信任。響應(yīng)于確定指示器 圖值得信任,初始化指示器圖。然后,響應(yīng)于接收源文件的寫入,更 新指示器圖以指示源文件的哪個(gè)部分已經(jīng)被修改。
現(xiàn)在請(qǐng)參看附圖,其中,類似的附圖標(biāo)記代表對(duì)應(yīng)的部分 圖1顯示了根據(jù)某些實(shí)施例的計(jì)算設(shè)備的細(xì)節(jié)。 圖2A、 2B和2C顯示了由根據(jù)某些實(shí)施例的內(nèi)核組件執(zhí)行的 邏輯。圖3顯示了由根據(jù)某些實(shí)施例的導(dǎo)流代理執(zhí)行的邏輯。 圖4顯示了可以根據(jù)某些實(shí)施例使用的系統(tǒng)體系結(jié)構(gòu)。
具體實(shí)施方式
在下面的描述中,將參考附圖,附圖構(gòu)成了本發(fā)明的一部分,并 顯示了本發(fā)明的多個(gè)實(shí)施例。應(yīng)該理解,在不偏離本發(fā)明的范圍的情 況下,可以利用其他實(shí)施例,也可以進(jìn)行結(jié)構(gòu)性的和操作更改。圖1顯示了根據(jù)某些實(shí)施例的計(jì)算設(shè)備100的細(xì)節(jié)。計(jì)算設(shè)備 100包括內(nèi)核110、導(dǎo)流代理(draining agent) 130、每一個(gè)文件的 指示器圖140,并可以包括其他組件150。指示器圖140包括文件 的每一個(gè)部分(例如,塊)的指示器(例如,比特),當(dāng)文件的該部 分改變時(shí),就會(huì)設(shè)置指示器,以指示這樣的改變。內(nèi)核110包括文件系統(tǒng)120,該文件系統(tǒng)包括內(nèi)核組件122, 該內(nèi)核組件截取文件系統(tǒng)通信并維護(hù)指示器圖140。內(nèi)核組件122
可以被描述為文件系統(tǒng)120的可移植性層,該層普遍地截取任何文 件系統(tǒng)或平臺(tái)上的文件系統(tǒng)I/O操作,以便每個(gè)文件地提供指示器 圖服務(wù)。計(jì)算設(shè)備100連接到數(shù)據(jù)存儲(chǔ)器170,該數(shù)據(jù)存儲(chǔ)器包括源文 件172。計(jì)算設(shè)備還連接到包括目標(biāo)文件182的另一個(gè)數(shù)據(jù)存儲(chǔ)器 180。目標(biāo)文件是源文件172的副本.指示器圖140包括指示器指 示自從源塊被上一次復(fù)制到目標(biāo)文件182以來源文件的哪些塊已經(jīng) #^修改。文件系統(tǒng)120管理對(duì)源文件172和目標(biāo)文件182的訪問 (即,讀取和寫入)。導(dǎo)流代理130負(fù)責(zé)處理指示器圖140并將實(shí) 際更改的源數(shù)據(jù)從源文件172分發(fā)到目標(biāo)文件182。計(jì)算設(shè)備100可以包括當(dāng)前已知的任何計(jì)算設(shè)備,如服務(wù)器、 大型機(jī)、工作站、個(gè)人計(jì)算機(jī)、手持式計(jì)算機(jī)、膝上型電腦、電話設(shè) 備、網(wǎng)絡(luò)設(shè)備等等。計(jì)算設(shè)備100可以通過任何通信路徑類型(例如,對(duì)等網(wǎng)絡(luò)、 輻射狀網(wǎng)絡(luò)、存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、 因特網(wǎng)、內(nèi)部網(wǎng)等等)連接到數(shù)據(jù)存儲(chǔ)器170、 180。每一個(gè)數(shù)據(jù)存儲(chǔ)器170、 180都可以包括,例如,存儲(chǔ)設(shè)備陣列, 如直接訪問存儲(chǔ)設(shè)備(DASD)、 Just a Bunch of Disks (JBOD)、獨(dú)立 磁盤冗余陣列(RAID)、虛擬化設(shè)備等等。在某些實(shí)施例中,內(nèi)核組件122截取所有文件系統(tǒng)通信(例如, 文件打開、對(duì)文件的寫入等等)。內(nèi)核組件122通過使用代表整個(gè) 文件的指示器圖140來跟蹤已經(jīng)更改的文件塊。文件輸入/輸出(I/O) 可以以各種復(fù)雜機(jī)制進(jìn)行,包括常規(guī)用戶啟動(dòng)的I/O、內(nèi)核分頁I/O、 用戶啟動(dòng)的分頁I/O,以及其他僅限內(nèi)核的操作的副產(chǎn)品。在其中進(jìn) 行I/O的上下文可能是非常有限的,并且不允許任何類型的大量的 處理(例如,在中斷的或提升的中斷處理器級(jí)別(IPL))。如此,在 其中指示器圖140是位圖的實(shí)施例中,內(nèi)核組件122執(zhí)行位型操 作,來自操作系統(tǒng)(未顯示)的對(duì)于鎖定或同步的支持最少。在進(jìn)行 I/O時(shí),甚至將指示器圖140映射到永久存儲(chǔ)器(如文件)也不能 由內(nèi)核組件122輕松地完成。最終,無論什么源塊被更改,都需要移動(dòng)到目標(biāo)位置。導(dǎo)流代理 130負(fù)責(zé)處理文件的指示器圖140,以便將源文件172的已更改的 源塊移動(dòng)到目標(biāo)文件182。在某些實(shí)施例中,導(dǎo)流代理130對(duì)指示 器圖140進(jìn)行處理,因?yàn)檫M(jìn)行源文件更改(即,寫入)的當(dāng)前應(yīng)用 程序可能不確信具有足夠的安全性、帶寬,或適合于執(zhí)行另外的I/O 操作(例如,數(shù)據(jù)的傳輸/復(fù)制)的操作系統(tǒng)環(huán)境。此外,進(jìn)行更改的 當(dāng)前應(yīng)用程序在稍后的進(jìn)行復(fù)制/備份的時(shí)間也可能不在運(yùn)行。 實(shí)施例在內(nèi)核組件122和導(dǎo)流代理130之間提供了同步。 圖2A、 2B和2C顯示了由根據(jù)某些實(shí)施例的內(nèi)核110執(zhí)行的 邏輯。邏輯從方框200開始,內(nèi)核組件220確定是否正在打開文件。 即,內(nèi)核組件220截取文件系統(tǒng)通信,并確定該文件系統(tǒng)通信是否 將打開文件。如果是,則繼續(xù)執(zhí)行方框202 (圖2B),否則,繼續(xù) 執(zhí)行方框220。在方框220中,內(nèi)核組件122確定是否有寫入。即,內(nèi)核組件 220截取文件系統(tǒng)通信,并確定該文件系統(tǒng)通信是否將把數(shù)據(jù)寫入到 源文件172中。如果是,則繼續(xù)執(zhí)行方框222,否則,繼續(xù)執(zhí)行方 框230。在方框230中,內(nèi)核組件122確定是否從導(dǎo)流代理130接 收到對(duì)指示器圖的請(qǐng)求。如果是,則繼續(xù)執(zhí)行方框232 (圖2C), 否則,繼續(xù)執(zhí)行方框240。在方框240中,內(nèi)核組件執(zhí)行其他處理。 處理從方框240返回到方框200。在圖2B中,在方框202中,內(nèi)核組件122確定正在被打開的 文件是否應(yīng)該具有指示器圖。如果是,則繼續(xù)執(zhí)行方框206,否則, 繼續(xù)執(zhí)行方框204。在方框204中,內(nèi)核組件122執(zhí)行其他處理。 處理從方框204返回到方框200 (圖2A)。即,實(shí)施例自動(dòng)地檢測(cè)使用語義在文件打開時(shí)創(chuàng)建文件的指示器 圖140的適用性。適用性取決于一個(gè)或多個(gè)因素,如,正在被打開 的文件是否滿足可配置的最小大小閾值、正在被打開的文件是否是現(xiàn) 有的文件(即,正在為"現(xiàn)有的和內(nèi)部寫入,,打開,可以描述為文件的 邊界內(nèi)的寫入,而不是對(duì)文件進(jìn)行擴(kuò)展的寫入),而不是打開新文件,正在被打開的文件是否遇到了內(nèi)部寫入,而不是沒有遇到I/O,僅僅作為多個(gè)應(yīng)用程序打開同 一個(gè)文件的同步技術(shù)而保持打開/鎖定。在方框206中,內(nèi)核組件122確定對(duì)于此文件是否存在指示器 圖。如果是,則繼續(xù)執(zhí)行方框210,否則,繼續(xù)執(zhí)行方框208。在方 框208中,內(nèi)核組件122為正在被打開的文件創(chuàng)建并初始化指示器 圖140。處理從方框208返回到方框200 (圖2A)。在方框210中,內(nèi)核組件122確定是否可以信任指示器圖。在 某些實(shí)施例中,每當(dāng)在指示器圖140的標(biāo)頭發(fā)生寫入時(shí),內(nèi)核組件 122都存儲(chǔ)了源文件172的上一次修改的時(shí)間(即,進(jìn)行寫入的最 后的時(shí)間)和上一次文件大小的值。在這樣的實(shí)施例中,內(nèi)核組件122 通過檢查存儲(chǔ)在指示器圖140的標(biāo)頭中記錄的上一次修改的時(shí)間和 上一次文件大小的值(對(duì)照源文件的相同值),確定指示器圖140的 可信賴性。如果值匹配,則內(nèi)核組件122確定是否可以信任和使用 指示器圖140。如果可以信任指示器圖,則繼續(xù)執(zhí)行方框212,否則, 繼續(xù)執(zhí)行方框214。在方框212中,內(nèi)核組件122初始化現(xiàn)有的可 以信任的指示器圖。處理從方框212返回到方框200 (圖2A)。為正確地處理重新啟動(dòng)條件(例如,機(jī)器故障、重新啟動(dòng)、功率 損耗等等),內(nèi)核組件122可以使用在重新啟動(dòng)條件之前存在的指 示器圖140,此指示器圖140稍后可以供導(dǎo)流代理130用來在只有 部分被更改的情況下避免傳輸全部源副本。在方框214中,內(nèi)核組件122將指示器圖140標(biāo)記為"不可信 任"。在某些實(shí)施例中,如果指示器圖140被標(biāo)記為"不可信任",導(dǎo) 流代理130制作源文件的完整的副本,丟棄指示器圖140 (在制作 副本之前或之后)。處理從方框214返回到方框200 (圖2A)。在某些實(shí)施例中,如果不能信任指示器圖140,則不丟棄指示器 圖140,因?yàn)檫@將"忘記"已經(jīng)記錄的任何已改變的塊。在圖2C中,在方框232中,內(nèi)核組件122確定它是否對(duì)指示 器圖140進(jìn)行處理(即,指示器圖140正在使用中)。如果是,則
繼續(xù)執(zhí)行方框234,否則,繼續(xù)執(zhí)行方框236。在方框234中,內(nèi) 核組件122將活動(dòng)指示器圖復(fù)制到重命名的指示器圖,同時(shí)以原子 方式重置當(dāng)前正在累積的變化的活動(dòng)指示器圖。在某些實(shí)施例中,此 處理是使用要求多個(gè)獨(dú)立的線程來使操作同步的信號(hào)來進(jìn)行的。處理 從方框234返回到方框200 (圖2A)。在方框236中,內(nèi)核組件236忽視請(qǐng)求。處理從方框236返 回到方框200 (圖2A)。圖3顯示了由根據(jù)某些實(shí)施例的導(dǎo)流代理130執(zhí)行的邏輯???制從方框300開始,導(dǎo)流代理130確定正是將源文件172備份到 目標(biāo)文件182的時(shí)間。例如,可以基于時(shí)間段進(jìn)行確定(例如,每 隔24小時(shí)進(jìn)行備份)或事件(例如,正在關(guān)閉某一個(gè)文件)。在方框302中,導(dǎo)流代理130確定對(duì)于源文件172,是否存在 重命名的指示器圖。即,如果這是一個(gè)重啟動(dòng)條件(如,由于機(jī)器故 障、重新啟動(dòng)、功率損耗等),則導(dǎo)流代理130查找重命名的指示器 圖,以避免再次傳輸完整的基本源副本。如果是,則繼續(xù)執(zhí)行方框304,否則,繼續(xù)執(zhí)行方框306。在方 框304中,導(dǎo)流代理130對(duì)重命名的指示器圖進(jìn)行處理,以將已更 改的源塊復(fù)制到目標(biāo)塊中。在某些實(shí)施例中,導(dǎo)流代理不確定現(xiàn)有的 重命名的指示器圖的可信賴性,因?yàn)榧俣ㄔ谥甘酒鲌D變成活動(dòng)副本之 前已經(jīng)進(jìn)行。在某些實(shí)施例中,在將已更改的源塊復(fù)制到目標(biāo)塊中的 過程完成時(shí),導(dǎo)流代理130在目標(biāo)文件中設(shè)置上一次修改的時(shí)間和 上一次文件大小,然后,可以對(duì)照可以在后面處理的任何新累積的指 示器圖140驗(yàn)證此信息。在某些實(shí)施例中,不直接由導(dǎo)流代理130 處理當(dāng)前正在累積更改的活動(dòng)指示器圖,而是,以原子方式將活動(dòng)指 示器圖重命名為處理中的名稱。從方框304繼續(xù)執(zhí)行方框306,因 為新的指示器圖可能已經(jīng)創(chuàng)建,而導(dǎo)流代理140將源塊復(fù)制到目標(biāo) 塊中。在方框306中,導(dǎo)流代理130請(qǐng)求內(nèi)核組件122以將活動(dòng)指 示器圖復(fù)制到重命名的指示器圖,同時(shí)以原子方式重置當(dāng)前正在累積
的變化的活動(dòng)指示器圖。在某些實(shí)施例中,導(dǎo)流代理130請(qǐng)求內(nèi)核 將累積的指示器圖140寫出到新文件中,同時(shí)以原子方式重置當(dāng)前 正在累積的指示器圖140。然后,導(dǎo)流代理130在某個(gè)時(shí)間(即, 立即或在稍后的時(shí)間)針對(duì)源文件的快照視圖對(duì)重命名的指示器圖 140進(jìn)行處理??煺找晥D可以被描述為某一個(gè)時(shí)間點(diǎn)的數(shù)據(jù)的副本。在方框308中,導(dǎo)流代理130確定請(qǐng)求是否成功(即,內(nèi)核組 件122是否響應(yīng)請(qǐng)求,以指示請(qǐng)求成功(即,創(chuàng)建了重命名的指示 器圖)或失敗)。如果請(qǐng)求成功,則繼續(xù)執(zhí)行方框310,否則,繼續(xù) 執(zhí)行方框316。在方框310中,導(dǎo)流代理130確定是否可以信任指示器圖。如 果是,則繼續(xù)執(zhí)行方框312,否則,繼續(xù)執(zhí)行方框314。導(dǎo)流代理130確定是否可以信任給定指示器圖140,并可以轉(zhuǎn) 換成目標(biāo)文件的以前的副本。實(shí)施例提供了知道指示器圖140的可 信賴性的技術(shù)。在某些實(shí)施例中,指示器圖的標(biāo)頭中存在特殊的屬性 組,它們可使導(dǎo)流代理130知道對(duì)于將要接收數(shù)據(jù)的目標(biāo)文件,是 否可以信任特定的指示器圖。在某些實(shí)施例中,在由內(nèi)核組件122創(chuàng) 建指示器圖140時(shí),在指示器圖中記錄了上一次修改的時(shí)間和上一 次文件大小。然后,導(dǎo)流代理可以針對(duì)存儲(chǔ)在目標(biāo)文件中的上一次修 改的時(shí)間和上一次文件大小,確保它們是相同的基本遺產(chǎn)。此外,最 近的和最后的對(duì)源文件的寫入操作的上一次修改的時(shí)間和上一次文 件大小的值被記錄到指示器圖中,以便導(dǎo)流代理130可以向目標(biāo)文 件應(yīng)用這些屬性(即,將這些屬性存儲(chǔ)在目標(biāo)文件中)(然后,確保 對(duì)于隨后的序列,檢查指示器圖的可信賴性的循環(huán)都可以持續(xù))。如此,實(shí)施例提供了描述指示器圖130和輔助信息的可移植性 技術(shù)。在某些實(shí)施例中,指示器圖140可以是使用可擴(kuò)展標(biāo)記語言 (XML)標(biāo)頭(其大小是自我說明的)與可編制索引的二進(jìn)制位圖數(shù) 據(jù)的獨(dú)特的組合來進(jìn)行自我描述的文件。標(biāo)頭對(duì)信息進(jìn)行編碼,該信 息可使導(dǎo)流代理130正確地對(duì)照目標(biāo)文件匹配指示器圖140,并描 述了指示器圖140文件的屬性(如其塊因子(即,塊的大小))。
為節(jié)省寫入操作稀少的文件上的空間,XML標(biāo)頭可以明確表達(dá)可以 分別地編制索引的已更改的文件區(qū)域的獨(dú)立的區(qū)域。即,可以4吏用索 引來識(shí)別指示器圖的已經(jīng)修改的那些部分。在方框312中,導(dǎo)流代理130對(duì)重命名的指示器圖進(jìn)行處理, 以將已更改的源塊復(fù)制到目標(biāo)塊中。處理從方框312返回到方框 306,以獲取有效指示器圖140的當(dāng)前副本,因?yàn)榇嘶顒?dòng)指示器圖 140可能具有當(dāng)導(dǎo)流代理130對(duì)前一活動(dòng)指示器圖的副本進(jìn)行處理 時(shí)設(shè)置的新的指示器。在方框314中,導(dǎo)流代理將所有源塊都傳輸 到目標(biāo)塊中。在方框316中,導(dǎo)流代理130已經(jīng)從內(nèi)核組件122接收到了 請(qǐng)求失敗的指示,導(dǎo)流代理130對(duì)指示器圖進(jìn)行重命名。然后,如 果內(nèi)核組件122查找此指示器圖,則內(nèi)核組件122將不會(huì)找到它, 并將創(chuàng)建新的指示器圖。從方框310繼續(xù)執(zhí)行方框304。實(shí)施例提供了每文件的粒度,而不是巻級(jí)別的解決方案。如此, 實(shí)施例可以適用于相關(guān)的文件,而不是整個(gè)文件系統(tǒng)或巻。例如,可 以對(duì)相關(guān)的文件,而不是對(duì)文件系統(tǒng)或巻中的所有文件來維護(hù)指示器 圖。實(shí)施例提供了與導(dǎo)流代理130取得一致性的技術(shù)。導(dǎo)流代理 130具有指示器圖140的一致的視圖,并能夠同時(shí)讓內(nèi)核組件122 "重新啟動(dòng)"。這是這樣執(zhí)行的導(dǎo)流代理130調(diào)用內(nèi)核組件122, 如果內(nèi)核組件122當(dāng)前具有處理中的源文件和/或打開了源文件,則 讓內(nèi)核組件122創(chuàng)建重命名的指示器圖,或如果內(nèi)核組件122沒有 處理中的和/或打開的源文件,則讓導(dǎo)流代理130以原子方式重命名 指示器圖140。導(dǎo)流代理130請(qǐng)求內(nèi)核將累積的指示器圖140寫到 特定文件中,并啟動(dòng)全新的指示器圖,否則,如果指示器圖不在進(jìn)程 中(即,沒有被內(nèi)核組件122使用),則返回錯(cuò)誤。實(shí)施例提供了可重新啟動(dòng)的技術(shù)。計(jì)算機(jī)意外地重新啟動(dòng)和/或應(yīng) 用程序有時(shí)異常地關(guān)閉。此外,當(dāng)由于某種原因復(fù)制被停止時(shí)(例如, 由于網(wǎng)絡(luò)條件、重新啟動(dòng)、注銷、系統(tǒng)崩潰等等),文件可能正在復(fù) 制過程中。實(shí)施例允許重新啟動(dòng)內(nèi)核組件122累積任何指示器圖 140的過程,以及導(dǎo)流代理130傳輸源塊的過程,沒有任何數(shù)據(jù)丟 失的風(fēng)險(xiǎn),也不必完全將源文件172移動(dòng)到目標(biāo)文件182中。為實(shí) 現(xiàn)這一點(diǎn),可以進(jìn)行各種檢查。首先,當(dāng)內(nèi)核組件122打開源文件 時(shí),內(nèi)核組件首先進(jìn)行檢查以查看是否存在指示器圖140文件。如 果是,則內(nèi)核組件122確定指示器圖140的可信賴性。如果可以信 任指示器圖,則使用此指示器圖。類似地,周期地啟動(dòng)導(dǎo)流代理130。 導(dǎo)流代理130對(duì)以前累積的指示器圖140的副本進(jìn)行處理。當(dāng)導(dǎo)流 代理130啟動(dòng)新的復(fù)制操作時(shí),導(dǎo)流代理130檢查是否已經(jīng)存在指 示器圖140的副本(即,從硬停創(chuàng)建的副本,不允許指示器圖的適 當(dāng)?shù)耐瓿珊蛣h除)。如果存在指示器圖140,則導(dǎo)流代理130首先 對(duì)指示器圖140進(jìn)行處理。如此,實(shí)施例允許創(chuàng)建每個(gè)文件的指示器圖140,該圖在某些 實(shí)施例中可以是文件,描述了源文件的已更改的區(qū)域。實(shí)施例獨(dú)立于 平臺(tái)和文件系統(tǒng)的。實(shí)施例還支持快照技術(shù),以在進(jìn)行復(fù)制時(shí)提供相 關(guān)性。實(shí)施例提供了知道指示器圖140的可信賴性的技術(shù)。實(shí)施例與 導(dǎo)流代理130取得了一致性。實(shí)施例解決了系統(tǒng)的重新啟動(dòng)問題。 實(shí)施例基于文件操作,確定使用指示器圖140是否適合于特定文件。Lotus是IBM公司在美國(guó)和/或其他國(guó)家的注冊(cè)商標(biāo)或通用法 律標(biāo)記。Microsoft和Outlook是微軟公司在美國(guó)和/或其他國(guó)家的 注冊(cè)商標(biāo)或通用法律標(biāo)記。另外的實(shí)施例細(xì)節(jié)所描述的操作可以作為方法、計(jì)算機(jī)程序產(chǎn)品或設(shè)備來實(shí)現(xiàn),使 用標(biāo)準(zhǔn)的編程和/或工程技術(shù),以產(chǎn)生軟件、固件、硬件或其任何組合。每一個(gè)實(shí)施例都可以呈現(xiàn)完全是硬件、完全是軟件或包含硬件和 軟件元件兩者的實(shí)施方式的形式。實(shí)施例可以以軟件實(shí)現(xiàn),包括但不 僅限于固件、常駐軟件、微代碼等等。此外,實(shí)施例可以呈現(xiàn)計(jì)算機(jī)程序產(chǎn)品的形式,該產(chǎn)品可以從計(jì)
算機(jī)可使用的或計(jì)算機(jī)可讀取的介質(zhì)進(jìn)行訪問,介質(zhì)提供了程序代 碼,供計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或與它們一起使用.對(duì)于此說 明書,計(jì)算機(jī)可使用的或計(jì)算機(jī)可讀取的介質(zhì)可以是可以包含、存儲(chǔ)、 傳遞、傳播或傳輸供指令執(zhí)行系統(tǒng)、設(shè)備一起使用或與它們一起使用 的程序的程序的任何設(shè)備。所描述的操作可以作為在計(jì)算機(jī)可使用的或計(jì)算機(jī)可讀取的介 質(zhì)中維護(hù)的代碼來實(shí)現(xiàn),其中,處理器可以從計(jì)算機(jī)可讀取的介質(zhì)中 讀取和執(zhí)行代碼。介質(zhì)可以是電子的、磁性的、光學(xué)的、電磁的、紅 外線的或半導(dǎo)體系統(tǒng)(或設(shè)備)或傳播介質(zhì)。計(jì)算機(jī)可讀取的介質(zhì)的 示例包括半導(dǎo)體或固態(tài)存儲(chǔ)器,磁帶,可移動(dòng)計(jì)算機(jī)磁盤,硬磁盤、 光盤、磁存儲(chǔ)介質(zhì)(例如,硬盤驅(qū)動(dòng)器、軟盤、磁帶等等)、易失性和非易失性存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器(RAM)、 DRAM、 SRAM、只讀存儲(chǔ)器(ROM)、 PROM、 EEPROM、快閃存儲(chǔ)器、固 件、可編程邏輯等等)。光盤的當(dāng)前示例包括光盤-只讀存儲(chǔ)器 (CD-ROM),光盤讀取/寫入(CD-R/W)和DVD。實(shí)現(xiàn)所描述的操作的代碼可以進(jìn)一步以硬件邏輯(例如,集成電 路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等等)來實(shí)現(xiàn)。 更進(jìn)一步,實(shí)現(xiàn)所描述的操作的代碼可以以"傳輸信號(hào)"來實(shí)現(xiàn),其中, 傳輸信號(hào)可以通過空中或通過諸如光導(dǎo)纖維、銅線等等之類的傳輸介 質(zhì)進(jìn)行傳播。其中編碼了代碼或邏輯的傳輸信號(hào)可以進(jìn)一步包括無線 電信號(hào)、衛(wèi)星傳輸、無線電波、紅外信號(hào),藍(lán)牙等等。其中編碼了代 碼或邏輯的傳輸信號(hào)能夠通過發(fā)射臺(tái)發(fā)射,并由接收臺(tái)接收,其中, 可以對(duì)傳輸信號(hào)中編碼的代碼或邏輯進(jìn)行解碼,并存儲(chǔ)在接收和發(fā)射 臺(tái)或設(shè)備中的硬件或計(jì)算機(jī)可讀取的介質(zhì)中。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可使用的或計(jì)算機(jī)可讀取的介質(zhì)、硬件邏輯,和/或其中可以實(shí)現(xiàn)代碼的傳輸信號(hào).當(dāng)然,那些精通 相關(guān)技術(shù)的人將認(rèn)識(shí)到,在不偏離實(shí)施例的范圍的情況下,可以對(duì)此 配置作出許多修改方案,計(jì)算機(jī)程序產(chǎn)品可以包括已知的任何合適的 信息攜帶介質(zhì)。 術(shù)語"邏輯,,可以包括,例如,軟件、硬件、固件,和/或軟件和硬 件的組合,某些實(shí)施方式可以是提供通過人或自動(dòng)處理來部署計(jì)算基礎(chǔ)架構(gòu)(將計(jì)算機(jī)可讀取的代碼集成到了計(jì)算系統(tǒng)中)的方法,其中,代 碼和計(jì)算系統(tǒng)組合起來,以便能夠執(zhí)行所描述的實(shí)施方式的操作。圖2A、2B、2C和3的邏輯描述了按特定順序進(jìn)行的特定操作。 在備選實(shí)施例中,某些邏輯操作可以按不同的順序執(zhí)行,也可以加以 修改或刪除。此外,還可以向上文所描述的邏輯中添加操作,仍符合 所描述的實(shí)施例。此外,這里所描述的操作可以連續(xù)地進(jìn)行,或者, 某些操作可以并行地處理,被描述為由單個(gè)進(jìn)程執(zhí)行的操作也可以由 分布式進(jìn)程執(zhí)行。圖2A、 2B、 2C和3所顯示的邏輯可以以軟件、硬件、可編程 和非可編程門陣列邏輯或以硬件、軟件或門陣列邏輯的某種組合來實(shí) 現(xiàn)。圖4顯示了可以根據(jù)某些實(shí)施例使用的系統(tǒng)體系結(jié)構(gòu)400???戶端計(jì)算機(jī)100可以實(shí)現(xiàn)系統(tǒng)體系結(jié)構(gòu)400。系統(tǒng)體系結(jié)構(gòu)400適 用于存儲(chǔ)和/或執(zhí)行程序代碼,并且包括至少一個(gè)通過系統(tǒng)總線420 直接或間接地連接到存儲(chǔ)器元件404的處理器402。存儲(chǔ)器元件 404可以包括在程序代碼的實(shí)際執(zhí)行過程中使用的本地存儲(chǔ)器,大容 量存儲(chǔ)器,以及高速緩沖存儲(chǔ)器,該高速緩沖存儲(chǔ)器提供了至少某些 程序代碼的臨時(shí)存儲(chǔ)器,以便減少在執(zhí)行過程中必須從大容量存儲(chǔ)器 檢索代碼的次數(shù)。存儲(chǔ)器元件404包括操作系統(tǒng)405和一個(gè)或多個(gè) 計(jì)算機(jī)程序406。輸入/輸出(I/O)設(shè)備412、 414 (包括但不僅限于,鍵盤、顯 示器、指示設(shè)備,等等)可以直接或者通過I/O控制器410連接到 系統(tǒng)。網(wǎng)絡(luò)適配器408也可以連接到系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)通過 私有的或公共網(wǎng)絡(luò)連接到其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè) 備。調(diào)制解調(diào)器,電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是幾個(gè)當(dāng)前可用的的 網(wǎng)絡(luò)適配器408的類型。系統(tǒng)體系結(jié)構(gòu)400可以連接到存儲(chǔ)器416 (例如,非易失性存 儲(chǔ)區(qū)域、如磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器等等)。存儲(chǔ)器416 可以包括內(nèi)部存儲(chǔ)設(shè)備或外接的或網(wǎng)絡(luò)可訪問的存儲(chǔ)器。存儲(chǔ)器416 中的計(jì)算機(jī)程序406可以加栽到存儲(chǔ)器元件404中,并由處理器 402以已知的方式執(zhí)行。系統(tǒng)體系結(jié)構(gòu)400可以包括比所顯示的更少的組件,這里所沒 有顯示的另外的組件,或所顯示的組件和另外的組件的某種組合。系 統(tǒng)體系結(jié)構(gòu)400可以包括當(dāng)前已知的任何計(jì)算設(shè)備,如大型機(jī)、服 務(wù)器、個(gè)人計(jì)算機(jī)、工作站、膝上型電腦、手持式計(jì)算機(jī)、電話設(shè)備、 網(wǎng)絡(luò)設(shè)備、虛擬化設(shè)備、存儲(chǔ)控制器等等。前面的對(duì)本發(fā)明的實(shí)施例的描述只是為了說明和描述。它不是詳 盡的說明或?qū)?shí)施例限于所說明的準(zhǔn)確的形式。根據(jù)上述原理,許多 修改方案和變化也是可以的。實(shí)施例的范圍不被此詳細(xì)描述的限制, 而是由所附的權(quán)利要求進(jìn)行限制。上面的說明、示例和數(shù)據(jù)提供了產(chǎn) 品的完整的描述,以及實(shí)施例的構(gòu)成的用法。由于在不偏離實(shí)施例的 精神和范圍的情況下,可以作出許多實(shí)施例,實(shí)施例都在下面所附的 權(quán)利要求或任何隨后提出的權(quán)利要求,以及它們的等效內(nèi)容的范圍 內(nèi)。
權(quán)利要求
1. 一種計(jì)算機(jī)實(shí)現(xiàn)的用于傳輸數(shù)據(jù)的方法,包括 確定指示器圖是否將與正在打開的源文件關(guān)聯(lián),其中,指示器圖指示自從上一次傳輸?shù)侥繕?biāo)文件以來源文件的哪些源塊已經(jīng)更新; 響應(yīng)于確定指示器圖將與源文件關(guān)聯(lián),確定是否存在指示器圖; 響應(yīng)于確定存在指示器圖,基于上一次修改的時(shí)間和存儲(chǔ)在指示器圖和源文件中的最 后一個(gè)源文件大小,確定指示器圖是否值得信任;響應(yīng)于確定指示器圖值得信任,初始化指示器圖;以及 響應(yīng)于接收源文件的寫入,更新指示器圖以指示源文件的哪 個(gè)部分已經(jīng)被修改。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 確定源文件正在通過截取文件系統(tǒng)輸入/輸出(I/O)操作而被打開。
3. 根據(jù)權(quán)利要求1所述的方法,其中,確定指示器圖是否將與 正在打開的源文件關(guān)聯(lián)至少取決于下列各項(xiàng)其中之一可配置的最小 大小閾值、正在被打開的源文件是否是現(xiàn)有的源文件,以及正在被打 開的源文件是否遇到內(nèi)部寫入。
4. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 響應(yīng)于確定指示器圖不值得信任,創(chuàng)建新的指示器圖。
5. 根據(jù)權(quán)利要求1所述的方法,其中,指示器圖包括可擴(kuò)展標(biāo) 記語言(XML)標(biāo)頭。
6. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 接收對(duì)源文件的指示器圖的請(qǐng)求;以及響應(yīng)于確定指示器圖正在使用中,將指示器圖復(fù)制到重命名的指 示器圖,同時(shí)以原子方式重置指示器圖。
7. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 確定正是將源文件備份到目標(biāo)文件的時(shí)間; 確定存在重命名的指示器圖;以及使用重命名的指示器圖,將源塊從源文件復(fù)制到使用重命名的指 示器圖的目標(biāo)文件的目標(biāo)塊。
8. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括 響應(yīng)于確定指示器圖未在使用,重命名指示器圖;以及使用重命名的指示器圖,將源塊從源文件復(fù)制到使用重命名的指 示器圖的目標(biāo)文件的目標(biāo)塊。
9. 一種用于傳輸數(shù)據(jù)的系統(tǒng),包括 能夠執(zhí)行操作的邏輯,操作包括確定指示器圖是否將與正在打開的源文件關(guān)聯(lián),其中,指示器圖 指示自從上一次傳輸?shù)侥繕?biāo)文件以來源文件的哪些源塊已經(jīng)更新; 響應(yīng)于確定指示器圖將與源文件關(guān)聯(lián),確定是否存在指示器圖; 響應(yīng)于確定存在指示器圖,基于上一次修改的時(shí)間和存儲(chǔ)在指示器圖和源文件中的最 后一個(gè)源文件大小,確定指示器圖是否值得信任;響應(yīng)于確定指示器圖值得信任,初始化指示器圖;以及 響應(yīng)于接收源文件的寫入,更新指示器圖以指示源文件的哪 個(gè)部分已經(jīng)被修改。
10. 根據(jù)權(quán)利要求9所述的系統(tǒng),所述操作進(jìn)一步包括 確定源文件正在通過截取文件系統(tǒng)輸入/輸出(I/O)操作而被打開。
11. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,確定指示器圖是否將與 正在打開的源文件關(guān)聯(lián)至少取決于下列各項(xiàng)其中之一可配置的最小 大小閾值、正在被打開的源文件是否是現(xiàn)有的源文件,以及正在被打 開的源文件是否遇到內(nèi)部寫入。
12. 根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括 響應(yīng)于確定指示器圖不值得信任,創(chuàng)建新的指示器圖。
13. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中,指示器圖包括可擴(kuò)展標(biāo) 記語言(XML)標(biāo)頭。
14. 根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括 接收對(duì)源文件的指示器圖的請(qǐng)求;以及響應(yīng)于確定指示器圖正在使用中,將指示器圖復(fù)制到重命名的指 示器圖,同時(shí)以原子方式重置指示器圖。
15. 根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括 確定正是將源文件備份到目標(biāo)文件的時(shí)間; 確定存在重命名的指示器圖;以及使用重命名的指示器圖,將源塊從源文件復(fù)制到使用重命名的指 示器圖的目標(biāo)文件的目標(biāo)塊。
16. 根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括 響應(yīng)于確定指示器圖未在使用,重命名指示器圖;以及使用重命名的指示器圖,將源塊從源文件復(fù)制到使用重命名的指 示器圖的目標(biāo)文件的目標(biāo)塊。
全文摘要
提供了用于傳輸數(shù)據(jù)的技術(shù)。確定指示器圖是否將與正在打開的源文件關(guān)聯(lián),其中,指示器圖指示自從上一次傳輸?shù)侥繕?biāo)文件以來源文件的哪些源塊已經(jīng)更新。響應(yīng)于確定指示器圖將與源文件關(guān)聯(lián),確定是否存在指示器圖。響應(yīng)于確定存在指示器圖,基于上一次修改的時(shí)間和存儲(chǔ)在指示器圖和源文件中的最后一個(gè)源文件大小,確定指示器圖是否值得信任。響應(yīng)于確定指示器圖值得信任,初始化指示器圖。然后,響應(yīng)于接收源文件的寫入,更新指示器圖以指示源文件的哪個(gè)部分已經(jīng)被修改。
文檔編號(hào)H04L12/58GK101122918SQ20071010962
公開日2008年2月13日 申請(qǐng)日期2007年6月7日 優(yōu)先權(quán)日2006年8月10日
發(fā)明者克里斯托弗·J.·斯塔庫蒂斯, 紅 李 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司