在存儲云中使用去重復來管理不可變?nèi)哂辔募闹谱鞣椒?br>
【專利摘要】一種方法包括接收對于將第一文件保存為不可變的請求。該方法也包括搜索所保存的并且對于第一文件冗余的第二文件。該方法還包括確定第二文件是可變的或者是不可變的。在第二文件可變時,該方法包括將第一文件保存作為主副本并且用指向主副本的軟鏈接替換第二文件。在第二文件不可變時,該方法包括確定第一文件和第二文件中的哪一個文件具有更晚到期日期和更早到期日期、保存第一文件和第二文件中的具有更晚到期日期的那個文件作為主副本并且用指向主副本的軟鏈接替換第一文件和第二文件中的具有更早到期日期的那個文件。
【專利說明】在存儲云中使用去重復來管理不可變?nèi)哂辔募?br>
【技術領域】
[0001]本發(fā)明總體上涉及云計算,并且更具體地涉及用于在存儲云中使用去重復技術來管理冗余不可變文件的方法和系統(tǒng)。
【背景技術】
[0002]信息技術正在迅速改變并且現(xiàn)在形成日益觸及業(yè)務和社交生活的每個方面的不可見層。稱為云計算的新興計算機模型解決互聯(lián)網(wǎng)連接的設備的爆炸增長并且與在當今的世界中的日益增長的技術存在互補。云計算是用于實現(xiàn)對可以用最少的管理工作或者與服務的提供者的交互來迅速調(diào)配和釋放的可配置計算資源(例如網(wǎng)絡、網(wǎng)絡帶寬、服務器、處理、存儲器、存儲、應用、虛擬機和服務)共享池的便捷的、按需網(wǎng)絡接入的服務遞送模型。
[0003]云計算廣泛地可伸縮、提供優(yōu)異的用戶體驗并且以新的由因特網(wǎng)驅(qū)動的經(jīng)濟為特征。在一個方面中,云計算涉及到在云以內(nèi)存儲和執(zhí)行業(yè)務數(shù)據(jù),該云是跨越地理展開的互連的數(shù)據(jù)中心、計算單元和存儲系統(tǒng)的網(wǎng)狀物。
[0004]隨著云計算的問世,概念、比如存儲云已經(jīng)出現(xiàn)。存儲云是可以由客戶共享的巨大存儲網(wǎng)絡而無需客戶管理存儲基礎設施。存儲云提供者通常具有單個大型存儲空間,并且提供者在相同地點保持來自所有它的客戶的數(shù)據(jù),這產(chǎn)生多租賃和多租戶環(huán)境的概念。這一存儲空間通常由基于該云的全部客戶共享。
[0005]數(shù)據(jù)去重復包括消除冗余數(shù)據(jù)的過程。在去重復過程中,刪除重復數(shù)據(jù)從而僅留下待存儲的數(shù)據(jù)的一個副本。在某些情形中,如果不斷需要所有數(shù)據(jù)則仍然保持所有數(shù)據(jù)的索引編制。去重復能夠減少有效存儲容量,因為僅存儲唯一數(shù)據(jù)。數(shù)據(jù)去重復一般可以在文件或者數(shù)據(jù)塊級操作。文件級去重復消除重復文件,但是這不是很高效的去重復手段。塊去重復關注文件內(nèi)并且保存每個塊或者位的唯一反復。使用哈希算法、比如MD5 (消息摘要算法)或者SHA-1 (安全哈希算法)來處理每個數(shù)據(jù)組塊(chunk)。這一過程生成然后在索引中存儲的用于每條數(shù)據(jù)的唯一編號。在更新文件時,僅保存改變的數(shù)據(jù)。也就是說,在僅改變文檔或者演示的少數(shù)字節(jié)時,僅保存改變的塊或者字節(jié),并且改變不會構成全新文件。因此,塊去重復比文件去重復節(jié)省更多存儲空間。
[0006]許多文件系統(tǒng)和存儲解決方案提供用于將文檔和文件標記為不可變的設施,即意味著對于給定的時間量不能夠刪除或者修改文件的內(nèi)容和/或文件本身或者直至滿足某個其它標準才能夠刪除或者修改文件的內(nèi)容和/或文件本身。通常,這樣的要求來自合規(guī)管理的機構和行業(yè),比如政府機構和保健部門。這樣的機構和行業(yè)普遍依賴于電信行業(yè)以幫助保證符合規(guī)章,比如薩班斯法案(S0X)、健康保險流通與責任法案(HIPAA)、聯(lián)邦金融機構檢查委員會(FFIEC)等,這些規(guī)章規(guī)定了給定的文件集的不可變持續(xù)性。
[0007]例如在HIPAA的安全規(guī)則(例如技術防護章節(jié))中,設定由發(fā)生事件構成的安全日志以不可變方式保藏六年。這指示被標記不可變的任何文件有高重要性或者關鍵價值(至少對于給定的時間段),因此保藏它的可靠性至關重要。電信行業(yè)必須通過遵循規(guī)則以維護通信記錄、比如產(chǎn)生的語音呼叫和發(fā)送的文字消息來保證符合這些規(guī)則。電信行業(yè)又利用來自它們的基礎設施的不可變文件特征,以應對對于這些規(guī)則的記錄不可變性的要求。在IBM General Parallel File System?(GPFS?)中也支持這一特征,該系統(tǒng)是在許多存儲賦予和解決方案中使用的策略聚類式文件系統(tǒng)。(IBM、General Parallel File System和 GPFS 是 International Business Machines Corporation 在全世界許多管轄地注冊的商標)。
[0008]當在文件級完成數(shù)據(jù)去重復時,刪除文件的重復副本而僅維持單個副本,并且所有其它引用指向這一單個副本。然而這與不能編輯或者刪除文件的基本不可變性前提沖突。因此,去重復過程不能刪除不可變文件的冗余副本。例如在需要維持通常涉及到多于一方的呼叫和文本消息的不可變記錄時,電信行業(yè)通常維持相同文件的多個副本以便與不可變性的要求相符,即使這消耗額外數(shù)據(jù)存儲空間并且增加管理和數(shù)據(jù)保護開銷。在十個參與者之中的會議呼叫的具體示例——其中呼叫記錄具有IGB的存儲大小——中,電信提供者存儲用于每個參與者的相同記錄,并且在所有記錄內(nèi)維持不可變、由此消耗共計IOGB空間。如果文件不是不可變的,則去重復過程可能刪除文件的九個副本并且維持單個副本從而僅占用IGB空間、將有效使用存儲空間減少9GB。然而在一些情形中,文件的不可變性質(zhì)妨礙這樣的去重復。
【發(fā)明內(nèi)容】
[0009]在本發(fā)明的第一方面中,一種在包括硬件和軟件的組合的計算機基礎設施中實施的文件去重復方法包括接收對于將第一文件保存為不可變的請求。該方法也包括搜索所保存的并且對于第一文件冗余的第二文件。該方法還包括確定第二文件是可變的或者是不可變。在第二文件可變時,該方法包括保存第一文件作為主副本并且用指向主副本的軟鏈接替換第二文件。在第二文件不可變時,該方法包括確定第一文件和第二文件中的哪一個文件具有更晚到期日期和更早到期日期、保存第一文件和第二文件中的具有更晚到期日期的那個文件作為主副本并且用指向主副本的軟鏈接替換第一文件和第二文件中的具有更早到期日期的那個文件。
[0010]在本發(fā)明的另一方面中,在硬件中實施一種用于文件去重復的系統(tǒng),并且該系統(tǒng)包括計算機基礎設施,計算機基礎設施可操作用于:接收對于將第一文件保存為不可變的請求;確定對于第一文件冗余的多個第二文件;確定多個第二文件中的每個第二文件是不可變的;從包括第一文件和多個第二文件的組中標識具有最晚到期日期的文件;將具有最晚到期日期的文件保存作為主副本;并且用指向主副本的相應數(shù)據(jù)結構替換組中的除了具有最晚到期日期的文件之外的每個文件。
[0011]在本發(fā)明的附加方面中,一種計算機程序產(chǎn)品包括計算機可用有形存儲介質(zhì),計算機可用有形存儲介質(zhì)具有在有形存儲介質(zhì)中體現(xiàn)的可讀程序代碼,該計算機程序產(chǎn)品包括至少一個部件,至少一個部件可操作用于接收對于在共享存儲裝置中將第一文件保存為不可變的請求,其中從與共享存儲裝置遠離的本地計算設備接收請求。至少一個部件還可操作用于標識在共享存儲裝置中保存的并且對于第一文件冗余的至少一個第二文件。至少一個部件還可操作用于確定至少一個第二文件為可變的或者為不可變的。至少一個部件還可操作用于在至少一個第二文件可變時保存第一文件為主副本并且用指向主副本的相應軟鏈接替換至少一個第二文件中的每個第二文件。至少一個部件還可操作用于在至少一個第二文件不可變時:從包括第一文件和至少一個第二文件的組中標識具有最晚到期日期的文件;保存具有最晚到期日期的文件作為主副本;并且用指向主副本的相應數(shù)據(jù)結構替換組中的除了具有最晚到期日期的文件之外的每個文件。
[0012]在本發(fā)明的又一方面中,一種對文件去重復的方法包括提供計算機基礎設施,計算機基礎設施可操作用于:接收對于在共享存儲裝置中將第一文件保存為不可變的請求,其中從與共享存儲裝置遠離的本地計算設備接收請求;確定對于第一文件冗余的多個第二文件;確定多個第二文件的第一子集是可變的;確定多個第二文件的第二子集的不可變的;從包括第一文件和第二子集的組中標識具有最晚到期日期的文件;保存具有最晚到期日期的文件作為主副本;并且用指向主副本的相應軟鏈接替換組中的除了具有最晚到期日期的文件之外的每個文件。
[0013]在本發(fā)明的另一方面中,一種用于對文件去重復的計算機系統(tǒng)包括CPU、計算機可讀存儲器和計算機可讀存儲介質(zhì)。該系統(tǒng)包括用于接收對于在共享存儲裝置中將第一文件保存為不可變的請求的第一程序指令,其中從與共享存儲裝置遠離的本地計算設備接收請求。該系統(tǒng)包括用于確定不可變并且對于第一文件冗余的多個第二文件的第二程序指令。該系統(tǒng)包括用于從包括第一文件和多個第二文件的組中標識具有最晚到期日期的文件的第三程序指令。該系統(tǒng)包括用于保存具有最晚到期日期的文件作為主副本的第四程序指令。該系統(tǒng)包括用于用指向主副本的相應數(shù)據(jù)結構替換組中的除了具有最晚到期日期的文件之外的每個文件的第五程序指令。第一、第二、第三、第四和第五程序指令存儲于計算機可讀存儲介質(zhì)上以用于經(jīng)由計算機可讀存儲器由CPU執(zhí)行。確定不可變并且對于第一文件冗余的多個第二文件包括:通過比較第一文件的哈希值與在共享存儲裝置中保存的其它文件的哈希值來確定至少一個候選冗余文件;并且使用文件差異過程來比較第一文件與至少一個候選冗余文件。
【專利附圖】
【附圖說明】
[0014]通過本發(fā)明的示例實施例的非限制示例參照指出的多個附圖在以下具體描述中描述本發(fā)明。
[0015]圖1描繪根據(jù)本發(fā)明的方面的云計算節(jié)點;
[0016]圖2描繪根據(jù)本發(fā)明的方面的云計算環(huán)境;
[0017]圖3描繪根據(jù)本發(fā)明的方面的抽象化模型層;
[0018]圖4描繪數(shù)據(jù)去重復框圖;
[0019]圖5A和圖5B描繪根據(jù)本發(fā)明的方面的示例去重復過程;以及
[0020]圖6描繪根據(jù)本發(fā)明的方面的示例流程圖。
【具體實施方式】
[0021]本發(fā)明主要地涉及云計算并且更具體地涉及用于在存儲云中使用去重復技術來管理冗余不可變文件的方法和系統(tǒng)。根據(jù)本發(fā)明的方面,去重復技術應用于不可變文件以在維持不可變性前提之時實現(xiàn)數(shù)據(jù)存儲保存。在實施例中,在其中有多個冗余不可變文件的情形中,設置具有在將來最遠的到期日期的文件作為主副本,并且所有其它冗余副本被設置為指向主副本并且將其刪除。以這一方式,本發(fā)明的實現(xiàn)方式通過刪除文件的冗余副本來實現(xiàn)去重復的數(shù)據(jù)存儲保存,并且也為具有不可變性的要求的用戶實現(xiàn)對不可變文件的副本的訪問。
[0022]根據(jù)本發(fā)明的方面,在標記特定文件為不可變時,去重復代理前攝地搜索對于不可變文件冗余的其它文件。在發(fā)現(xiàn)可變(例如非不可變)冗余文件時,去重復代理刪除可變文件并且將它指向被保存為主副本的不可變文件。在發(fā)現(xiàn)不可變?nèi)哂辔募r,去重復代理比較多個不可變文件(例如原有不可變文件和去重復代理發(fā)現(xiàn)的一個或者多個不可變文件)的不可變性到期日期,并且保存具有最晚到期日期的不可變文件作為主副本。去重復代理刪除所有其它不可變?nèi)哂辔募⑶覍⑦@些文件指向主副本。
[0023]在實施例中,去重復代理用軟鏈接保持每個不可變文件的不可變性屬性(例如到期日期)。例如對于已經(jīng)刪除的并且現(xiàn)在指向主副本的特定文件,特定文件的軟鏈接包含指向主副本的路徑(例如指針)以及特定文件的不可變性屬性(例如到期日期)。以這一方式,雖然不可變文件的冗余副本被刪除,但是刪除的文件的不可變性屬性(例如到期日期)被保留,并且刪除的副本的所有者有權對主副本進行訪問。這樣,消除主文件的冗余副本,而未違反不可變性前提。另外,在主副本的不可變性時段到期(例如到期日期出現(xiàn))并且指向主副本的軟鏈接具有更晚到期日期的情況下,去重復代理提升軟鏈接作為主副本并且將現(xiàn)有主副本改變成不再不可變的軟鏈接。
[0024]云計算
[0025]首先應當理解,盡管本公開包括關于云計算的詳細描述,但其中記載的技術方案的實現(xiàn)卻不限于云計算環(huán)境,而是能夠結合現(xiàn)在已知或以后開發(fā)的任何其它類型的計算環(huán)境而實現(xiàn)。
[0026]為了方便,【具體實施方式】包括已經(jīng)從在隨本申請?zhí)峤坏腎DS中引用并且其副本附于本申請的 Peter Mell 和 Tim Grance “Draft NIST Working Definition of CloudComputing”得到的以下定義:
[0027]云計算是一種服務交付模式,用于對共享的可配置計算資源池進行方便、按需的網(wǎng)絡訪問??膳渲糜嬎阗Y源是能夠以最小的管理成本或與服務提供者進行最少的交互就能快速部署和釋放的資源,例如可以是網(wǎng)絡、網(wǎng)絡帶寬、服務器、處理、內(nèi)存、存儲、應用、虛擬機和服務。這種云模式可以包括至少五個特征、至少三個服務模型和至少四個部署模型。
[0028]特征包括:
[0029]按需自助式服務:云的消費者在無需與服務提供者進行人為交互的情況下能夠單方面自動地按需部署諸如服務器時間和網(wǎng)絡存儲等的計算能力。
[0030]廣泛的網(wǎng)絡接入:計算能力可以通過標準機制在網(wǎng)絡上獲取,這種標準機制促進了通過不同種類的瘦客戶機平臺或厚客戶機平臺(例如移動電話、膝上型電腦、個人數(shù)字助理PDA)對云的使用。
[0031]資源池:提供者的計算資源被歸入資源池并通過多租戶(mult1-tenant)模式服務于多重消費者,其中按需將不同的實體資源和虛擬資源動態(tài)地分配和再分配。一般情況下,消費者不能控制或甚至并不知曉所提供的資源的確切位置,但可以在較高抽象程度上指定位置(例如國家、州或數(shù)據(jù)中心),因此具有位置無關性。
[0032]迅速彈性:能夠迅速、有彈性地(有時是自動地)部署計算能力,以實現(xiàn)快速擴展,并且能迅速釋放來快速縮小。在消費者看來,用于部署的可用計算能力往往顯得是無限的,并能在任意時候都能獲取任意數(shù)量的計算能力。
[0033]可測量的服務:云系統(tǒng)通過利用適于服務類型(例如存儲、處理、帶寬和活躍用戶帳號)的某種抽象程度的計量能力,自動地控制和優(yōu)化資源效用??梢员O(jiān)測、控制和報告資源使用情況,為服務提供者和消費者雙方提供透明度。
[0034]服務模型如下:
[0035]軟件即服務(SaaS):向消費者提供的能力是使用提供者在云基礎架構上運行的應用。可以通過諸如網(wǎng)絡瀏覽器的瘦客戶機接口(例如基于網(wǎng)絡的電子郵件)從各種客戶機設備訪問應用。除了有限的特定于用戶的應用配置設置外,消費者既不管理也不控制包括網(wǎng)絡、服務器、操作系統(tǒng)、存儲、乃至單個應用能力等的底層云基礎架構。
[0036]平臺即服務(PaaS):向消費者提供的能力是在云基礎架構上部署消費者創(chuàng)建或獲得的應用,這些應用利用提供者支持的程序設計語言和工具創(chuàng)建。消費者既不管理也不控制包括網(wǎng)絡、服務器、操作系統(tǒng)或存儲的底層云基礎架構,但對其部署的應用具有控制權,對應用托管環(huán)境配置可能也具有控制權。
[0037]基礎架構即服務(IaaS):向消費者提供的能力是消費者能夠在其中部署并運行包括操作系統(tǒng)和應用的任意軟件的處理、存儲、網(wǎng)絡和其他基礎計算資源。消費者既不管理也不控制底層的云基礎架構,但是對操作系統(tǒng)、存儲和其部署的應用具有控制權,對選擇的網(wǎng)絡組件(例如主機防火墻)可能具有有限的控制權。
[0038]部署模型如下:
[0039]私有云:云基礎架構單獨為某個組織運行。云基礎架構可以由該組織或第三方管理并且可以存在于該組織內(nèi)部或外部。
[0040]共同體云:云基礎架構被若干組織共享并支持有共同利害關系(例如任務使命、安全要求、政策和合規(guī)考慮)的特定共同體。共同體云可以由共同體內(nèi)的多個組織或第三方管理并且可以存在于該共同體內(nèi)部或外部。
[0041]公共云:云基礎架構向公眾或大型產(chǎn)業(yè)群提供并由出售云服務的組織擁有。
[0042]混合云:云基礎架構由兩個或更多部署模型的云(私有云、共同體云或公共云)組成,這些云依然是獨特的實體,但是通過使數(shù)據(jù)和應用能夠移植的標準化技術或私有技術(例如用于云之間的負載平衡的云突發(fā)流量分擔技術)綁定在一起。
[0043]云計算環(huán)境是面向服務的,特點集中在無狀態(tài)性、低耦合性、模塊性和語意的互操作性。云計算的核心是包含互連節(jié)點網(wǎng)絡的基礎架構。
[0044]現(xiàn)在參照圖1,示出云計算節(jié)點的示例的示意圖。云計算節(jié)點10僅為適當云計算節(jié)點的一個示例并且未旨在于暗示關于這里描述的本發(fā)明的實施例的使用或者功能范圍的任何限制。無論如何,云計算節(jié)點10能夠?qū)嵤┖?或執(zhí)行上文闡述的功能中的任何功能。圖1也可以代表能夠執(zhí)行和/或?qū)嵤┻@里描述的方法的任務和/或功能的計算基礎設施。
[0045]云計算節(jié)點10具有計算機系統(tǒng)/服務器12,其可與眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作。眾所周知,適于與計算機系統(tǒng)/服務器12 —起操作的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計算機系統(tǒng)、服務器計算機系統(tǒng)、瘦客戶機、厚客戶機、手持或膝上設備、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡個人電腦、小型計算機系統(tǒng)、大型計算機系統(tǒng)和包括上述任意系統(tǒng)的分布式云計算技術環(huán)境,等
坐寸ο[0046]計算機系統(tǒng)/服務器12可以在由計算機系統(tǒng)執(zhí)行的計算機系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務或者實現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標程序、組件、邏輯、數(shù)據(jù)結構等。計算機系統(tǒng)/服務器12可以在通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí)行任務的分布式云計算環(huán)境中實施。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設備的本地或遠程計算系統(tǒng)存儲介質(zhì)上。
[0047]如圖1所示,云計算節(jié)點10中的計算機系統(tǒng)/服務器12以通用計算設備的形式表現(xiàn)。計算機系統(tǒng)/服務器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。在實施例中,計算機系統(tǒng)/服務器12包括或與重復數(shù)據(jù)消除代理80通信,本文以下更詳細描述。
[0048]總線18表示幾類總線結構中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結構中的任意總線結構的局域總線。舉例來說,這些體系結構包括但不限于工業(yè)標準體系結構(ISA)總線,微通道體系結構(MAC)總線,增強型ISA總線、視頻電子標準協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0049]計算機系統(tǒng)/服務器12典型地包括多種計算機系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計算機系統(tǒng)/服務器12訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
[0050]系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機系統(tǒng)可讀介質(zhì),例如隨機存取存儲器(RAM) 30和/或高速緩存存儲器32。計算機系統(tǒng)/服務器12可以進一步包括其它可移動/不可移動的、易失性/非易失性計算機系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施例的功能。
[0051]具有程序模塊42的集合(程序模塊42中的至少一個程序模塊)的程序/實用程序40已經(jīng)操作系統(tǒng)、一個或者多個應用程序、其它程序模塊和程序數(shù)據(jù)可以例如而不限于存儲于存儲器28中。操作系統(tǒng)、一個或者多個應用程序、其它程序模塊和程序數(shù)據(jù)中的每項或者其某個組合可以包括聯(lián)網(wǎng)環(huán)境的實現(xiàn)方式。程序模塊42 —般執(zhí)行如這里描述的本發(fā)明的實施例的功能和/或方法。例如可以實施去重復代理80的功能中的一些或者所有功能以作為程序模塊42中的一個或者多個程序模塊。此外,可以實施去重復代理80作為分離專用處理器或者單個或者若干處理器以提供這里描述的功能。在實施例中,去重復代理80執(zhí)行這里描述的過程中的一個或者多個過程,這些過程包括但不限于:接收將在共享存儲裝置中被保存為不可變的文件或者接收指示,該指示表明當前保存在共享存儲裝置中的一個文件將被設置為不可變;在文件系統(tǒng)中發(fā)現(xiàn)文件的冗余副本;刪除在文件系統(tǒng)中發(fā)現(xiàn)的冗余可變副本并且將這些冗余可變副本指向作為主副本的不可變文件;比較在文件系統(tǒng)中發(fā)現(xiàn)的冗余不可變副本與不可變文件、保存這些文件之一作為主副本、用軟鏈接將其它文件指向主副本并且刪除其它文件。[0052]計算機系統(tǒng)/服務器12也可以與一個或多個外部設備14(例如鍵盤、指向設備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機系統(tǒng)/服務器12交互的設備通信,和/或與使得該計算機系統(tǒng)/服務器12能與一個或多個其它計算設備進行通信的任何設備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22進行。并且,計算機系統(tǒng)/服務器12還可以通過網(wǎng)絡適配器20與一個或者多個網(wǎng)絡(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡,例如因特網(wǎng))通信。如圖所示,網(wǎng)絡適配器20通過總線18與計算機系統(tǒng)/服務器12的其它模塊通信。應當明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計算機系統(tǒng)/服務器12 —起操作,包括但不限于:微代碼、設備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID (廉價磁盤的冗余陣列或獨立磁盤的冗余陣列)系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
[0053]現(xiàn)在參考圖2,其中顯示了示例性的云計算環(huán)境50。如圖所示,云計算環(huán)境50包括云計算消費者使用的本地計算設備可以與其相通信的一個或者多個云計算節(jié)點10,本地計算設備例如可以是個人數(shù)字助理(PDA)或移動電話54A,臺式電腦54B、筆記本電腦54C和/或汽車計算機系統(tǒng)54N。云計算節(jié)點10之間可以相互通信??梢栽诎ǖ幌抻谌缟纤龅乃接性啤⒐餐w云、公共云或混合云或者它們的組合的一個或者多個網(wǎng)絡中將云計算節(jié)點10進行物理或虛擬分組(圖中未顯示)。這樣,云的消費者無需在本地計算設備上維護資源就能請求云計算環(huán)境50提供的基礎架構即服務(IaaS)、平臺即服務(PaaS)和/或軟件即服務(SaaS)。應當理解,圖2顯示的各類計算設備54A-N僅僅是示意性的,云計算節(jié)點10以及云計算環(huán)境50可以與任意類型網(wǎng)絡上和/或網(wǎng)絡可尋址連接的任意類型的計算設備(例如使用網(wǎng)絡瀏覽器)通信。
[0054]現(xiàn)在參考圖3,其中顯示了云計算環(huán)境50(圖2)提供的一組功能抽象層。首先應當理解,圖3所示的組件、層以及功能都僅僅是示意性的,本發(fā)明的實施例不限于此。如圖3所示,提供下列層和對應功能:
[0055]硬件和軟件層60包括硬件和軟件組件。硬件組件的例子包括:主機,例如IBM⑧zSeries⑧系統(tǒng);基于Risc(精簡指令集計算機)體系結構的服務器,例如IBM pSeries? 系統(tǒng);ibm xSeries?系統(tǒng);ibm Blade Center?系統(tǒng);存儲設備;網(wǎng)絡和網(wǎng)絡組件。軟件組件的例子包括:網(wǎng)絡應用服務器軟件,例如IBM WebSphere?應用服務器軟件;數(shù)據(jù)庫軟件,例如IBM DB2?.數(shù)據(jù)庫軟件。(IBM, zSeries, pSeries, xSeries, BIadeCenter, WebSphere以及DB2是國際商業(yè)機器公司在全世界各地的注冊商標)。
[0056] 虛擬層62提供一個抽象層,該層可以提供下列虛擬實體的例子:虛擬服務器、虛擬存儲、虛擬網(wǎng)絡(包括虛擬私有網(wǎng)絡)、虛擬應用和操作系統(tǒng),以及虛擬客戶端。
[0057]在一個示例中,管理層64可以提供下述功能:資源供應功能:提供用于在云計算環(huán)境中執(zhí)行任務的計算資源和其它資源的動態(tài)獲取;計量和定價功能:在云計算環(huán)境內(nèi)對資源的使用進行成本跟蹤,并為此提供帳單和發(fā)票。在一個例子中,該資源可以包括應用軟件許可。安全功能:為云的消費者和任務提供身份認證,為數(shù)據(jù)和其它資源提供保護。用戶門戶功能:為消費者和系統(tǒng)管理員提供對云計算環(huán)境的訪問。服務水平管理功能:提供云計算資源的分配和管理,以滿足必需的服務水平。服務水平協(xié)議(SLA)計劃和履行功能--為根據(jù)SLA預測的對云計算資源未來需求提供預先安排和供應。[0058]工作負載層66提供云計算環(huán)境可以用于的功能的示例??梢詮倪@一層提供的工作負載和功能的示例包括:地圖繪制和導航;軟件開發(fā)和生命周期關聯(lián);虛擬教室教育遞送;數(shù)據(jù)分析處理;交易處理;以及去重復。根據(jù)本發(fā)明的方面,去重復工作負載/功能操作用于執(zhí)行這里描述的過程中的一個或者多個過程,這些過程包括但不限于:接收將在共享存儲裝置中被保存為不可變的文件或者接收指示,該指示表明當前保存在共享存儲裝置中的一個文件將被設置為不可變;在文件系統(tǒng)中發(fā)現(xiàn)文件的冗余副本;刪除在文件系統(tǒng)中發(fā)現(xiàn)的冗余可變副本并且將這些冗余可變副本指向作為主副本的不可變文件;比較在文件系統(tǒng)中發(fā)現(xiàn)的冗余不可變副本與不可變文件、保存這些文件之一作為主副本、用軟鏈接將其它文件指向主副本并且刪除其它文件。
[0059]所屬【技術領域】的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在任何一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可用的程序代碼。
[0060]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置、器件或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的示例(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0061]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0062]計算機可讀介質(zhì)上包含的計算機代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于——無線、有線、光纜、射頻(RF)等等,或者上述的任意合適的組合。
[0063]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向?qū)ο蟮某绦蛟O計語言一諸如Java?、Smalltalk?、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供者來通過因特網(wǎng)連接)。
[0064]下面將參照根據(jù)本發(fā)明示例實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0065]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)。
[0066]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令提供實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的過程。
[0067]圖4描繪根據(jù)本發(fā)明的方面的去重復框圖。在實施例中,形式為不可變文件75的數(shù)據(jù)從本地計算設備54流向包括計算節(jié)點10和去重復代理80的去重復系統(tǒng)。這可以例如包括本地計算設備54的用戶請求(或者指示)在共享存儲裝置90中將文件75保存為不可變或者指明將當前保存在共享存儲裝置90中的文件75被指明為不可變。本地計算設備54可以以上關于圖2描述的許多本地計算設備54A-N之一。共享存儲裝置90可以例如是在云環(huán)境、比如圖2中描繪的云環(huán)境50中的一個或者多個節(jié)點包含的一個或者多個數(shù)據(jù)存儲單兀。
[0068]在文件去重復過程中,去重復代理80針對文件75運行哈希算法,該哈希算法生成用于文件的唯一哈希值。去重復代理80比較用于文件的唯一哈希值與在存儲裝置90中已經(jīng)存儲的其它文件的哈希值。其它文件的哈希值可以存儲于存儲裝置90中和/或去重復數(shù)據(jù)庫85中,該去重復數(shù)據(jù)庫包含關于系統(tǒng)中的去重復的文件的信息。
[0069]在附加實施例中,比較和匹配哈希值是在確定冗余性時的第一步驟。在這樣的附加實施例中,具有匹配哈希值的文件被視為可能的(例如候選)冗余副本。用于確認冗余性的第二步驟涉及到去重復代理80在可能的冗余副本之中執(zhí)行文件差異過程以增加副本相同的置信度。文件差異過程比較文件的實際內(nèi)容而不是比較哈希值。以這一方式,去重復代理80還可以使用文件差異過程以標識真實冗余副本,例如存儲裝置90中的與文件75相同的文件。
[0070]比較哈希值并且可選地執(zhí)行文件差異過程是確定冗余文件的示例方法。然而本發(fā)明不限于這些方法,并且可以在本發(fā)明的范圍內(nèi)使用用于標識存儲裝置90中的與文件75相同的文件的任何適當比較過程。
[0071 ] 根據(jù)本發(fā)明的方面,在去重復代理80無法發(fā)現(xiàn)存儲裝置90中的對于文件75冗余的任何文件的情況下,去重復代理80在存儲裝置90中保存文件75并且在文件的i節(jié)點中保留文件75的不可變性屬性。在另一方面,在去重復代理80發(fā)現(xiàn)存儲裝置90中的對于文件75冗余的至少一個文件時,去重復代理80然后如以下關于圖5A和圖5B更具體描述的那樣基于文件的發(fā)現(xiàn)的副本是可變的還是不可變的來將去重復過程應用于冗余文件。
[0072]圖5A描繪在文件75不可變并且代理(例如圖4中描述的代理80)發(fā)現(xiàn)存儲裝置90中的一個或者多個可變?nèi)哂辔募?00時、根據(jù)本發(fā)明的去重復過程。在這一情況下,發(fā)現(xiàn)的冗余文件100可變,這意味著對這一文件100進行的刪除、修改等不存在限制。因而,代理在存儲裝置90中保存文件75并且指明文件75作為主副本。代理從存儲裝置90刪除文件100并且創(chuàng)建指向主副本、例如文件75的軟鏈接105。軟鏈接105可以是在文件系統(tǒng)中的任何適當位置存儲的數(shù)據(jù)結構、該存儲位置包括但不限于存儲裝置90、去重復數(shù)據(jù)庫(例如圖4中描繪的數(shù)據(jù)庫85)、作為i節(jié)點的部分或者文件系統(tǒng)中的其它位置。
[0073]仍然參照圖5A,代理可以標識在存儲裝置90中保存的多于一個可變?nèi)哂辔募?00。在這樣的情況下,從存儲裝置90刪除多個可變文件100中的每個可變文件,并且用指向文件75 (例如在存儲裝置90中保存的主副本)的相應軟鏈接105替換它們。
[0074]此外,不可變文件75可以具有到期日期‘A’??梢栽诘狡谌掌诨蛘咧髣h除或者修改文件75,在該情況下,代理提升軟鏈接105為存儲裝置90中的主副本。在到期日期之后修改或者刪除文件75時存在指向文件75的多個軟鏈接105時,代理提升軟件鏈接105之一做為新的主副本,并且更新其余多個軟鏈接105以指向新的主副本。
[0075]在可變文件100的所有者在創(chuàng)建軟鏈接105之后刪除文件的情況下,代理刪除軟鏈接105而保留在存儲裝置90中保存的文件75的主副本。在可變文件100的所有者在創(chuàng)建軟鏈接105之后更新文件100的情況下,代理執(zhí)行創(chuàng)建主文件的新副本、接收用戶對新副本的改變并且保存新副本作為新文件(例如在寫入時復制)的常規(guī)去重復過程。
[0076]圖5B描繪在文件75不可變并且代理(例如圖4中描述的代理80)發(fā)現(xiàn)存儲裝置90中的一個或者多個不可變?nèi)哂辔募?10時、根據(jù)本發(fā)明的方面的去重復過程。在圖5B中所示示例中,文件75具有不可變性到期日期‘A’,并且文件110具有不可變性到期日期‘B’。在A大于B (例如文件75將來不可變比文件110更久)時,然后在存儲裝置90中保存文件75作為主副本,而刪除文件110并且用指向主副本的軟鏈接115替換文件110。在另一方面,在B大于A (例如文件110將來不可變比文件75更久)時,然后在存儲裝置90中保存文件110作為主副本,而刪除文件75并且用指向主副本的軟鏈接115’替換文件75。在任一情況(A>B或者B>A)下,在存儲裝置90中保存一個文件作為主副本而刪除另一文件并且用指向主副本的軟鏈接替換另一文件。另外,替換刪除的文件的軟鏈接(例如軟鏈接115或者115’)除了包含定義指向主文件的路徑(例如指針)的數(shù)據(jù)之外還包含定義刪除的文件的不可變性到期日期的數(shù)據(jù)。
[0077]可以在代理標識對于文件75冗余的多于一個文件110時執(zhí)行圖5B中描繪的過程。在這樣的情況下,代理確定所有文件75和110中的哪一個文件具有將來最遠到期日期并且提升和保存該一個文件作為在存儲裝置90中的主副本。如已經(jīng)描述的那樣刪除并且用軟鏈接115和/或115’替換其余文件。
[0078]在實施例中,在軟鏈接之一在主副本之前到期時,代理刪除特定軟鏈接或者將軟鏈接改變成可變,而保持保存的主副本和任何其它軟鏈接。在另一方面,在主副本到期時,代理分析指向主文件的所有軟鏈接的到期日期,以確定是否軟鏈接中的任何軟連接具有將來到期日期(這可以例如在變更軟鏈接以將它的到期日期延伸至在主副本的到期日期之后的日期時發(fā)生)。在無軟連接具有更晚到期日期時,可以刪除或者將主副本和所有軟鏈接改變?yōu)榭勺?。在僅一個軟鏈接具有更晚到期日期時,提升該軟鏈接為主副本,并且刪除先前主副本和所有其它軟鏈接或者其改變?yōu)榭勺?。在多個軟鏈接具有更晚到期日期時,提升具有最晚到期日期的軟連接為主副本,改變具有將來到期日期的其它軟鏈接以指向新的主副本,并且刪除先前主副本和已經(jīng)超過到期日期的所有其它軟鏈接或者將其改變?yōu)榭勺儭?br>
[0079]軟鏈接(例如軟鏈接105、115、115’ )不限于以到期日期的形式存儲不可變性信息,并且可以在本發(fā)明的范圍內(nèi)在軟鏈接中存儲備選或者附加不可變性信息。另外,確定提升和保存哪一個文件作為主副本而刪除和用軟鏈接替換哪些文件可以基于不可變性信息而不是到期日期。
[0080]流程圖
[0081]圖6示出用于執(zhí)行本發(fā)明的方面的示例流程圖。可以例如在圖1-4的環(huán)境中的任何環(huán)境中實施圖6的步驟。
[0082]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行 ,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0083]另外,本發(fā)明可以采用從計算機可用或者計算機可讀介質(zhì)可訪問的計算機程序產(chǎn)品的形式,該計算機可用或者計算機可讀介質(zhì)提供用于由或者結合計算機或者任何指令子系統(tǒng)使用的程序代碼??梢栽趫D1-4的環(huán)境中實施軟件和/或計算機程序產(chǎn)品。出于本描述的目的,計算機可用或者計算機可讀介質(zhì)可以是任何裝置,該裝置可以包含、存儲、傳達、傳播或者傳送用于由或者結合指令執(zhí)行系統(tǒng)、裝置或者設備使用的程序。介質(zhì)可以是電子、磁、光、電磁、紅外線或者半導體系統(tǒng)(或者裝置或者設備)或者傳播介質(zhì)。計算機可讀存儲介質(zhì)的示例包括半導體或者固態(tài)存儲器、磁帶、可拆卸計算機盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和光盤。光盤的當前示例包括緊致盤-只讀存儲器(CD-ROM)、緊致盤-讀/寫(CD-R/W)和DVD。
[0084]圖6描繪根據(jù)本發(fā)明的方面的用于去重復過程的示例流程圖。在步驟610,去重復系統(tǒng)(例如運行去重復代理80的計算設備)從用戶(例如本地計算設備54)接收輸入,該輸入包括對將被設置為不可變的文件的指示。用戶輸入可以包括從本地計算設備向去重復系統(tǒng)傳輸?shù)奈募约坝糜谠诠蚕泶鎯ρb置(例如存儲裝置90)中將文件保存為不可變的指令。備選地,用戶輸入可以包括已經(jīng)保存(例如在存儲裝置90中已經(jīng)保存)的文件的標識和用于指明文件為不可變的指令。
[0085]在步驟615,去重復系統(tǒng)搜索在文件系統(tǒng)中(例如在存儲裝置90)中當前存儲的文件的冗余副本。在實施例中,這以關于圖4描述的方式來執(zhí)行。例如去重復系統(tǒng)的去重復代理可以生成用于文件(例如來自步驟610的文件)的哈希值并且比較這一哈希值與在文件系統(tǒng)中存儲的文件的哈希值。匹配哈希值指示文件的冗余副本??蛇x地,去重復代理可以附加地或者備選地對可能(例如候選)冗余文件執(zhí)行文件差異過程以增加在步驟615發(fā)現(xiàn)的文件與來自步驟610的文件相同的置信度。[0086]在步驟620,去重復系統(tǒng)例如使用來自步驟615的搜索和比較的結果來確定是否發(fā)現(xiàn)任何冗余副本。在未發(fā)現(xiàn)冗余副本時,然后在步驟625,去重復系統(tǒng)在文件系統(tǒng)(例如存儲裝置90)中保存文件(來自步驟610)和它的關聯(lián)不可變性信息和/或更新與文件關聯(lián)并且在步驟610接收的任何新的不可變性信息。在另一方面,當存在在步驟615和620中發(fā)現(xiàn)的冗余副本時,則該過程繼續(xù)步驟630,其中去重復系統(tǒng)確定冗余副本是可變的或者是不可變的。在實施例中,通過以常規(guī)方式檢查特定文件的屬性來進行特定文件是不可變的或者是可變的確定。
[0087]當在步驟630確定一個或者多個冗余文件可變時,然后在步驟635在共享存儲裝置中保存不可變文件(來自步驟610)作為主副本,而刪除所有可變?nèi)哂喔北静⑶矣弥赶蛑鞲北镜能涙溄犹鎿Q所有可變?nèi)哂喔北?。在實施例中,步驟635包括保存不可變文件作為主副本、更新用于主文件的不可變性信息,并且改變可變?nèi)哂喔北疽灾赶蛑鞲北尽_@可以如以上關于圖5A描述的那樣來執(zhí)行。
[0088]在另一方面,當在步驟630確定冗余副本中的一個或者多個副本不可變時,然后在步驟640,去重復系統(tǒng)確定所有文件(例如來自步驟610的文件和在步驟615發(fā)現(xiàn)的冗余文件)中的哪一個文件具有最晚到期日期(例如將來最遠的不可變性到期日期)。在共享存儲裝置中保存具有最晚到期日期的文件作為主副本,而刪除來自如下組中的除了被保存為主副本的所有其它文件,并且將其替換為指向主副本的軟鏈接,該組由來自步驟610的文件以及來自步驟615和620的冗余文件構成。在實施例中,步驟640包括確定哪個不可變文件具有最晚到期日期、保存具有最晚到期日期的不可變文件作為主副本、用指向主副本的軟鏈接替換冗余文件、保存軟鏈接中的不可變性信息。這可以如以上關于圖5B描述的那樣來執(zhí)行。
[0089]有可能的是去重復系統(tǒng)在步驟615發(fā)現(xiàn)多個冗余文件,這些冗余文件中的一些冗余文件可變而一些冗余文件不可變。在這樣的情況下,去重復系統(tǒng)如在步驟635描述的那樣對可變文件去重復,并且如在步驟640描述的那樣對不可變文件分離地去重復。
[0090]在實施例中,服務提供者、比如解決方案集成者可以賦予執(zhí)行這里描述的過程。在這一情況下,服務提供者可以創(chuàng)建、維護、部署、支持等計算機基礎設施,該計算機基礎設施為一個或者多個客戶執(zhí)行本發(fā)明的過程步驟。這些客戶可以例如是使用技術并且提供或者利用服務的任何企業(yè)。作為回報,服務提供者可以在預訂和/或費用協(xié)定之下從客戶接收付款和/或服務提供者可以接收來自向一個或者多個第三方銷售廣告內(nèi)容的付款。
[0091]本發(fā)明的各種實施例的描述已經(jīng)出于示例的目的而加以呈現(xiàn)、但是未旨在于窮舉或者限于公開的實施例。許多修改和變化將為本領域普通技術人員所清楚而未脫離描述的實施例的范圍和精神實質(zhì)。選擇這里所用術語以最好地說明實施例的原理、實際應用或者較在市面上發(fā)現(xiàn)的技術而言的技術改進或者使本領域其他技術人員能夠理解這里公開的實施例。許多修改和變化將為本領域普通技術人員所清楚而未脫離本發(fā)明的范圍和精神實質(zhì)。在權利要求中的所有裝置或者步驟加上功能單元的對應結構、材料、動作和等效物如果適用則旨在于包括用于與如具體要求保護的其它要求保護的要素組合執(zhí)行該功能的任何結構、材料或者動作。因而,盡管已經(jīng)在實施例方面描述本發(fā)明,但是本領域技術人員將認識可以用修改并且在所附權利要求的精神實質(zhì)和范圍中實現(xiàn)本發(fā)明。
【權利要求】
1.一種在包括硬件和軟件的組合的計算機基礎設施中實施的文件去重復方法,所述方法包括: 接收對于將第一文件保存為不可變的請求; 搜索所保存的并且對于所述第一文件冗余的第二文件; 確定所述第二文件是可變的或者是不可變的; 在所述第二文件可變時,保存所述第一文件作為主副本,并且用指向所述主副本的軟鏈接替換所述第二文件;以及 在所述第二文件不可變時,確定所述第一和第二文件中的哪一個文件具有更晚到期日期和更早到期日期,保存所述第一文件和第二文件中具有所述更晚到期日期的那個文件作為主副本,并且用指向所述主副本的軟鏈接替換所述第一文件和第二文件中的具有所述更早到期日期的那個文件。
2.根據(jù)權利要求1所述的方法,其中對于保存所述第一文件的所述請求包括對于在共享存儲裝置中保存所述第一文件的請求或者指令。
3.根據(jù)權利要求2所述的方法,其中: 從本地計算設備接收對于保存所述第一文件的所述請求;以及 所述共享存儲裝置處在與所述本地計算設備遠離的云環(huán)境中。
4.根據(jù)權利要求1所述的方法,其中所述搜索所述第二文件包括比較所述第一文件的哈希值與其它保存的文件的哈希值。
5.根據(jù)權利要求1所述的方法,其中所述搜索所述第二文件包括: 通過比較所述第一文件的哈希值與其它保存的文件的哈希值來確定至少一個候選冗余文件;以及 使用文件差異過程來比較所述第一文件與所述至少一個候選冗余文件。
6.根據(jù)權利要求1所述的方法,其中所述更晚到期日期和所述更早到期日期是不可變性到期日期。
7.根據(jù)權利要求1所述的方法,其中: 所述第二文件是不可變的;以及 所述軟鏈接包含定義所述更早到期日期的數(shù)據(jù)。
8.根據(jù)權利要求1所述的方法,其中: 所述第二文件是不可變的; 所述第二文件具有所述更早到期日期;以及 所述替換包括刪除所述第二文件的保存的副本。
9.根據(jù)權利要求1所述的方法,其中: 所述第二文件是可變的; 在云環(huán)境的共享存儲裝置中保存所述主副本;以及 從所述共享存儲裝置刪除所述第二文件,所述軟鏈接指向所述主副本。
10.根據(jù)權利要求1所述的方法,其中服務提供者至少執(zhí)行創(chuàng)建、維護、部署和支持所述計算機基礎設施中的至少一項。
11.根據(jù)權利要求1所述的方法,其中權利要求1的步驟在預訂、廣告和/或計費基礎上由所述服務提供者提供。
12.—種在硬件中實施的用于文件去重的并且包括計算機基礎設施的系統(tǒng),所述計算機基礎設施可操作用于: 接收對于將第一文件保存為不可變的請求; 確定對于所述第一文件冗余的多個第二文件; 確定所述多個第二文件中的每個第二文件是不可變的; 從包括所述第一文件和所述多個第二文件的組中標識具有最晚到期日期的文件; 將具有所述最晚到期日期的所述文件保存作為主副本;以及 用指向所述主副本的相應數(shù)據(jù)結構替換所述組中除了具有所述最晚到期日期的所述文件之外的每個文件。
13.根據(jù)權利要求12所述的系統(tǒng),其中所述相應數(shù)據(jù)結構包括不可變性到期日期。
14.根據(jù)權利要求12所述的系統(tǒng),其中所述相應數(shù)據(jù)結構包括軟鏈接,所述軟鏈接包括不可變性到期日期。
15.根據(jù)權利要求12所述的系統(tǒng),其中對于保存所述第一文件的所述請求包括對于在共享存儲裝置中保存所述第一文件的請求或者指令。
16.根據(jù)權利要求15所述的系統(tǒng),其中: 從本地計算設備接收對于保存所述第一文件的所述請求; 所述共享存儲裝置處在與所述本地計算設備遠離的云環(huán)境中;以及 在所述共享存儲裝置中保存所述主副本。
17.根據(jù)權利要求12所述的系統(tǒng),其中所述確定對于所述第一文件冗余的所述多個第二文件包括比較所述第一文件的哈希值與其它保存的文件的哈希值。
18.根據(jù)權利要求12所述的系統(tǒng),其中所述計算機基礎設施還可操作用于在達到所述最晚到期日期時刪除所述主副本或者標記所述主副本為可變。
19.根據(jù)權利要求18所述的系統(tǒng),其中所述計算機基礎設施還可操作用于: 從指向所述主副本的多個軟鏈接確定具有新的最晚到期日期的軟鏈接;以及 提升具有所述新的最晚到期日期的所述軟鏈接為新的主副本;以及 更新除了具有所述新的最晚到期日期的所述軟鏈接之外的所述多個軟鏈接以指向所述新的主副本。
20.一種包括計算機可用有形存儲介質(zhì)的計算機程序產(chǎn)品,所述計算機可用有形存儲介質(zhì)具有在所述有形存儲介質(zhì)中體現(xiàn)的可讀程序代碼,其中所述計算機程序產(chǎn)品包括至少一個部件,所述至少一個部件可操作用于: 接收對于在共享存儲裝置中將第一文件保存為不可變的請求,其中從與所述共享存儲裝置遠離的本地計算設備接收所述請求; 標識在所述共享存儲裝置中保存的并且對于所述第一文件冗余的至少一個第二文件; 確定所述至少一個第二文件為可變的或者為不可變的; 在所述至少一個第二文件可變時,保存所述第一文件為主副本,并且用指向所述主副本的相應軟鏈接替換所述至少一個第二文件中的每個第二文件;以及 在所述至少一個第二文件不可變時:從包括所述第一文件和所述至少一個第二文件的組中標識具有最晚到期日期的文件;保存具有所述最晚到期日期的所述文件作為主副本;以及用指向所述主副本的相應數(shù)據(jù)結構替換所述組中的除了具有所述最晚到期日期的所述文件之外的每個文件。
21.根據(jù)權利要求20所述的計算機程序產(chǎn)品,其中所述標識所述至少一個第二文件包括比較所述第一文件的哈希值與在所述共享存儲裝置中保存的其它文件的哈希值。
22.—種對文件去重復的方法,包括: 提供計算機基礎設施,所述計算機基礎設施可操作用于: 接收對于在共享存儲裝置中將第一文件保存為不可變的請求,其中從與所述共享存儲裝置遠離的本地計算設備接收所述請求; 確定對于所述第一文件冗余的多個第二文件; 確定所述多個第二文件的第一子集是可變的; 確定所述多個第二文件的第二子集是不可變的; 從包括所述第一文件和所述第二子集的組中標識具有最晚到期日期的文件; 保存具有所述最晚到期日期的所述文件作為主副本;以及 用指向所述主副本的相應軟鏈接替換所述組中的除了具有所述最晚到期日期的所述文件之外的每個文件。
23.根據(jù)權利要求22所述的方法,其中所述確定對于所述第一文件冗余的所述多個第二文件包括比較所述第一文件的哈希值與在所述共享存儲裝置中保存的其它文件的哈希值。
24.一種用于對文件去重復的計算機系統(tǒng),所述系統(tǒng)包括: CPU、計算機可讀存儲器和計算機可讀存儲介質(zhì); 第一程序指令,用于接收對于在共享存儲裝置中將第一文件保存為不可變的請求,其中從與所述共享存儲裝置遠離的本地計算設備接收所述請求; 第二程序指令,用于確定不可變并且對于所述第一文件冗余的多個第二文件; 第三程序指令,用于從包括所述第一文件和所述多個第二文件的組中標識具有最晚到期日期的文件; 第四程序指令,用于保存具有所述最晚到期日期的所述文件作為主副本;以及第五程序指令,用于用指向所述主副本的相應數(shù)據(jù)結構替換所述組中的除了具有所述最晚到期日期的所述文件之外的每個文件; 其中所述第一、第二、第三、第四和第五程序指令存儲于所述計算機可讀存儲介質(zhì)上以用于經(jīng)由所述計算機可讀存儲器由所述CPU執(zhí)行;以及 所述確定不可變并且對于所述第一文件冗余的所述多個第二文件包括:通過比較所述第一文件的哈希值與在所述共享存儲裝置中保存的其它文件的哈希值來確定至少一個候選冗余文件;以及使用文件差異過程來比較所述第一文件與所述至少一個候選冗余文件。
25.根據(jù)權利要求24所述的計算機系統(tǒng),其中所述最晚到期日期是不可變性到期日期。
【文檔編號】G06F13/00GK103959264SQ201280059219
【公開日】2014年7月30日 申請日期:2012年9月6日 優(yōu)先權日:2011年12月2日
【發(fā)明者】G·科豪恩科爾, B·P·賈因, S·R·帕蒂爾, S·拉瑪納桑, M·B·特里瓦桑 申請人:國際商業(yè)機器公司