有引用段對(duì)象的文件的 相關(guān)列表。引用列表270的很多可能實(shí)施例是有可能的。例如,在一個(gè)實(shí)施例中文件的鏈表 可W與每個(gè)段對(duì)象標(biāo)識(shí)符相關(guān)聯(lián)。B-樹(shù)結(jié)構(gòu)或其他方式可W用于存儲(chǔ)和維護(hù)列表270。很多 運(yùn)類(lèi)實(shí)施例是可能的并且是可設(shè)想的。在一個(gè)實(shí)施例中,如果刪除了一個(gè)文件,可W遍歷段 對(duì)象標(biāo)識(shí)符231-239W便移除那些識(shí)別已刪除文件的條項(xiàng)/實(shí)體。如可W認(rèn)識(shí)到的是,有必 要遍歷很多條項(xiàng)W完全更新運(yùn)個(gè)或運(yùn)些數(shù)據(jù)結(jié)構(gòu)270。一般而言,與運(yùn)種刪除相關(guān)的總開(kāi)銷(xiāo) 相對(duì)較高。在W下討論中,描述了一種替代方法。
[0043] 現(xiàn)在轉(zhuǎn)至圖4,在方框280中示出了包含段對(duì)象231-239的容器210。一般而言,存儲(chǔ) 在系統(tǒng)內(nèi)的所有段對(duì)象在邏輯上可W存儲(chǔ)在容器中。在所示的單一示例中,容器210包括6 個(gè)段對(duì)象。然而,可W對(duì)容器進(jìn)行配置W包括任意數(shù)量的段對(duì)象一-幾百、幾千或更多。因 此,容器的數(shù)量是段對(duì)象數(shù)量的一小部分。除了 W上所述,在方框290中示出了容器210(圖 2)的容器引用列表170的兩個(gè)實(shí)施例。第一實(shí)施例示為鏈表,而第二實(shí)施例示為表。
[0044] 容器引用列表識(shí)別引用容器內(nèi)的一個(gè)段對(duì)象的每個(gè)文件。容器引用列表170的第 一實(shí)施例描繪為與文件241-244相關(guān)的容器引用210,運(yùn)些文件中的每一個(gè)引用在該容器中 存儲(chǔ)的至少一個(gè)段對(duì)象。如同前文討論的段對(duì)象引用列表,任意適合的數(shù)據(jù)結(jié)構(gòu)都可用于 維護(hù)容器引用列表。在所示的第一實(shí)施例中,描繪了鏈表型結(jié)構(gòu),其中容器標(biāo)識(shí)符210具有 文件標(biāo)識(shí)符鏈表,運(yùn)些標(biāo)識(shí)符引用容器210內(nèi)的段對(duì)象。如前所述,可W采用B-樹(shù)、雙向鏈表 W及其他數(shù)據(jù)結(jié)構(gòu)。具有頭"容器"和"文件"的容器引用列表170包括用于容器210的粗等級(jí) 條項(xiàng)。容器引用列表170僅是為了示例的目的而呈現(xiàn);可W根據(jù)本文所述的方法和機(jī)制采用 其他實(shí)現(xiàn)容器引用列表的方式。還需要注意的是,本文描述的引用列表可W作為一個(gè)或多 個(gè)列表或結(jié)構(gòu)來(lái)維護(hù)。如果維護(hù)多個(gè)列表,給定的列表可能與特定的數(shù)據(jù)集、特定類(lèi)型的數(shù) 據(jù)、數(shù)據(jù)的用戶(hù)、特定備份等相關(guān)聯(lián)。
[0045] 除了鏈型結(jié)構(gòu)外,可W采用更多面向數(shù)組類(lèi)型的結(jié)構(gòu)。例如,在一個(gè)實(shí)施例中可W 采用動(dòng)態(tài)可分配n-維數(shù)組。在圖4的示例中,所示的2-維數(shù)組用于容器210,每個(gè)條項(xiàng)用于每 個(gè)文件241-244。W此方式,在每個(gè)文件的引用列表170中存在一個(gè)粗等級(jí)條項(xiàng),該文件引用 在容器210中存儲(chǔ)的段對(duì)象的至少一個(gè)。4個(gè)文件241-244應(yīng)用容器210中存儲(chǔ)的引用段對(duì) 象。因此,在應(yīng)用列表中存在容器210的4個(gè)粗等級(jí)條項(xiàng)一一一個(gè)條項(xiàng)用于引用該容器內(nèi)存 儲(chǔ)的段對(duì)象的每一個(gè)文件。
[0046] 如上所提及,上文描述的容器引用列表在存儲(chǔ)系統(tǒng)中具有段對(duì)象引用列表的條項(xiàng) 的一小部分。因?yàn)椴捎眠\(yùn)種容器引用存儲(chǔ)列表,現(xiàn)在描述具有更少開(kāi)銷(xiāo)的維護(hù)引用列表的 一種方法。圖5展示了一種用于維護(hù)"面向文件"的容器引用列表的方法的概覽的一個(gè)實(shí)施 例。容器列表?yè)?jù)稱(chēng)是面向文件的,因?yàn)槊總€(gè)容器具有引用該容器中至少一個(gè)對(duì)象的文件的 列表。如前文討論的,遍歷和維護(hù)段對(duì)象引用列表可能需要相對(duì)較多的開(kāi)銷(xiāo)。特別是當(dāng)刪除 文件時(shí),段對(duì)象引用列表的遍歷和更新是相對(duì)耗時(shí)的。作為運(yùn)種方法的替代,W下方法描繪 了一種途徑,在運(yùn)種途徑中常常忽略段對(duì)象引用。W此方式,減少了與維護(hù)運(yùn)種列表相關(guān)的 開(kāi)銷(xiāo)。
[0047] 圖5的方法開(kāi)始于檢測(cè)文件操作(模塊510)。如果該操作不是文件刪除操作(決定 模塊515),那么可W將文件分塊并進(jìn)行捜索W匹配已經(jīng)在系統(tǒng)內(nèi)存儲(chǔ)的對(duì)象(模塊 540)一一運(yùn)就是在去重復(fù)存儲(chǔ)系統(tǒng)中的情況。如果存在一個(gè)已經(jīng)存儲(chǔ)的匹配段對(duì)象(決定 模塊545),文件的識(shí)別被添加到包括該匹配段對(duì)象的容器的容器引用列表(模塊565),并且 如果有該文件的剩余數(shù)據(jù)段要處理(決定模塊570),可W重復(fù)該過(guò)程。另一方面,如果不存 在已經(jīng)存儲(chǔ)的匹配段對(duì)象(決定模塊545),那么可W將數(shù)據(jù)存儲(chǔ)在系統(tǒng)中作為新的段對(duì)象, 并且更新容器應(yīng)用列表W包括用于容器(包括新的段對(duì)象)的文件的標(biāo)識(shí)(模塊550)。
[0048] 如果結(jié)果表明檢測(cè)到的文件操作是文件刪除操作(決定模塊515),那么就從容器 引用列表中刪除文件的標(biāo)識(shí)(模塊530)。應(yīng)當(dāng)注意的是,在一個(gè)實(shí)施例中此時(shí)不更新或維護(hù) 段對(duì)象引用列表。相反,只更新容器引用列表W反映檢測(cè)到的文件。由于在系統(tǒng)中容器遠(yuǎn)少 于段對(duì)象,并且容器引用列表包括段對(duì)象引用列表的條項(xiàng)的一小部分,與更新容器引用列 表相關(guān)聯(lián)的開(kāi)銷(xiāo)遠(yuǎn)少于段對(duì)象列表的開(kāi)銷(xiāo)。在W下討論中,將展示很多示例,運(yùn)些示例示出 了容器和段對(duì)象引用列表的維護(hù)。為了便于說(shuō)明,示例將展示排序格式的列表和條項(xiàng)。然 而,如上文所提及,實(shí)際的實(shí)施例可W是鏈結(jié)構(gòu)、樹(shù)結(jié)構(gòu)或其他方式。另外,盡管運(yùn)種討論可 W將粗和細(xì)條項(xiàng)描繪為單一列表的一部分,但應(yīng)當(dāng)理解的是實(shí)際上可W存在多個(gè)維護(hù)的列 表。
[0049] 現(xiàn)在參見(jiàn)圖6,圖中示出了具有粗和細(xì)等級(jí)條項(xiàng)的用于容器210(圖2)的引用列表 500。如圖4中所示,同時(shí)示出了表和鏈表格式。引用列表500包括用于容器210的粗等級(jí)條 項(xiàng),該容器可W位于備份存儲(chǔ)160中(圖2),并且包括用于容器210內(nèi)存儲(chǔ)的段對(duì)象的細(xì)等級(jí) 條項(xiàng)。在另一個(gè)實(shí)施例中,引用列表500可W包含用于在備份存儲(chǔ)160中存儲(chǔ)的多個(gè)容器的 條項(xiàng)。在又一個(gè)實(shí)施例中,引用列表500可W包含在備份存儲(chǔ)160中存儲(chǔ)的所有容器的條項(xiàng)。 在再一個(gè)實(shí)施例中,去重復(fù)服務(wù)器150(圖2)可W維護(hù)在備份存儲(chǔ)160中存儲(chǔ)的每個(gè)容器的 獨(dú)立引用列表。
[0050] 在每個(gè)文件的引用列表500中存在粗等級(jí)條項(xiàng),該文件引用了存儲(chǔ)在容器210中的 段對(duì)象的至少一個(gè)。4個(gè)文件241-244(圖3)引用了在容器210中存儲(chǔ)的段對(duì)象,因此在引用 列表中存在4個(gè)用于容器210的條項(xiàng),一個(gè)條項(xiàng)用于指向在容器內(nèi)存儲(chǔ)的段對(duì)象的文件的每 一個(gè)。用于容器210的運(yùn)些條項(xiàng)是引用列表500的粗等級(jí)條項(xiàng)。用于段對(duì)象的每一個(gè)的條項(xiàng) 是引用列表500的細(xì)等級(jí)條項(xiàng)。每個(gè)段對(duì)象可W包含引用它的每個(gè)文件的細(xì)等級(jí)條項(xiàng)。如果 段對(duì)象可用于在檢索或恢復(fù)操作過(guò)程中重新創(chuàng)建一個(gè)文件,該文件可W引用此段對(duì)象,或 者W其他方式構(gòu)成組成該文件的數(shù)據(jù)的一部分。
[0051] 在引用列表500中段對(duì)象231包含用于4個(gè)文件(241-244)的4個(gè)細(xì)等級(jí)條項(xiàng),運(yùn)些 文件指向該段對(duì)象。另外,在該列表中段對(duì)象232包含用于文件243和244的2個(gè)文件等級(jí)條 項(xiàng),段對(duì)象233包含用于文件242和244的2個(gè)細(xì)等級(jí)條項(xiàng),段對(duì)象234包含用于文件241-244 的4個(gè)細(xì)等級(jí)條項(xiàng),段對(duì)象235包含用于文件241和243的2個(gè)細(xì)等級(jí)條項(xiàng),段對(duì)象236包含用 于文件241和242的2個(gè)細(xì)等級(jí)條項(xiàng),段對(duì)象237包含用于文件241-243的3個(gè)細(xì)等級(jí)條項(xiàng),段 對(duì)象238包含用于文件242和243的2個(gè)細(xì)等級(jí)條項(xiàng),而段對(duì)象239包含用于文件242的1個(gè)細(xì) 等級(jí)條項(xiàng)。
[0052] 如圖6中所示,細(xì)等級(jí)條項(xiàng)可W緊接在引用列表500中的粗等級(jí)條項(xiàng)之后。在一個(gè) 實(shí)施例中,如果引用列表500包含不止一個(gè)容器的條項(xiàng),那么第一容器的粗和細(xì)等級(jí)條項(xiàng)可 W集合在一起,接著是第二容器的粗和細(xì)等級(jí)條項(xiàng),W此類(lèi)推是容器的其余粗和細(xì)等級(jí)條 項(xiàng)。在另一個(gè)實(shí)施例中,所有容器的粗等級(jí)條項(xiàng)可W集合在一起,接著是所有容器的所有細(xì) 等級(jí)條項(xiàng)。將粗和細(xì)等級(jí)條項(xiàng)集合在一起并組織引用列表500的其他方法是可能的并且是 可W設(shè)想的。
[0053] 現(xiàn)在轉(zhuǎn)至圖7,圖中示出了從存儲(chǔ)系統(tǒng)中刪除了文件243后已經(jīng)更新該列表之后的 容器210的引用列表500。另外,圖中同時(shí)示出了表和鏈表格式。如圖7中所描述,引用列表只 對(duì)粗等級(jí)條項(xiàng)進(jìn)行更新。運(yùn)種引用列表的闊值可W是任意所需的數(shù)值,例如3。因此,當(dāng)指向 容器210的文件的數(shù)量低于3時(shí),引用列表可W切換更新粗和細(xì)等級(jí)條項(xiàng)。在另一個(gè)實(shí)施例 中,闊值可W采用不同的值。在又一個(gè)實(shí)施例中,服務(wù)器150(來(lái)自圖1)可W至少部分地基于 備份存儲(chǔ)160(來(lái)自圖1)中當(dāng)前使用的存儲(chǔ)空間的百分比來(lái)確定闊值。在又一個(gè)實(shí)施例中, 服務(wù)器可W至少部分地基于引用列表中的條項(xiàng)的大小或數(shù)量來(lái)確定闊值??蒞使用任意所 需的條件來(lái)設(shè)定或確定闊值。
[0054] 在已經(jīng)刪