用於優化的籤名比較和數據複製的系統和方法與流程
2023-05-21 10:07:01 3
本申請要求在2015年1月13日提交的美國臨時申請No.62/102,808的權益,其公開內容通過引用被整體併入本文。
技術領域:
本發明涉及數據複製,並且更具體地,涉及用於執行數據儲存備份的籤名比較或其它數據複製操作的系統和方法。
背景技術:
:計算機伺服器和計算機伺服器集群朝向虛擬機不斷移動以提供計算服務。在這種環境中,管理員經常為虛擬機配置遠程備份任務。在遠程備份期間,源虛擬機的數據的快照被複製給目標(例如,遠程數據中心)。在當前的解決方案中,籤名被發送到目標,並且在目標上進行比較,目標通常駐留在WAN連接上。WAN連接通常慢並且昂貴,並且許多其他任務競爭WAN連接上的帶寬。由於單個遠程備份任務可以觸發數百萬計的籤名比較的事實,日益普遍和大規模的備份任務會導致顯著的延時、堵塞WAN連接以及佔用伺服器資源。技術實現要素:提供用於改善的遠程備份操作的系統、方法以及計算機可讀介質,該操作可以減少WAN流量和遠程備份持續時間。響應於遠程備份命令,源網絡節點執行數據集的先前快照和當前快照之間的本地籤名比較。以這種方式,源網絡節點僅需要將本地不匹配的籤名發送到遠程網絡節點。然後遠程網絡節點可以搜索不匹配的籤名,並且向源網絡節點發送標識出不存在於遠程網絡節點上的籤名的響應。源網絡節點隨後發送僅與不存在於遠程網絡節點上的籤名相關聯的數據,以併入到數據集的遠程快照中。根據本公開進行操作的系統特別有益於某些遠程備份使用情況,諸如具有大量的隨機寫使用模式的、大小的範圍高達數百千兆字節或更大的特大虛擬盤(VMDK),其中大百分比的籤名比較將以匹配為結果。系統可以減少顯著百分比的跨WAN發送的遠程籤名比較。由於在遠程籤名比較的數量上的減少,所以系統也減少了總體WAN的利用。另外,系統縮短了跨高延遲WAN環境的遠程備份的持續時間。即使是在低延遲LAN環境中,系統也可以進一步減少完成遠程備份所要求的時間。在一些實施例中,系統包括檢測導致差的性能的使用模式的辨識算法。在辨識這種使用模式時,系統應用不同的備份方法,無論是應用不同的專用備份例程還是默認為標準或常規的備份例程。根據本公開的一個實施例,提供了一種系統,該系統包括源網絡節點和遠程網絡節點,每個節點具有處理器和存儲指令的存儲器,該指令在被處理器執行時使得處理器執行用於在遠程網絡節點上生成位於源網絡節點上的數據集的遠程備份副本的操作,所述操作包括:接收把位於所述源網絡節點上的所述數據集複製到所述遠程網絡節點的命令,所述數據集包括樹型結構文件系統中的數據和元數據的籤名,其中所述文件系統數據和元數據作為對象被存儲在對象倉庫(objectstore)中,每個對象具有全局唯一的內容衍生籤名;響應於所述命令,在所述源網絡節點上訪問所述數據集的先前存儲快照的籤名和所述數據集的當前快照的籤名,其中所述先前快照包括樹型結構文件系統的所述數據和元數據對象的所述籤名的樹,並且其中存儲在所述源網絡節點上的所述先前快照對應於存儲在所述遠程網絡節點處的先前遠程快照;在所述源網絡節點處執行所述先前快照和所述當前快照之間的本地籤名比較以識別在所述先前快照和所述當前快照之間不匹配的一個或多個籤名,其中所述本地籤名比較是從所述樹的根開始的迭代的自上而下比較(top-downcomparison),並且其中不匹配的籤名在所述樹中具有不同內容或不同定位中的至少一個;將不匹配的籤名發送到所述遠程網絡節點;在所述遠程網絡節點上執行對於不匹配的籤名的搜索;從所述遠程網絡節點接收關於不匹配的籤名是否存在於所述遠程網絡節點處的響應;以及如果不匹配的籤名不存在於所述遠程網絡節點處,則把與不匹配的籤名相關聯的數據發送到所述遠程網絡節點以供併入當前遠程快照內。在一個實施例中,源網絡節點和遠程網絡節點跨廣域網(WAN)進行通信。在一個實施例中,不匹配的籤名跨WAN被異步地發送。在一個實施例中,不匹配的籤名在跨WAN發送之前被批處理。在一個實施例中,被批處理的籤名包括來自樹的不同兄弟節點的籤名。根據本公開的另一實施例,提供了一種用於在遠程網絡節點上生成位於源網絡節點上的數據集的遠程備份副本的方法,包括:接收把位於源網絡節點上的數據集複製到遠程網絡節點的命令,所述數據集包括樹型結構文件系統中的數據和元數據的籤名,其中所述文件系統數據和元數據作為對象被存儲在對象倉庫中,每個對象具有全局唯一的內容衍生籤名;響應於所述命令,在所述源網絡節點上訪問所述數據集的先前存儲快照的籤名和所述數據集的當前快照的籤名,其中所述先前快照包括樹型結構文件系統的所述數據和元數據對象的所述籤名的樹,並且其中存儲在所述源網絡節點上的所述先前快照對應於存儲在所述遠程網絡節點處的先前遠程快照;在所述源網絡節點處執行所述先前快照和所述當前快照之間的本地籤名比較以識別在所述先前快照和所述當前快照之間不匹配的一個或多個籤名,其中所述本地籤名比較是從所述樹的根開始的迭代的自上而下比較,並且其中不匹配的籤名在所述樹中具有不同內容或不同定位中的至少一個;將不匹配的籤名發送到所述遠程網絡節點;在所述遠程網絡節點上執行對於不匹配的籤名的搜索;從所述遠程網絡節點接收關於不匹配的籤名是否存在於所述遠程網絡節點處的響應;以及如果不匹配的籤名不存在於所述遠程網絡節點處,則把與不匹配的籤名相關聯的數據發送到所述遠程網絡節點以供併入當前遠程快照內。在一個實施例中,源網絡節點和遠程網絡節點跨廣域網(WAN)進行通信。在一個實施例中,不匹配的籤名跨WAN被異步地發送。在一個實施例中,該方法包括在跨WAN發送之前批處理不匹配的籤名。在一個實施例中,被批處理的籤名包括來自樹的不同兄弟節點的籤名。根據本公開的另一個實施例,提供了一種其中存儲有指令的非暫時性計算機可讀儲存介質,該指令在由處理器執行時使得處理器執行操作,所述操作包括:接收把位於源網絡節點上的數據集複製到遠程網絡節點的命令,所述數據集包括樹型結構文件系統中的數據和元數據的籤名,其中所述文件系統數據和元數據作為對象被存儲在對象倉庫中,每個對象具有全局唯一的內容衍生籤名;響應於所述命令,在所述源網絡節點上訪問所述數據集的先前存儲快照的籤名和所述數據集的當前快照的籤名,其中所述先前快照包括樹型結構文件系統的所述數據和元數據對象的所述籤名的樹,並且其中存儲在所述源網絡節點上的所述先前快照對應於存儲在所述遠程網絡節點處的先前遠程快照;在所述源網絡節點處執行所述先前快照和所述當前快照之間的本地籤名比較以識別在所述先前快照和所述當前快照之間不匹配的一個或多個籤名,其中所述本地籤名比較是從所述樹的根開始的迭代的自上而下比較,並且其中不匹配的籤名在所述樹中具有不同內容或不同定位中的至少一個;將不匹配的籤名發送到所述遠程網絡節點;在所述遠程網絡節點上執行對於不匹配的籤名的搜索;從所述遠程網絡節點接收關於不匹配的籤名是否存在於所述遠程網絡節點處的響應;以及如果不匹配的籤名不存在於所述遠程網絡節點處,則把與不匹配的籤名相關聯的數據發送到所述遠程網絡節點以供併入當前遠程快照內。在一個實施例中,源網絡節點和遠程網絡節點跨廣域網(WAN)進行通信。在一個實施例中,不匹配的籤名跨WAN被異步地發送。在一個實施例中,該非暫時性計算機可讀儲存介質包括附加的指令,當被處理器執行時,該附加的指令使得處理器執行包括在跨WAN發送之前批處理不匹配的籤名的操作。在一個實施例中,被批處理的籤名包括來自樹的不同兄弟節點的籤名。詞彙表下面是在本申請的各種實施例中使用的術語的詞彙表:HA:高可用性。蜂巢(Hive):數據集,即,樹型結構文件系統的數據和元數據。遠程備份作業(或複製作業):追蹤遠程備份的控制平面(ControlPlane)作業。複製任務:針對高延遲鏈路被優化的並且從源網絡節點上的源快照複製大量數據到遠程網絡(目標)節點以供遠程備份的文件系統線程或線程組。線程或線程組在源節點上運行。HA保護備份:具有目標蜂巢的HA對的遠程備份。目標蜂巢的HA對分別被稱為被動主要(passiveprimary)和第三(tertiary)。附圖說明通過參照與以下附圖結合的詳細描述,將更充分地理解本發明,其中:圖1圖示用於在本發明的一個實施例中使用的節點的一個實施例的示意性框圖;圖2圖示數據路徑子系統的一個實施例的示意性框圖;圖3圖示用於在本發明中使用的包括作業系統內核空間的虛擬文件系統的一個實施例的示意性框圖;圖4圖示對象倉庫的一個實施例的主要組成部分的示意性框圖;圖5圖示利用具有文件系統所需要的數據結構(諸如文件、目錄和inode(索引節點)映射)的對象倉庫的文件系統的一個實施例的示意性框圖;圖6圖示現有技術遠程備份系統的示例;圖7圖示根據利用本地籤名比較的本發明的遠程備份系統的實施例;圖8A圖示根據本發明的一個實施例的包括用於遠程備份的先前快照和新快照的數據集的示意性框圖;圖8B圖示用於執行迭代的自上向下簽名比較的示例性方法;圖8C圖示在圖8B中示出的方法的示例性子例程,該子例程用於把被批處理的籤名發送到遠程目標並分析響應;以及圖9圖示示例性計算機系統實施例的示意性框圖。具體實施方式下面詳細討論本公開的各種實施例。雖然討論了具體的實現方式,但是應當理解,這僅是為了圖示的目的。相關領域的技術人員將認識到,在不脫離本公開的精神和範圍的情況下,可以使用其他部件和配置。本公開的附加的特徵和優點將在下面的描述中闡述,並且將從該描述中部分地變得明顯,或者可以通過對本文公開的原理的實踐而習得。本公開的特徵和優點可以藉助於在所附權利要求中特別指出的手段以及組合來實現和獲取。本公開的這些和其它特徵將從下面的描述和所附權利要求中變得更加充分顯然,或者可通過對本文闡述的原理的實踐而習得。應當理解,為了圖示的簡單和清楚,在適當的地方,在不同的附圖之間重複了附圖標記以指示相應或類似的元素。另外,闡述了許多具體細節以便提供對本文所描述的實施例的透徹理解。然而,本領域普通技術人員將理解,可以在沒有這些具體細節的情況下實踐本文所描述的實施例。在其他實例中,還沒有詳細描述方法、過程和組件,以免模糊相關的所描述的相關特徵。附圖未必是按比例的,並且某些部分的比例可以被擴大以更好地圖示細節和特徵。描述不應被認為是限制本文所描述的實施例的範圍。節點系統圖1圖示了節點100的一個實施例的示意性框圖。節點100可以是具有以軟體為中心的架構的超融合基礎設施節點,其緊密地集成計算、儲存、聯網和虛擬化資源以及其他技術。例如,節點100可以是市場上可購得的系統,諸如可從位於WestboroughMAUSA的SimpliVity公司獲得的併入有文件系統的節點100可以託管多個客戶虛擬機(VM)102、104以及106,並且可以被配置為產生虛擬機的本地和遠程備份以及快照。在本發明的實踐中,多個這種節點可以被布置在網絡中,如下所述。為此,節點100可以在管理程序110上方包括虛擬設備108。虛擬設備108可以包括與控制平面114和數據路徑116通信的虛擬文件系統112。控制平面114可以應付在節點100內的應用和資源之間的數據流。數據路徑116可以在虛擬文件系統112和作業系統(OS)118之間提供適合的I/O接口,並且可以使能諸如數據壓縮、去重複和優化的特徵。節點100還可以在管理程序110以下包括多個硬體組件。例如,節點100可以包括儲存裝置120,其可以是具有多個硬碟驅動器(HDD)122和/或固態驅動器(SSD)124的RAID儲存裝置。節點100還可以包括存儲器126(例如,RAM,ROM,快閃記憶體等)以及一個或多個處理器128。最後,節點100可以包括無線和/或有線網絡接口組件130以使能與其它節點的通信。參照圖2,數據路徑116被進一步分解。如所示的那樣,數據路徑116包括複製管理器200,其被配置為使用籤名比較來執行遠程備份,如參照圖7所詳細描述的那樣。數據路徑116還包括與控制平面114通信的文件系統202。文件系統202諸如通過實例化文件系統組件、維護目錄和那些目錄內的文件等來負責管理數據路徑116內的文件系統組件。文件系統202還確定節點的I/O處理能力,並通過將數據寫從主要節點(例如,節點100)鏡像到次級節點來實現高可用性。文件系統202進一步為數據路徑116內的各種組件提供同步和異步數據傳送接口二者。如參照圖3~圖4詳細討論的那樣,對象倉庫204和儲存管理器206負責數據路徑116和I/O子系統208之間的數據對象I/O操作。虛擬文件系統現在參照圖3,示出的是圖示用於在本發明中使用的虛擬文件系統的一個實施例的示意性框圖,該虛擬文件系統包括作業系統內核空間,如在2013年7月2日授權給Beaverson等人的美國專利No.8,478,799中所描述的那樣,該專利的公開通過引用被整體併入本文中。如所示的那樣,各種儲存組件可以被包括在作業系統內核301中。儘管從Linux環境中繪製,但是該圖可以應用於諸如以及其他Unix類作業系統的其他作業系統。示出了304式文件系統的示例,其中可以不失一般性地是任何數量的文件系統(諸如ResierFs、Exts、btrfs以及zfs)中的任何一個。虛擬文件系統(VFS)層303被用來抽出文件系統的許多共同特徵,並且向用戶空間300和其他組件提供一致的接口360。VFS303可以具有明確定義的「下邊緣」接口350a、350b,任何文件系統可以使用該接口來被VFS303層辨別出。在實踐中,通常有許多文件系統在並行地工作。在該示例中,文件系統304和(命名空間)文件系統307可以並行地運行。文件系統一般位於由塊驅動器305實現的塊儲存抽象的頂部。塊儲存可以在邏輯單元號LUN本地儲存裝置309上,或者它可以在使用iSCSI協議的遠程LUN上。塊驅動器305還可以在作業系統中具有明確定義的接口,諸如連接到對象倉庫308的接口356a、連接到DICE庫310的接口356b以及連接到304的接口356c。在該實施例中,文件系統包括堆疊在對象倉庫308的頂部的(命名空間)文件系統307(例如,如在授權給Beaverson等人的美國專利No.8,478,799中所描述的那樣)。在文件系統307和對象倉庫308之間的接口352可以是諸如ANSIT-10對象標準的各種工業標準對象接口中的任一個,或可以是基於文件系統307和/或對象倉庫308要求的非標準對象接口。對象倉庫308可以被分區使得常用功能的庫(摘要、索引、壓縮,加密(DICE)庫310)被抽出,並且可以通過接口353被連接到DICE庫310。庫310可以完全用軟體實現,或者利用各種硬體加速313技術(其中一個被示出)。如果使用硬體加速器313,則該加速器可以具有兩大類的服務:一類用於計算密集型操作311(壓縮、加密、指紋識別),另一類用於諸如索引的存儲密集型操作312。硬體實現方式可以具有一類或另一類或兩者。對象倉庫308創建可以位於原始LUN、磁碟上的分區或大文件之上的對象容器。它還可以使用諸如iSCSI或其他遠程訪問塊協議(FCoE是另一個示例)的協議,沿著接口355經由網絡堆棧306來引用容器。網絡文件系統(NFS)302位於網絡堆棧306的頂部(經由接口354),並且NFS被連接到VFS303。網絡堆棧306經由接口360被連接到LUN309,並經由接口359被連接到雲310。參照圖4,對象倉庫308被進一步分解。對象倉庫308包含二進位不透明對象,其示例是P401,Q402和R403。對象可以具有不同的大小,儘管在優選實現方式中,它們是2的冪。對象駐留在容器中的某個偏移處,偏移可以是字節偏移或者以最小對象大小為模的偏移(即,如果最小對象是512位元組,則偏移將乘以512以得到字節偏移)每個對象具有名稱,這裡稱為籤名或指紋,其是對象的整個內容的加密摘要(散列)。例如,在圖4中,由H(p)、H(q)以及H(r)指示對象名稱(籤名)。以這種方式,可以包括數據和/或元數據的每個對象可以具有從其數據的內容衍生出的全局唯一籤名。索引結構404保持追蹤(映射)對象名稱、對象位置以及對象引用。在該去重複文件系統和對象倉庫中,每個唯一數據或元數據對象的單個副本可以被存儲,由其籤名來標識。對象的引用在每次寫對象時遞增。換句話說,雖然OmniStack文件系統307可以生成它認為的相同對象的許多副本,然而對象倉庫308僅存儲一個,但保持跟蹤命名空間實際上認為它有多少副本。這樣做,對於系統來說,去重複是自然的。對象倉庫308可以具有幾個接口類352a-d。讀、寫、刪除接口352a執行所聲明的功能。在這種情境下,對象刪除實際上是對象引用計數的減少。只有當引用計數走到0時,才會釋放對於對象倉庫內的對象的儲存。索引操作352b使能按名稱枚舉對象、引用計數調整以及按名稱查找對象。對象倉庫308具有事務語義(ACID屬性),並且事務邊界通過事務操作352c被管理。除了列出待定的事務以外,這還包括啟動、提交以及中止事務。供應接口352d使能創建、刪除、合併、拆分以及聚合對象倉庫。索引404是其主鍵為對象名稱(籤名)的映射。在系統中對於每個對象都有索引條目。每個條目包含:a)對象的內容的籤名。籤名由內容的加密摘要(散列)生成。b)指示對象被引用了多少次的引用計數。引用計數可以使用飽和運算來節省空間。例如,它可以僅使用8位來追蹤引用:引用計數可以被增加和遞減,但是如果它等於或超過255,則計數「飽和」,並且不允許進一步遞減。因為對象具有引用計數,所以只要有同樣的對象,對於系統來說,去重複是自然的。c)物理定位符。如果對象在物理磁碟上,則這可以是邏輯塊號LBN。如果對象由託管提供商(例如,AmazonS3)託管,則其可以是對雲對象的引用。d)用於各種使用的標誌。一個標誌指示對象是否被存儲壓縮,另一個指示對象是否被加密。其他標誌是可用的,但沒有被分配給特定使用。分配映射420是用於在對象容器406上的分配塊的位圖。對象容器406是可隨機尋址的永久性儲存抽象。示例包括跨廣域網(WAN)(即,在諸如大於60英裡的距離的大地理距離上延伸的電信網絡或計算機網絡)的原始LUN、文件、磁碟上的分區或iSCSI裝置。對象容器406可以具有幾個組件407-411(未按比例示出)。除了存在於已知偏移處的容器描述符塊407之外,其他組件的順序並不重要。對象索引408可具有容器駐留部分或索引404的部分,或兩者,諸如B樹或另一樹型結構。分配映射420也可以部分地在磁碟上和在索引404中。可以利用尋呼技術來完成在兩者之間的遷移。當對象倉庫被修改時,事務日誌411被保留在永久性儲存裝置上。日誌追蹤所有對象活動,包括讀、寫、刪除、引用調整等等。日誌被按照時間順序保留,並且周期性地滾動到主索引408中。在搜索主索引之前,對象活動必須首先「命中」日誌。每個日誌條目包括操作類型352a、352b、352c、352d、指紋、引用計數、事務ID或時期數量(epochnumber)以及池位置。日誌條目在結構上與索引條目相似,但添加了事務ID。全局對象命名使得對象倉庫能夠四處移動對象,同時仍然維持一致的命名和訪問。移動對象的原因包括:a)為了性能原因,在物理磁碟上移動相關對象以使其彼此接近。b)跨故障邊界複製對象。這可以跨兩個分開的本地磁碟、一個本地磁碟和一個遠程磁碟、或任何多個上述磁碟。複製還可以給予讀性能益處。複製還可以包括諸如利用擦除代碼來拆分對象。c)對對象的後臺操作,諸如壓縮、解壓縮、加密、解密。d)根據對象的使用頻率或預期使用頻率而移動對象。圖5圖示一起被分組到數據結構中的一組對象的一個實施例的示意性框圖,該數據結構(本文中被稱為「hnode」)可以被專門化為文件系統所需要的其他數據結構,諸如文件、目錄和imap。如本文所提及的,hnode是將內容綁定在一起的數據結構,諸如文件。有時內容可以非常大(許多GB),不適於連續地在磁碟或永久性介質上。將內容解體,並作為離散單元存儲。在傳統文件系統的情況下,這將是磁碟上的塊。在本公開中,這些是對象名稱(籤名)。hnode在映射結構中保留所有對象名稱的列表。線性列表是這種映射結構的一個示例,但是更複雜的間接表也是可以的。hnode包括標識對象的內容的對象名稱(籤名)。因此,hnode本身具有明確定義的全局唯一的名稱或籤名(其內容的散列)。如圖5所示,hnode500是可隨機尋址的內容序列,與文件相似。如何詮釋內容取決於情境。hnode可以被進一步專門化為文件、目錄和inode映射(以下進一步討論的imap)。在面向對象編程的說法中,類文件、目錄和inode映射(imap)是從基類hnode衍生出的。文件504可以是瘦包裝器,其使得hnode顯現為可以被打開、關閉、讀、寫等等的正常文件。目錄505是hnode500的另一種詮釋。目錄505是文件系統inode號(整數)到文件名稱(字符串)的映射501。映射可以採取各種形式,包括但不限於線性列表、B樹、散列映射、其他樹型結構等。如果映射501完全在存儲器中,則可以將該映射串行化和解串行化。imap(「inode映射」)502將文件系統inode號(來自目錄505)翻譯成對象摘要(即,作為對象內容的散列的「摘要」,與本文中的「籤名」相同)。對象可以表示hnode(並且因此,通過擴展,表示文件、目錄或其他imap)、諸如超級塊的結構、或諸如與虛擬機相關聯的數據的其他數據。對於已知的對象,imap502可以具有預留的位置,諸如索引0、索引1等等。示例包括先前的imap(一個或多個)、文件系統超級塊等等。一般地,imap502是inode號和對象籤名(摘要)之間的映射(轉換)。這使命名空間文件系統能夠適應(利用)典型文件系統的inode號。通過使用該間接表,inode號可以保持不變,但是相關聯的對象名稱(籤名)可以隨著對應於inode號的文件數據和元數據改變而改變。由於imap本身是對象,該名稱也將隨著文件系統被修改而改變。在該實施例中,文件系統的所有數據和元數據都是對象,每個都具有全局唯一的內容衍生籤名,並且每個文件系統目錄是對於包括文件構造(即,文件的目錄)的對象的籤名的樹。與傳統文件系統相似,在imap的情況下,文件系統樹的根可以在已知的inode號處(參見imap502中的針對摘要(根)的索引2)。以這種方式,在時間t處的imap的籤名基本上表示文件系統在時間t處的完整「快照」。增加此籤名下的每個可見對象的引用計數會鎖定快照,並且會阻止它被刪除,而不論其他文件系統活動如何。一旦創建了快照籤名後,可以繼續在文件系統(可寫的快照)上工作,或者將其本地存儲以創建備份供將來使用。快照籤名還可以被發送到、並存儲於位於不同的對象倉庫上的另一個系統(在遠程網絡節點上)處,以創建遠程備份。如果對象倉庫不能解決特定籤名的讀請求,只要它知道其他對象倉庫,則它可以將請求轉發到那些其他對象倉庫。因此,快照的籤名可以移動到其對象倉庫可能不完全託管所有的快照的數據(對象)的系統,但是經由剛剛描述的機制,快照的籤名仍然是完全一致和可用的。已經公開了可以在本發明中利用的計算系統和文件儲存系統的各種組件,本公開現在提供使用籤名比較來創建遠程備份的更詳細的描述。現有技術遠程備份系統圖6圖示了用於執行遠程複製的已知系統600和方法。在系統600中,控制平面可以啟動複製作業,該複製作業基本上在源網絡節點602上的文件系統中產生複製任務線程或線程組。在複製任務開始之前,控制平面可以準備源網絡節點602以及一個或多個遠程目標網絡節點,諸如目標節點604、606。在源節點602上,控制平面可以打開蜂巢(數據集)607作為主要。由此,系統600可以停頓和匯總(rollup)數據集607。控制平面然後可以採取數據集607的快照,以產生作為主要而打開的數據集697的新快照主要608。新快照608被視為源蜂巢或源數據集,並且包括用於遠程備份的與新快照相關聯的數據和元數據對象的籤名樹。在目標節點604上,控制平面可以打開空的被動主要蜂巢(數據集)610作為主要。控制平面還可以將數據集610添加為關於源數據集608的遠程備份的接收者。在目標節點606上,控制平面可以打開空的第三蜂巢(數據集)612作為次級,並且可以將數據集612添加為關於數據集610的次級副本。一旦控制平面已經建立了節點602、604和606,與新快照608相關聯的籤名在WAN614上被發送到目標節點604。與新快照608相關聯的籤名也從目標節點604被發送到目標節點606(例如,在LAN、WAN上等)。然後,目標節點604可以搜索現有數據616以確定籤名中的哪些(如果有的話)存在於目標節點604上。相似地,在一些情況下,目標節點606可以搜索現有數據618以確定籤名中的哪些(如果有的話)存在於目標節點606上。在完成搜索操作之後,目標節點604可以向源節點602發送標識出不存在於目標節點604和/或目標節點606上的籤名的響應。然後,源節點602可以在WAN614上發送與不存在的籤名相關聯的數據到目標節點604。然後,所發送的數據可以被併入到數據集610、612中以創建新快照608的遠程備份(一個或多個)。一旦完成複製任務,控制平面會關閉數據集608、610以及612。具有本地籤名比較的遠程備份系統圖7圖示了根據本發明的一個實施例的使用籤名比較來創建遠程備份的系統700。與圖6的現有技術的系統和方法相比,這種新的系統和方法在時間和網絡資源的利用方面明顯更有效。在系統700中,控制平面可以響應於執行遠程備份的請求而啟動複製作業。啟動複製作業基本上在本地源網絡節點702上的文件系統中產生複製任務線程或線程組。在複製任務開始之前,控制平面可以準備源網絡節點702和一個或多個遠程目標網絡節點,諸如目標節點704、706。在源節點702上,控制平面可以打開蜂巢(數據集)707作為主要。由此,系統700可以停頓和匯總數據集707。然後,控制平面可以採取數據集707的快照,以產生作為主要而打開的數據集707的新快照主要708。新快照708被視為源蜂巢或源數據集,並包括用於遠程備份的與新快照相關聯的數據和元數據對象的籤名樹。控制平面還把先前快照主要720打開為主要。一旦打開,系統700可以確定先前快照主要720是否包括最新的遠程備份的快照(即,先前快照)及其相關聯的數據、元數據、籤名等。如果它不包括(例如,先前快照不存在),則系統700回退到用於遠程備份操作的常規複製作業(例如,圖6)。在目標節點704上,控制平面可以打開空的被動主要蜂巢(數據集)710作為主要。控制平面還打開具有最新備份(即,對應於先前快照720的備份)的根籤名的蜂巢(數據集)722(被稱為先前快照被動主要722)作為主要。控制平面可以添加數據集710作為關於新快照708的遠程備份的接收者。在目標節點706上,控制平面可以打開空的第三蜂巢(數據集)712作為次級。控制平面還打開具有最新遠程備份的根籤名的蜂巢(數據集)724(被稱為先前快照第三724)作為次級,並且可以將數據集712添加到被動主要數據集的副本集作為次級。數據集707、708、710、712、720、722和724中的每一個包括樹型結構文件系統的數據和元數據的籤名。文件系統數據和元數據作為對象被存儲在對象倉庫中,每個對象具有全局唯一的內容衍生籤名,如先前所述。在設置源節點和目標節點之後,系統700驗證先前快照722、724的根籤名與先前快照720的根籤名匹配。當最新的遠程備份存在於先前快照720中時,基於之前的複製操作,其數據應已經存在於在目標節點704、706上的先前快照722、724中。因此,源節點702可以首先在新快照數據集708和先前快照720之間本地執行籤名比較。只有那些本地不匹配的籤名比較需要跨WAN714被發送到遠程目標704(以及第三目標706)。然後,遠程目標可以對籤名進行本地檢查,因為來自其他數據集的籤名可能已經存在(被存儲)於遠程節點上。接下來,系統700通過首先比較新快照708的元數據籤名與先前快照720的元數據籤名來同步元數據。該比較從根籤名開始並以迭代方式(例如,使用深度優先技術、寬度優先技術或其組合)沿樹結構向下移動。對於每個不匹配的籤名,系統700可以在WAN714上向目標節點704、706發送籤名元數據。由此,系統700檢查在新快照708上的蜂巢的子樹高度是否匹配先前備份720的蜂巢的子樹高度。如果不匹配,則系統700回退到用於該特定文件的常規複製作業(例如,圖6)。否則,從根籤名開始並以自上而下的迭代方式進行,系統700本地比較新快照708的籤名與先前快照720的籤名。以下參考圖8A、8B和8C而更詳細地描述這種比較過程。如果籤名本地匹配,則系統跳過該籤名,因為相應的文件數據和/或元數據在目標節點704、706上必然匹配。如本文所敘述的那樣,如果籤名在數據集樹內具有相同內容(例如,名稱)以及定位,則認為籤名匹配。如果籤名本地不匹配(即,不同的內容或定位),則系統700可以在WAN714上發送用於在目標節點704、706處進行比較的籤名內容和定位,以查看來自其他數據集的數據和/或元數據是否已經遠程地存在。當向目標節點704、706發送籤名以進行比較時,一種方法是在單個網絡消息中僅發送屬於相同樹節點的(一個或多個)籤名(從源節點到目標節點),因此在數據集樹上逐個節點地進行處理。因此,屬於不同兄弟樹節點的籤名將在分開的網絡消息中被發送。這可能造成例如在一個網絡消息中發送非常少量的籤名(例如,一個)。因為與被發送的籤名的相對小的大小相比大的每個消息的開銷,並且因為大量的具有長的往返時間的消息,特別是跨WAN的消息,這種方法可能更低效。因此,在一個實施例中,系統700可以批處理單個消息中的許多籤名(甚至屬於不同兄弟樹節點的籤名)。在這樣做時,系統700將消息的發送與數據集樹的逐節點處理解耦。要發送的籤名可以被緩衝,然後取決於多少籤名可以納入緩衝器中而被打包並在一個網絡消息中發送。系統700可以異步地發送經批處理的籤名到目標節點以進行比較。一旦在目標節點704處接收到籤名,就可以將它們從目標節點704發送到第三目標節點706(例如經LAN,WAN等)。這樣做允許遠程備份提供高可用性。系統700已經確定沒有籤名匹配(在相同樹位置處)遠程地存在於(一個或多個)目標處,因為它已經本地匹配。因此,目標節點704、706可以搜索現有數據716、718以確定籤名是否存在(被存儲)於遠程節點處。如果在目標節點704、706中的任一個上發現籤名,則系統700完成處理該籤名,因為相應的文件數據在目標節點上是可用的。否則,該籤名沒有被遠程地存儲,並且目標節點704可以向源節點702發送標識出該籤名不存在於目標節點704、706上的響應。在一些情況下,目標節點704可以批處理對源節點702的響應。如果遠程不存在的籤名對應於元數據籤名,則系統700可以繼續比較其數據集樹子籤名。如果它對應於文件數據籤名,則系統700可以批處理與籤名相關聯的數據以發送到目標節點704。系統可以異步地發送經批處理的數據到目標節點704,目標節點704在一些情況下可以將數據傳送到目標節點706。所發送的數據可以被併入到目標節點704、706處的遠程備份(即,數據集710、712)中。本發明在其中(與先前的快照的)大量籤名比較將得到匹配的結果的遠程備份方面是特別有益的。在這種情況下,系統700減少在WAN714上的流量,並且還可以由於利用大量的本地籤名匹配來避免高延遲而減少備份時間。額外的籤名比較的確切效果將取決於在源節點702上的數據集元數據讀以及其他因素。初步測試表明,具有大量隨機寫(諸如來自IoMeter)的虛擬機磁碟(VMDK)的備份與優選使用情況相一致。一個示例是使用用可去重複(dedupable)可壓縮數據進行的IoMeter64K隨機寫的備份。每個備份之前都有20分鐘的寫。第一次備份時,在遠程數據倉庫(目標節點)上沒有數據。此場景展示了有多少籤名比較在遠程數據中心上匹配。下表圖示了與先前方法相比,當前公開系統的潛在益處。表1:使用用可去重複可壓縮數據進行的IoMeter64K隨機寫的備份備份1備份2所處理信號37,949,42431,016,232所匹配信號30,616,94629,634,442匹配百分比80.0%,95.5%時間01:04:0000:14:00大小440GB440GB所發送37.9GB1GB作為非限制性示例,以下是用於實現當前公開系統的一部分的示例接口:voidFileSystemManager::replicatePeer(constHiveId&hiveId,constNodeId&target,constRebuildComplete&finished,constHiveId&prevBackupHiveId=NULL_GUID);如果prevBackupHiveId是NULL_GUID,則系統可以對於整個遠程備份操作按照常規方式來執行文件系統複製。否則,如果提供(本地存儲)了prevBackupHiveId(快照),則系統可以嘗試使用先前備份快照來執行本地籤名比較。在調用該API之前,在源節點上,先前的備份快照和數據集必須已由控制平面作為主要打開,並且必須在複製期間保持是打開的。此外,目標數據集(例如,被動主要數據集和第三數據集)應已經被控制平面設置為與先前備份快照相同的根籤名。否則,文件系統複製將回退到用於遠程備份操作的常規複製作業。可以修改API以在沒有提供數據集或快照時首先檢查所理解或假定的默認先前備份數據集或快照。文件系統假定在複製期間在先前備份數據集上沒有並發I/O,與關於源數據集的假定相似。文件系統可以允許控制平面從相同快照運行多個複製。對先前備份快照或數據集的任何寫都可能導致將不正確的數據備份到目標數據集。在一個實施例中,系統可以在源節點上保持最新的遠程備份的快照,並確保後續遠程備份去往相同的目標節點對。在源節點上,系統應打開最新的遠程備份快照或數據集(如果一個存在的話),並將蜂巢ID傳遞(或以其他方式指示)給svtfs::FileSystemManager::replicatePeerAPI。在複製期間,此數據集應保持是打開的,並且文件系統假定沒有對其的並發I/O,或至少沒有寫。在目標被動主要節點和目標三級節點上,系統打開一個新的空數據集,將數據集的根籤名設置為最新的遠程備份的根籤名(在源上調用svtfs::FileSystemManager::replicatePeerAPI之前)。圖8A圖示了示例性數據集800,其包括與關聯於最新的遠程備份(即,先前快照)的數據和元數據對象對應的籤名樹。另外,圖8A示出數據集802,其包括與關聯於旨在用於遠程備份的新快照的數據和元數據對象對應的籤名樹。如所示的那樣,數據集800、802內的每個籤名形成在各自樹中的單獨節點。例如,籤名「1」和「10」分別在數據集800、802的最高層級(被指示為層級1(根))處形成根樹節點804和818。從根節點804、818分支出的是位於數據集800、802的中間層級(被指示為層級2)處的多個子樹節點(即,節點806、808、820以及822)。最後,從節點806、808、820以及822中的每一個分支出的是位於數據集800、802的底層級(被指示為層級3)處的多個子樹節點(即,節點810、812、814、816、824、826、828以及830)。因為節點810、812、814、816、824、826、828以及830沒有進一步的元數據子節點(即,它們包括它們各自的樹的底部),所以它們被稱為葉樹節點。為了確定新快照和先前快照之間的差異,可以執行先前快照的籤名和當前快照的籤名之間的迭代的自上向下簽名比較,如圖8中所圖示的那樣。在圖8B中描述的方法不旨在是限制性的,並且可替代實施例可以在執行籤名比較時使用深度優先技術、寬度優先技術或其組合。為了清楚說明,相關於被配置為實踐該方法的系統(例如,系統700)並參照在圖8中所示的數據集800、802來描述圖8B中所描述的方法。該方法開始於在步驟850中將新快照的根樹節點籤名附加到需要被比較的樹節點籤名的列表。例如,數據集802中的根樹節點818的籤名(「10」)可以被附加到需要被比較的樹節點籤名的列表。接下來,在步驟852處,系統(例如,系統700)可以從需要被比較的樹節點籤名的列表中移除第一項,並且可以執行新快照的樹節點籤名和先前快照的對應的子樹節點籤名之間的本地比較。例如,在數據集802中的根樹節點818的籤名(「10」)可以被從列表中移除,並且可以在本地(例如,在系統700中的源702上)與在數據集800中的根樹節點804的籤名(「1」)進行比較。基於本地比較,系統700可以確定新快照中的籤名的內容和定位二者是否匹配先前快照的籤名的內容和定位二者(步驟854)。如果籤名匹配,則系統700可以確定對於該籤名(或其子籤名,如果有的話)不需要進一步的比較,並且可以前進到步驟860而不用將籤名發送到遠程目標。例如,因為在數據集802中的子樹節點820的籤名(「2」)在樹中的內容以及定位兩方面都與數據集800中的子樹節點806的籤名(「2」)匹配,所以系統可以確定在節點820中的該籤名(「2」)以及在葉節點824和826中的籤名(「4」)和(「5」)不需要被發送到遠程目標(例如,目標節點704、706)。如果在步驟854中簽名不匹配,則系統700可以在步驟856中批處理籤名以發送到遠程目標(例如,系統700中的目標節點704、706)。在批處理要發送到遠程目標的籤名之後,系統700可以確定批處理是否已滿(步驟858)。如果批處理具有用於至少再多一個籤名的空間,則系統700可以前進到步驟860。否則,如果批處理是滿的,則系統700可以移動到圖8C中圖示的子例程中,並且可以把經批處理的籤名(同步地或異步地)發送到遠程目標(步驟864)。在步驟866處,系統700可以從遠程目標接收標識所發送的籤名在遠程目標處的狀態(即,籤名是否存在於遠程目標上)的響應。由此,系統700可以選擇在響應中被標識的籤名以供評估(步驟868),並且可以確定該響應是否將所選擇的籤名標識為存在(步驟870)。如果響應指示所選籤名遠程地存在,則系統確定其不需要向遠程目標發送與該籤名相關聯的數據,並且可以前進到步驟878。否則,如果所選擇的籤名沒有遠程地存在,則系統700可以在步驟872中確定與所選擇的籤名相關聯的樹節點是否處於葉層級(例如,在圖8A中的層級3)。如果所選擇的籤名的樹節點處於葉級別,則系統700可以將與該籤名相關聯的數據發送到遠程網絡節點以併入到遠程快照內(步驟874),並且可以繼續到步驟878。如果所選擇的籤名不對應於葉節點,則系統700可以將與所選擇的籤名相關聯的子樹節點的(一個或多個)籤名附加到需要被比較的籤名的列表(步驟876)。由此,系統700可以前進到步驟878。在步驟878處,系統700可以確定其是否已經評估了來自目標節點的響應中所標識的所有籤名。如果不是,則系統700可返回到步驟868以選擇新籤名並重複上述過程。否則,系統700可以行進到步驟860。返回來參照圖8B,在步驟860處,系統700可以確定需要被比較的樹節點籤名的列表是否為空。如果列表為空,則系統700可以指示比較完成(步驟862)。否則,如果列表不為空,則系統700可以返回到步驟852,並且可以重複該比較過程,直到系統700確定新快照和先前快照之間的籤名比較完成。計算機系統架構參照圖9,示例性系統和/或計算裝置900包括處理單元(CPU或處理器)920和系統總線910,系統總線910耦接各種系統組件,系統組件包括系統存儲器930,諸如對於處理器920的只讀存儲器(ROM)940和隨機存取存儲器RAM)950。系統900可以包括與處理器920直接連接、緊密靠近或集成為處理器920的一部分的高速存儲器的高速緩存922。系統900將來自存儲器930和/或儲存裝置960的數據複製給高速緩存922以供處理器920快速訪問。以這種方式,高速緩存提供了避免處理器920在等待數據時的延時的性能提升。這些和其他模塊可以控制或被配置為控制處理器920執行各種操作或動作。其他系統存儲器930對於使用也是可用的。存儲器930可以包括具有不同性能特性的多種不同類型的存儲器。可以理解,本公開可以在具有多於一個處理器920的計算裝置900上或在聯網在一起的計算裝置的組或群集上操作,以提供更大的處理能力。處理器920可以包括任何通用處理器和硬體模塊或軟體模塊,諸如存儲在儲存裝置960中的模塊1962,模塊2964和模塊3966,其被配置為控制處理器920以及軟體指令被併入處理器中的專用處理器。處理器920可以是包含多個核或處理器、總線、存儲器控制器、高速緩存等的自給式計算系統。多核處理器可以是對稱的或非對稱的。處理器920可以包括多個處理器,諸如在不同插槽中具有多個物理上分開的處理器的系統,或者在單個物理晶片上具有多個處理器核的系統。相似地,處理器920可以包括位於多個分開的計算裝置中但是諸如經由通信網絡而一起工作的多個分布式處理器。多個處理器或處理器核可以共享諸如存儲器930或高速緩存922的資源,或者可以使用獨立資源來操作。處理器920可以包括狀態機、專用集成電路(ASIC)或包括現場可編程門陣列的可編程門陣列(PGA)中的一個或多個。系統總線910可以是包括存儲器總線或存儲器控制器、外圍總線以及使用各種總線架構中的任一種的本地總線的幾種類型的總線結構中的任一種。存儲在ROM940等中的基本輸入/輸出(BIOS)可以提供幫助在計算裝置900內的元件之間傳送信息(諸如在啟動期間)的基本例程。計算裝置900還包括儲存裝置960或計算機可讀儲存介質,諸如硬碟驅動器、磁碟驅動器、光碟驅動器、磁帶驅動器、固態驅動器、RAM驅動器、可移動儲存裝置,廉價磁碟冗餘陣列(RAID)、混合儲存裝置等。儲存裝置960可以包括用於控制處理器920的軟體模塊962、964、966。系統900可以包括其他硬體或軟體模塊。儲存裝置960通過驅動接口連接到系統總線910。驅動器和相關聯的計算機可讀儲存裝置為計算裝置900提供計算機可讀指令、數據結構、程序模塊以及其他數據的非易失性儲存。在一個方面,執行特定功能的硬體模塊包括存儲在與必要的硬體組件(諸如處理器920、總線910、顯示器970等)連接的有形計算機可讀儲存裝置中的用於實施特定功能的軟體組件。在另一方面,系統可以使用處理器和計算機可讀儲存裝置來存儲指令,當指令被處理器執行時,使得處理器執行操作、方法或其他特定動作。可以取決於裝置的類型(諸如裝置900是小型裝置、手持式計算裝置、臺式計算機還是計算機伺服器)來修改基本組件以及恰當的變化。當處理器920執行指令以執行「操作」時,處理器920可以直接執行操作和/或促進、引導另一個裝置或組件或者與另一個裝置或組件合作來執行操作。儘管本文描述的示例性實施例採用硬碟960,但是也可以在示例性操作環境中使用可以存儲可由計算機訪問的數據的其他類型的計算機可讀儲存裝置,諸如磁帶盒、快閃記憶體卡、數字多功能盤(DVD)、卡盤、隨機存取存儲器(RAM)950、只讀存儲器(ROM)940、包含比特流的電纜等。有形計算機可讀儲存介質、計算機可讀儲存裝置或計算機可讀存儲器裝置明確地排除了諸如暫態波、能量、載波信號、電磁波和信號本身的介質。為了使能與計算裝置900的用戶交互,輸入裝置990表示任何數量的輸入機構,諸如用於語音的麥克風、用於手勢或圖形輸入的觸敏屏幕、鍵盤、滑鼠,運動輸入,語音等等。輸出裝置970還可以是本領域技術人員已知的許多輸出機構中的一個或多個。在一些實例中,多模式系統使用戶能夠提供多種類型的輸入以和計算裝置900通信。通信接口980一般支配和管理用戶輸入和系統輸出。對於在任何特定硬體布置上的操作沒有限制,因此所描繪的基本硬體可以容易地被隨著被開發而改進的硬體或固件布置替代。為了清楚說明,示例性系統實施例被呈現為包括單獨的功能塊,其包括被標記為「處理器」或處理器920的功能塊。這些塊表示的功能可以通過使用共享或專用的硬體來提供,硬體包括但不限於能夠執行軟體和硬體的硬體,諸如專用來作為在通用處理器上執行的軟體的等同物來操作的處理器920。例如,圖9中呈現的一個或多個處理器的功能可以由單個共享處理器或多個處理器提供。(術語「處理器」的使用不應該被領會為專有地指能夠執行軟體的硬體)。示例性實施例可以包括微處理器和/或數位訊號處理器(DSP)硬體、用於存儲執行以下描述的操作的軟體的只讀存儲器(ROM)940,以及用於存儲結果的隨機存取存儲器(RAM)950。還可以提供超大規模集成(VLSI)硬體實施例以及與通用DSP電路組合的定製VLSI電路。各種實施例的邏輯操作被實現為:(1)在通用計算機內的可編程電路上運行的計算機實現的步驟、操作或過程的序列;(2)在專用可編程電路上運行的計算機實現的步驟、操作或過程的序列;和/或(3)可編程電路內的互連機器模塊或程序引擎。在圖9中示出的系統900可以實踐所敘述的方法的所有或部分,可以是所敘述的系統的一部分,和/或可以根據在所敘述的有形計算機可讀儲存裝置中的指令進行操作。這種邏輯操作可以被實現為模塊,其被配置為控制處理器920根據模塊的編程來執行特定功能。例如,圖9圖示3個模塊,即Mod1962、Mod2964和Mod3966,它們是被配置為控制處理器920的模塊。這些模塊可以被存儲在儲存裝置960上並在運行時被加載到RAM950或存儲器930中,或者可以被存儲在其他計算機可讀儲存裝置位置中。示例計算裝置900的一個或多個部分,高達並包括整個計算裝置900,可以被虛擬化。例如,虛擬處理器可以是軟體對象,其根據特定指令集來執行,甚至在與虛擬處理器具有相同類型的物理處理器不可用時也如此。虛擬化層或虛擬「主機」可以通過將虛擬化操作轉化為實際操作來使能一個或多個不同的計算裝置或裝置類型的虛擬組件。然而,最終每個類型的虛擬化硬體由一些底層的物理硬體實現或執行。因此,虛擬化計算層可以在物理計算層之上操作。虛擬化計算層可以包括虛擬機、覆蓋網絡、管理程序、虛擬交換機以及任何其他虛擬化應用中的一個或多個。處理器920可以包括本文所公開的所有類型的處理器,包括虛擬處理器。然而,當提及虛擬處理器時,處理器920包括與在虛擬化層中執行虛擬處理器相關聯的軟體組件,以及執行虛擬化層所需要的底層硬體。系統900可以包括接收存儲在計算機可讀儲存裝置中的指令的物理或虛擬處理器920,所述指令使得處理器920執行某些操作。當提及虛擬處理器920時,系統還包括執行虛擬處理器920的底層物理硬體。在本公開的範圍內的實施例還可以包括用於攜帶或在其上存儲計算機可執行指令或數據結構的有形和/或非暫時性計算機可讀儲存裝置。這種有形計算機可讀儲存裝置可以是可由通用或專用計算機訪問的任何可用裝置,包括如上所述的任何專用處理器的功能設計。作為示例,而非限制,這種有形計算機可讀裝置可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存裝置、磁碟儲存裝置或其他磁儲存裝置,或者可以被用於以計算機可執行指令、數據結構或處理器晶片設計的形式來攜帶或存儲期望的程序代碼的任何其他裝置。當經由網絡或另一通信連接(或者硬連線、無線或者其組合)向計算機提供信息或指令時,計算機把該連接適當地視為計算機可讀介質。因此,任何這種連接被適當地稱為計算機可讀介質。以上的組合也應當被包括在計算機可讀儲存裝置的範圍內。計算機可執行指令包括:例如使得通用計算機、專用計算機或專用處理裝置執行某個功能或某組功能的指令和數據。計算機可執行指令還包括由在獨立或網絡環境中的計算機執行的程序模塊。一般地,程序模塊包括在執行特定任務或實現特定抽象數據類型的專用處理器等的設計中固有的例程、程序、組件、數據結構、對象和功能。計算機可執行指令、相關聯的數據結構和程序模塊表示用於執行本文公開的方法的步驟的程序代碼裝置的示例。這種可執行指令或相關聯的數據結構的特定序列表示用於實現在這種步驟中描述的功能的相應動作的示例。本公開的其他實施例可以在具有許多類型的計算機系統配置(包括個人計算機、手持裝置、多處理器系統、基於微處理器或可編程的消費電子產品、網絡PC、小型計算機、大型計算機等)的網絡計算環境中實踐。實施例還可以在分布式計算環境中實踐,其中任務由通過通信網絡連結(或者通過硬連線鏈路、無線鏈路或者通過其組合)的本地和遠程處理裝置來執行。在分布式計算環境中,程序模塊可以位於本地和遠程存儲器儲存裝置二者中。上述各種實施例僅以示例的方式被提供,而不應被領會為限制本公開的範圍。例如,本文的原理一般適用於語音對話系統,並且可以用於其任何應用。可以在不用遵循本文所圖示和描述的示例實施例和應用的情況下並且在不脫離本公開的精神和範圍的情況下,對本文所描述的原理做出各種修改和改變。敘述了組的「至少一個」的權利要求語言指示該組的一個成員或該組的多個成員滿足該權利要求。當前第1頁1 2 3