CN105830055A - 存储网络中的数据同步 - Google Patents
存储网络中的数据同步 Download PDFInfo
- Publication number
- CN105830055A CN105830055A CN201480068537.XA CN201480068537A CN105830055A CN 105830055 A CN105830055 A CN 105830055A CN 201480068537 A CN201480068537 A CN 201480068537A CN 105830055 A CN105830055 A CN 105830055A
- Authority
- CN
- China
- Prior art keywords
- agent
- storage
- storage agent
- data
- nearest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据同步方法可以包括通过第一存储代理接收最近第二代理同步点。所述最近第二代理同步点可与第二存储代理和第三存储代理之间的第二代理同步的最近第二代理同步时间相关联。所述方法可进一步包括基于所述最近第二代理同步点,确定第一代理基准同步点。所述第一代理基准同步点可与发生在所述第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的第一代理同步的第一代理基准同步时间相关联。另外,所述方法可以包括基于所述第一代理基准同步点,建立所述第一存储代理和所述第二存储代理之间的数据同步的第一代理基准。
Description
技术领域
本文所讨论的实施方式涉及存储网络中的数据同步。
背景技术
用户所存储的个人数据(例如,照片、视频、文献等等)的量不断增加。另外,存储、建立、下载(等等)个人数据的设备的数量和类型也不断地增加。然而,除其他外,跨多个设备来存储和管理个人数据的方法和系统麻烦、耗时、无法提供足够冗余,而且无法实现在不同设备上对个人数据的容易存取。
本文所要求保护的主题并不限于解决任何缺点或仅仅在诸如上述那些环境中操作的实施方式。相反,背景技术部分仅提供来例示其中可实践本文所描述的一些实施方式的一个示例技术领域。
发明内容
根据实施方式的一方面,一种数据同步方法可以包括通过第一存储代理接收最近第二代理同步点。所述最近第二代理同步点可与第二存储代理和第三存储代理之间的第二代理同步的最近第二代理同步时间相关联。所述方法可进一步包括基于所述最近第二代理同步点,确定第一代理基准同步点。所述第一代理基准同步点可与发生在所述第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的第一代理同步的第一代理基准同步时间相关联。另外,所述方法可以包括基于所述第一代理基准同步点,建立所述第一存储代理和所述第二存储代理之间的数据同步的第一代理基准。
实施方式的目标和优势将会至少通过在权利要求书中具体指出的元素、特征和组合来实现和达成。
应当理解,以上一般描述和以下详细描述两者是示例性和解释性的,而不是对如要求保护的本发明的限制。
附图说明
将会通过使用附图利用附加的特征和细节来描述和解释示例实施方式,其中:
图1示出示例存储系统的方框图;
图2示出可在第一存储代理(1stSA)与第二存储代理(2ndSA)之间执行的示例同步过程;以及
图3是示例数据同步方法的流程图。
具体实施方式
如以下所详述,存储网络中的存储代理可配置成基于所述存储代理与所述存储网络中的一或多个第三方存储代理的先前同步来执行彼此的数据同步,所述先前同步不直接为当前彼此同步的存储代理之间的同步的一部分。比起传统同步方案,这种同步方案可使能够同步期间转移的数据量减少,同时还实现了存储网络内的一致同步。因此,该存储系统的存储代理可以是移动的,同时还实现了存储网络内的一致且更为有效的同步。本发明的实施方式将会参考附图进行解释。
图1示出根据本发明的至少一个实施方式来配置的示例存储系统100的方框图。存储系统100可以包括存储网络102,所述存储网络包括存储代理(SA)104a-104c。虽然存储系统100示为包括具有包括于其中的三个不同存储代理104的单个存储网络102,但是系统100也可包括可各自包括任何数量存储代理104的任何数量存储网络102。
在一些实施方式中,存储系统100被配置成存储、组织和管理数据文件,诸如照片、视频、文件等等。在一些实施方式中,可将数据文件包括在数据对象中,所述数据对象还可包括可提供关于数据文件的信息的元数据。本公开的术语“数据”可指可由存储代理104来存储的任何适合信息,并且可以包括一或多个数据文件、元数据或以上项的任何组合。
另外,术语“共享数据”可指可由存储网络102的多于一个存储代理104共享、存储于所述多于一个存储代理上和/或在所述多于一个存储代理之间同步的任何数据。例如,共享数据可以包括数据文件、元数据、数据对象、数据对象根和树结构信息、存储代理状态信息(以下更详细地解释)、数字权限利管理(DRM)许可信息(以下更详细地解释)、共享票券信息(以下更详细地解释)、任何其他合适信息,或上述项的任何组合。
存储系统100可配置成组织并且管理存储区块110中存储的数据,所述存储区块以可减少用户需要的输入量的自动方式与存储代理104a-104c相关联。因此,存储系统100可促成对存储网络102内的存储区块110所存储的数据的组织和存取。
存储代理104可各自与处理器150、存储器152和存储区块110相关联。例如,在所示实施方式中,存储代理104a可以包括处理器150a、存储器152a和存储区块110a;存储代理104b可以包括处理器150b、存储器152b和存储区块110b;并且存储代理104c可以包括处理器150c、存储器152c和存储区块110c。
处理器150可以包括例如微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或被配置成解释和/或执行程序指令和/或处理数据的任何其他数字或模拟电路。在一些实施方式中,处理器150可以解释和/或执行它们相关联的存储器152和/或一或多个存储区块110中存储之的程序指令和/或处理数据。
存储器152可以包括被配置成将程序指令和/或数据保留一段时间的任何合适计算机可读介质。例如(而非限制),此类计算机可读介质可以包括有形或非暂态计算机可读存储介质,包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、压缩盘只读存储器(CD-ROM)或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、闪存设备(例如,固态存储设备)、特定分子序列(例如,DNA或RNA),或可用来承载或存储呈计算机可执行指令或数据结构的形式的期望程序代码并可由处理器150存取的任何其他存储介质。以上项的组合还可包括在计算机可读介质的范围内。计算机可执行指令可以包括例如致使通用计算机、专用计算机或专用处理设备(例如,处理器150)执行某个功能或成组功能的指令和数据。
存储区块110还可包括被配置成存储数据的任何合适计算机可读介质。存储区块110可以存储可在不同存储区块110间基本相同的共享数据,该共享数据,并且还可存储仅仅可在特定存储区块110上出现的数据。
在一些实施方式中,一或多个存储代理104可包括于任何合适设备(可包括存储代理104的组件)之内。例如,存储代理104可包括于云存储服务器、移动电话、平板计算机、个人计算机、膝上型计算机、相机、个人数字助理(PDA)、智能手机、音乐播放器、视频播放器和外部硬件驱动器等之中。另外,虽然明确描述存储代理104包括处理器150、存储器152和存储区块110,但是不同实施方案可以具有不同配置。例如,在一些实施方式中,存储代理104可为它们相关联的设备的存储器152中包括的模块,其中计算机可执行指令被配置成致使它们相关联的设备的处理器150执行与管理可存储于存储区块110上的数据相关联的操作。
与存储代理104相关联的设备可以包括可使数据在存储代理104之间传达的任何设备。因此,所述设备可提供存储代理104之间的某种通信能力,诸如互联网连接性、局域网(LAN)连接性、广域网(WAN)连接性、蓝牙(Bluetooth)连接性、3G连接性、4G连接性、LTE连接性、无线保真(Wi-Fi)连接性、机器对机器(M2M)连接性、设备对设备(D2D)连接性、任何其他合适通信能力,或以上项的任何合适组合。
在所示实施方式中,存储代理104被描绘为经由存储代理104之间的直接通信来执行与彼此的通信。另外或替代地,存储代理104可以通过通信网络112彼此通信。在一些实施方式中,通信网络112可以包括(单独或以任何组合)互联网、内联网、本地WiFi网络、无线LAN、移动网络(例如,3G、4G和/或LTE网络)、LAN、WAN或任何其他合适通信网络。
在一些实施方式中,存储代理104可类似于基于对象的文件系统中包括的客户端或服务器那样进行动作。例如,存储代理104可配置成实施与在存储网络102和存储系统100内传递数据相关联的协议。另外,通过存储代理104来管理的一些存储区块110可配置成仅存储各种数据对象中包括的元数据,而其他存储区块110可配置成存储各种数据对象中包括的元数据和数据文件。
在一些实施方式中,为管理和提供与存储网络102中的数据存储有关的信息,可以针对存储网络102来生成和管理数据目录。例如,在一些实施方式中,目录可以包括信息,诸如存储区块110可本地存储的数据对象、个人数据文件和/或任何其他元数据。目录还可包括可与数据文件相关联的任何其他元数据。在一些实施方式中,目录可包括存储网络102中存储的数据对象所有的元数据的集合。因此,目录可以用来确定哪个存储区块110具有存储在其上的某些数据以及关于存储在不同存储区块110上的数据的其他信息。因此,如果数据非本地存储在它们相应存储区块110之上,那么存储代理104可从存取数据的位置处得知。
在一些实施方式中,目录、或任何其他共享数据可由每个存储区块110存储共享,并且基于通过存储代理104管理和执行的同步而在每个存储区块110之间同步共享。同步过程在下文中更详细地描述。由于在存储区块110之间的数据同步通过存储代理104来管理和执行,因此术语“存储代理同步”、“在存储代理之间的同步”等等可指示并包括存储区块110同步。另外,在所示实施方式中,存储代理104被描绘为包括存储区块110,使得描述为存储在存储代理104上的数据可实际上存储在存储区块110上。另外,在其中特定存储代理104为配置成管理特定存储区块110的模块的实施方式中,模块描述存储在特定存储代理104上的数据的本发明的陈述可指在特定时间上将由特定存储代理104来管理的特定数据区块110上存储的数据。
在一些实施方式中,共享数据可更新或改变,使得共享数据可以具有不同版本。在这些或其他实施方式中,存储代理104可将版本号(称作“本地分配的版本号”)分配至共享数据,以便追踪哪个版本共享数据存储在它们相关联的存储区块110上。在一些情况示例下,当在通过存储代理104来管理的存储区块110上更新共享数据时,存储代理104可使共享数据的本地分配的版本号递增。因此,本地分配的版本号可指示并有关可存储在存储区块110上的共享数据的特定版本。然而,一个存储区块110上的特定共享数据的本地分配的版本号可不同于另一存储区块110上的相同版本特定共享数据的版本号。因此,即使共享数据实际版本在存储区块110上可以相同,但是共享数据的本地分配的版本号在存储代理104以及它们相关联的存储区块110之间可以不同。
在一些实施方式中,存储代理104还可具有可指示哪个版本的共享数据可存储于存储代理104(例如,与同步有关的存储区块110)上的版本号。存储代理版本号可绑定至与特定存储代理104所执行的同步相关联的特定存储区块110。因此,在一些实施方式中,示例例如在其中相同数据代理104可管理不同存储区块110的不同存储区块110的同步的情况下,本文所描述的存储代理版本号可根据哪个存储区块110与同步相关联而变化。在一些实施方式中,特定存储代理104上的共享数据的本地分配的版本号的最高值可用作为特定存储代理104的版本号。
例如,存储代理104a可在其上存储具有本地分配的版本号“1”的共享数据“A”、具有本地分配的版本号“2”的共享数据“B”、具有本地分配的版本号“2”的共享数据“C”、具有本地分配的版本号“3”的共享数据“D”和具有本地分配的版本号“4”的共享数据“E”。在所示实例示例中,存储代理104a的版本号可因此而具有版本号“4”,这是因为版本号“4”是存储于存储代理104a上的共享数据的最高本地分配的版本号。
在一些实施方式中,当特定存储代理104执行与其他存储代理104的同步时,特定存储代理104和其他存储代理104各自可产生同步点,所述同步点可指示特定存储代理104与其他存储代理104同步的时间点。同步点还可以包括涉及到同步的存储代理104的版本号、存储代理104的标识符和/或涉及同步的共享数据的本地分配的版本号。与存储代理104的版本号类似,存储代理标识符可绑定到与通过特定存储代理104执行的同步相关联的特定存储区块110。因此,在一些实施方式中,例如,在其中相同存储代理可管理不同存储区块110的不同存储区块110的同步的情况下,本文所描述的存储代理标识符可根据哪个存储区块110与同步相关联而变化。
例如,在一些实施方式中,当存储代理104a执行与存储代理104b的同步时,存储代理104a可产生同步点,所述同步点可包括以下项的任何一或多个:与同步相关联的时间戳(还称为“同步时间”);在同步时间上存储代理104a的版本号,其可存储为本地代理版本号;存储代理104b的标识符,其可存储为远端代理ID;在同步时间上存储代理104b的版本号,其可存储为远端代理版本号;存储代理104a与104b之间的同步涉及的共享数据的本地分配的版本号(如存储代理104b所分配),其可存储为远端代理分配的版本号;以及存储代理104a与104b间的同步涉及的共享数据的本地分配的版本号(如存储代理104a所分配),其可存储为本地代理分配的版本号。
类似地,当存储代理104a执行与存储代理104b的同步时,存储代理104b还可以产生同步点,所述同步点可包括以下项的任何一或多个:同步时间;在同步时间上存储代理104b的版本号,其可存储版本号为本地代理版本号;存储代理104a的标识符,其可存储为远端代理ID;在同步时间上存储代理104a的版本号,其可存储为远端代理版本号;存储代理104a与104b之间的同步涉及的共享数据的本地分配的版本号(如存储代理104a所分配),本地分配版本号其可存储为远端代理分配的版本号;以及存储代理104a与104b之间的同步涉及的共享数据的本地分配的版本号(如存储代理104b所分配),其本地分配版本号可存储为本地代理分配的版本号。
在一些实施方式中,特定存储代理104可存储用于与已同所述特定存储代理同步的不同存储代理104中的每者同步的某些数量的同步点。因此,特定存储代理104可利用不同存储代理104来存储与其同步相关联的同步历史。如以下所详细讨论,同步点和同步历史可在后续同步期间使用,以便提高同步效率。
通过同步共享数据,存储代理104a可了解或更新其他存储代理104状态以及存储网络102内存储的数据。例如,存储代理104a可与存储代理104b和/或与存储代理104c同步,使得存储代理104a更新存储代理104b和/或存储代理104c的连接性或操作状态以及存储于其上的数据。
除了彼此通信之外,在一些实施方式中,存储代理104可与服务进行通信,所述服务可被称为存储网络管理器114。存储网络管理器114可类似于分布式存储系统中的中心服务那样进行动作。存储网络管理器114可以执行存储系统100中的多个功能,诸如通过存储代理104协同行动。例如,存储网络管理器114的功能可以包括(但不限于)在存储网络102的存储区块110之间定位数据文件、协同存储代理104与存储区块110之间的共享数据同步以及在存储区块110之间分配数据。
在一些实施方式中,存储网络管理器114可包括在与存储代理104中的一者相同的设备中,并且在一些实施方式中,存储网络管理器114可包括在独立于存储代理104的服务中。另外,在一些实施方式中,存储网络管理器114可执行操作以使得存储网络管理器114可用作为或为存储代理。例如,存储网络管理器114可以存储共享数据,诸如目录和/或与存储网络102相关联的其他元数据,并且可将其共享数据与存储代理104共享同步,使得存储网络管理器114可用作为与此类共享数据有关的存储代理。
在一些实施方式中,存储网络管理器114可经由通信网络112与存储代理104通信(如图1所示)。存储网络管理器114还可被配置成经由直接通信(未明确地示出于图1中)来与存储代理104中的一或多个通信。
在一些实施方式中,存储网络管理器114可配置成使得存储网络102中存储的数据文件不存储在存储网络管理器114上,但是可将存储网络102的与数据文件相关的元数据(例如,目录)存储在存储网络管理器114上。在一些实施方式中,存储网络管理器114可向存储代理104传达关于数据的存储的指令。存储代理104可响应于从存储网络管理器114传达的指令进行动作。
存储代理104可根据可存储于存储代理104中的每者上的元数据定位存储网络102内的数据文件。例如,存储代理104a可使用存储于存储代理104a上的元数据(例如,目录)来定位存储于存储代理104b上的数据文件。可在存储代理104和/或存储代理104与存储网络管理器114之间的同步期间,传达信息关于定位数据文件的一些或所有信息。另外或替代地,存储代理104可与存储网络管理器114进行通信,以定位存储于存储网络102上的数据文件。
另外,存储网络管理器114可利用不可靠或间歇性连接性与存储代理104中的一或多个进行通信。例如,存储代理104c可使用不可靠连接性来通信地耦合至存储代理104b和/或存储代理104a,或者存储代理104c可包括在间歇性地连接至存储代理104b和/或存储代理104a的外部设备中。存储网络管理器114可因此经由通信网络112与存储代理104c进行通信,随后,将信息中继至存储代理104b和/或关于存储代理104c的存储代理104a。
如下文中更详细地描述,存储代理104和/或存储网络管理器114可配置成执行同步,其方式为允许存储网络102内的共享数据的有效且一致的同步,同时还允许了存储代理104为移动的,并且彼此具有零散的连接性。在一些实施方式中,存储代理104和/或存储网络管理器114可配置成以如针对图2和图3所描述的过程和方法来描述的方式执行同步。
图2示出根据本发明的至少一个实施方式的可在第一存储代理(1stSA)与第二存储代理(2ndSA)之间执行的示例同步过程200。同步过程200可用来以有效方式执行第一存储代理与第二存储代理之间的共享数据同步,而且使得第一存储代理和第二存储代理之间的共享数据可为一致。例如,同步过程200可以确保共享数据版本在第一存储代理与第二存储代理之间是相同的。在这些或其他实施方式中,同步过程200还可确保已添加到可不位于第二存储代理上的第一存储代理并存储在其上的共享数据还可还添加并存储到共享第二存储代理之上,反之亦然。
第一存储代理和第二存储代理可为任何合适存储代理,诸如以上针对图1所描述的存储代理104。另外,在一些实施方式中,第一存储代理和/或第二存储代理可为执行存储代理操作并充当存储代理的存储网络管理器,诸如图1的存储网络管理器114。另外,在所示实施方式中,第一存储代理可以发起与第二存储代理的同步;然而,在其他示例实例中,第二存储代理可以发起同步。
在同步过程200的描述中,术语“第一代理同步”可指第一存储代理已参与的同步,并且术语“第二代理同步”可指第二存储代理已参与的同步。另外,在一些实例中,同步可在第一存储代理与第二存储代理之间进行。因此,为了简明起见,第一存储代理与第二存储代理之间的同步可被称为“共同同步”。
同步过程200可以包括步骤202,其中第一存储代理可以确定一组最近第一代理同步点(以下称作“最近第一代理点”)。最近第一代理点可与第一存储代理和与第一存储代理和第二存储代理相同的存储网络中包括的其他存储代理的同步相关联。在一些实施方式中,步骤202处确定的最近第一代理点可以基于第一代理同步历史确定确定,并且可有关于通过第一存储代理来执行的相对于其他存储代理中的每者的最新同步,所述其他存储代理包括在与第一存储代理和第二存储代理相同的存储网络中,并已执行与第一存储代理的同步。相应的第一代理点还可指示它们相关联的第一代理同步的时间(以下称作“第一代理同步时间”)。
例如,最近第一代理点可以包括第一最近第一代理点、第二最近第一代理点和第三最近第一代理点。第一最近第一代理点可与第一存储代理和第二存储代理之间的最新共同同步相关联。第一最近第一代理点可以包括在对应于第一最近第一代理点的第一代理同步的时间上的第一存储代理的版本号(其可称为“第一代理版本号”)作为其本身的本地代理版本号。第一最近第一代理点还可包括与第二存储代理相关联的标识符(其可称为“第二代理ID”)作为其本身的远端代理ID。另外,第一最近第一代理点可以包括在对应于第一最近第一代理点的第一代理同步的时间上的第二存储代理的版本号(其可称作“第二代理版本号”)作为其本身的远端代理版本号。另外,第一最近第一代理点可以包括对应于第一最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第一存储代理分配)作为本地代理分配的版本号。另外,第一最近第一代理点可以包括对应于第一最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第二存储代理分配)作为远端代理分配的版本号。第一最近第一代理点还可包括与对应于第一最近第一代理点的同步发生时间相关联的第一代理同步时间。
第二最近第一代理点可与第一存储代理和第三存储代理之间的最新第一代理同步相关联。第二最近第一代理点可以包括在对应于第二最近第一代理点的第一代理同步的时间上的第一代理版本号作为其本身的本地代理版本号。第二最近第一代理点还可包括与第三存储代理相关联的标识符(其可称作“第三代理ID”)作为其本身的远端代理ID。另外,第二最近第一代理点可以包括在对应于第二最近第一代理点的第一代理同步的时间上的第三存储代理的版本号(其可称作“第三代理版本号”)作为其本身的远端代理版本号。另外,第二最近第一代理点可以包括对应于第二最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第一存储代理分配)作为本地代理分配的版本号。另外,第二最近第一代理点可以包括对应于第二最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第三存储代理分配)作为远端代理分配的版本号。第二最近第一代理点还可包括与对应于第一最近第一代理点的同步发生时间相关联的第一代理同步时间。
第三最近第一代理点可与第一存储代理和第四存储代理之间的最新第一代理同步。第三最近第一代理点可以包括在对应于第三最近第一代理点的同步的时间上的第一存储代理的版本号作为其本身的本地代理版本号。第三最近第一代理点还可包括与第四存储代理相关联的标识符(其可称作“第四代理ID”)作为其本身的远端代理ID。另外,第三最近第一代理点可以包括在对应于第三最近第一代理点的同步的时间上的第四存储代理的版本号(其可称作“第四代理版本号”)作为其本身的远端代理版本号。另外,第三最近第一代理点可以包括对应于第三最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第一存储代理分配)作为本地代理分配的版本号。另外,第三最近第一代理点可以包括对应于第三最近第一代理点的同步中涉及的共享数据的本地分配的版本号(如由第四存储代理分配)作为远端代理分配的版本号。第三最近第一代理点还可包括与对应于第一最近第一代理点的同步发生时间相关联的第一代理同步时间。
在步骤204处,第一存储代理可向第二存储代理传达最近第一代理点。在步骤206处,响应于接收到最近第一代理点,第二存储代理可以基于在步骤204处接收到的最近第一代理点,确定第二代理基准。
第二代理基准可与存储在第二存储代理上的共享数据的版本与存储在第一存储代理上的对应共享数据相同(或为其更早的版本)的时间点相关联。因此,如下文中更详细地描述,第二代理基准可用作为同步过程200的参考点,以便确定第二存储代理何时具有存储在其上的版本与第一存储代理上存储的对应共享数据的版本相同或比其更早的数据。
在一些示例情况下,可以基于第一存储代理和一或多个第三方存储代理(即,未积极参与同步过程200的存储代理)之间的同步以及第二存储代理与相同一或多个第三方存储代理之间的同步,确定第二代理基准。已执行与第一存储代理和第二存储代理两者的同步的第三方存储代理可被称为“共同的第三方存储代理”。由于在同步中可需要传送的数据较少,因此与仅使用第一存储代理与第二存储代理之间的先前同步作为第二代理基准相比,使用与共同的第三方存储代理的同步建立第二代理基准可使同步效率提高。如下文中更详细地描述,在一些实施方式中,为了确定第二代理基准,第二存储代理可从第二代理同步历史并从最近第一代理点确定一组第二代理基准同步点(以下称作“第二代理基准点”)。
在确定第二代理基准点过程中,第二存储代理可从包括由最近第一代理点指示的共同的第三方代理的第二代理存储历史选择第二代理同步点作为第二代理基准点。第二存储代理还可选择可有关于发生在与第一代理点相关联的第一代理同步之前的同步的那些第二代理同步点来作为第二代理基准点。因此,第二代理基准点可以各自具有发生在对应于相同的第三方存储代理的最近第一代理点的相应第一代理同步时间之前的第二代理同步时间。
在一些实施方式中,第二代理基准点中的一或多个可与第二存储代理和共同的第三方代理之间的最新第二代理同步有关,所述最新第二代理同步发生在第一存储代理和共同的第三方代理之间的第一代理同步之前,如由最近第一代理点指示。另外,第二存储代理可选择与可对应于最近第一代理点中的一者的先前共同同步相关联的第二代理同步点来作为第二代理基准点。
举例而言,第二存储代理可基于第一最近第一代理点来选择上述第二代理基准点、第二最近第一代理点和第三最近第一代理点,具体如下。第一最近第一代理点可与共同同步相关联,第二最近第一代理点可与第一存储代理和第三存储代理之间的第一代理同步相关联,并且第三最近第一代理点可与第一存储代理和第四存储代理之间的第一代理同步相关联。因此,第二存储代理可选择对应于第二存储代理与第一存储代理、第三存储代理和第四存储代理之间的第二代理同步的第二代理同步点来作为第二代理基准点。在一些实施方式中,第二存储代理可选择与发生在最近第一代理点指示的第一代理同步时间之前的最新同步时间相关的第二代理同步点。
举例而言,第一最近第一代理点可以包括指示第一存储代理与第二存储代理之间的最后共同同步的时间的第一代理同步时间“A”。第二存储代理可因此选择与还具有作为第二代理同步时间的时间“A”的最后共同同步相关联的第二代理同步点来作为第一第二代理基准点。
第二最近第一代理点可以包括指示第一存储代理和第三存储代理之间的最后同步的时间的第一代理同步时间“B”。第二存储代理可因此选择发生在第一代理同步时间“B”之前的与第二存储代理和第三存储代理之间的最后同步相关联的第二代理同步点来作为第二第二代理基准点。因此,第二第二代理基准点的第二代理同步时间“C”可在第一代理同步时间“B”之前,并且可相较于还发生在第一代理同步时间“B”之前的第二存储代理与第三存储代理之间的其他第二代理同步,在还时间上更接近于第一代理同步时间“B”。
另外,第三最近第一代理点可以包括指示第一存储代理与第四存储代理之间的最后同步的时间的第一代理同步时间“D”。第二存储代理可因此选择发生在第一代理同步时间“D”之前的与第二存储代理和第四存储代理之间的最后同步相关联的第二代理同步点来作为第三第二代理基准点。因此,第三第二代理基准点的第二代理同步时间“E”可在第一代理同步时间“D”之前,并且可相较于还发生在第一代理同步时间“D”之前的第二存储代理与第四存储代理之间的其他同步,在还时间上更接近于第一代理同步时间“D”。
在一些实施方式中,第二存储代理可基于最近第一代理点和第二代理同步点中包括的存储代理的版本号来选择第二代理基准点。例如,对于与第一存储代理和第二存储代理之间的第二代理同步相关联的第二代理同步点,包括与最近第一代理点的远程代理版本号中包括的第二代理版本号相同的第二代理版本号作为其本身的本地代理版本号的第二代理同步点可选择为第二代理基准点,所述最近第一代理点与第一存储代理和第二存储代理之间的最后同步相关联。
另外,对于与第二存储代理和共同的第三存储代理之间的同步相关联的第二代理同步点而言,可选择第二代理同步点,所述第二代理同步点具有最高的远端代理版本号,所述最高的远端代理版本号还仍低于对应于与对应的第三方存储代理的第一代理同步的最近第一代理点的远端代理版本号。基于存储代理的版本号的这种选择过程可允许实现第二代理基准点和最近第一代理点的同步时间之间的上述关系。
举例来说,在一些实施方式中,可用以下方式确定以上实例中的第一第二代理基准点、第二第二代理基准点和第三第二代理基准点。第一最近第一代理点可以包括第二代理版本号“5”作为其本身的远端代理版本号。因此,可选择包括第二代理版本号“5”作为其本身的本地代理版本号的对应于第二存储代理与第一存储代理的同步的第二代理同步点来作为第一第二代理基准点。
另外,第二最近第一代理点可以包括第三代理版本号“6”作为其本身的远端代理版本号。另外,对应于第二存储代理和第三存储代理的同步的第二代理同步点可以包括第三代理版本号“2”、“4”和“7”作为其本身的远端代理版本号。因此,可选择包括第三代理版本号“4”的第二代理同步点来作为第二第二代理基准点,因为第三代理版本号“4”为相关第二代理同步点的最高的第三代理版本号,所述最高的第三代理版本号仍低于包括于第二最近第一代理点中的第三代理版本号“6”。
另外,第三最近第一代理点可以包括第三代理版本号“9”作为其本身的远端代理版本号。另外,对应于第二存储代理和第四存储代理的同步的第二代理同步点可以包括第四代理版本号“5”、“8”和“11”作为其本身的远端代理版本号。因此,可选择包括第四代理版本号“8”的第二代理同步点来作为第三第二代理基准点,因为第四代理版本号“8”可选择为相关第二代理同步点的最高的第四代理版本号,所述最高的第四代理版本号仍小于包括在第三最近第一代理点中的第四代理版本号“9”。
可基于可具有最新第二代理同步时间的第二代理基准点来确定第二代理基准。例如,关于继续以上针对步骤202、204和206所提到的实例,第三第二代理基准点的第二代理同步时间“E”可以睌于第二代理同步时间“A”和“C”。因此,第二存储代理可使第二代理基准基于第三第二代理基准点。
在一些实施方式中,第二存储代理可通过分析第二代理基准点的本地代理版本号(其可为第二代理版本号)并确定哪个第二代理基准点包括最高的本地代理版本号(其可指示具有最新第二代理同步时间的第二代理基准点),确定第二代理基准。在这些或其他实施方式中,第二存储代理可选择所确定的最高的本地代理版本号来作为第二代理基准。
如上所述,可基于发生在最近第一代理点中指示的第一代理同步之前的最新第二代理同步来选择第二代理基准点。另外,如上所述,第二代理同步点中包括的以及因此第二代理基准点中包括的本地代理版本号可以指示在它们对应同步时间上存储于第二存储代理上的共享数据的版本。因此,用于第二代理基准的本地代理版本号可以指示存储于第二存储代理中的共享数据的最新版本,所述最新版本可验证为也存储于共享还第一存储代理之上。因此,可使用第二代理基准来作为同步过程200的参考点,以便确定第二存储代理何时具有存储于其上的版本与存储于第一存储代理上的对应共享数据的版本相同或比其更早的共享数据。
在步骤208处,第二存储代理可以类似于在步骤202处由第一存储代理用来确定最近第一代理点的方式来确定一组最近第二同步点(以下称为“最近第二代理点”)。在一些实施方式中,第二存储代理可响应于接收到最近第一代理点来确定最近第二代理点。另外,在一些实施方式中,在确定第二代理基准之前、之后或同时,第二存储代理可确定最近第二代理点。
在步骤210处,第二存储代理可向第一存储代理传达最近第二代理点。另外,在一些实施方式中,第二存储代理在步骤210处可向第一存储代理传达第二代理基准。第二存储代理可向第一存储代理传达第二代理基准,使得第一存储代理可在同步过程200期间保持跟踪第二存储代理的第二代理基准,在一些示例情况下,这可促成同步过程200实施。
在步骤212处,第一存储代理可如以上关于步骤206所述那样,以类似于第二存储代理基于最近第一代理点确定第二代理基准的方式,基于最近第二代理点确定第一代理基准。因此,在一些实施方式中,为了确定第一代理基准,第一存储代理可以确定可与发生在与最近第二代理点相关联的第二代理同步之前的第一代理同步相关联的一组第一代理基准同步点(以下称为“第一代理基准点”)。
在一些实施方式中,第一存储代理可因此选择包括在具有最新第一代理同步时间的第一代理基准点中的本地代理版本号(其可为第一存储代理的版本号)来作为第一代理基准。因此,第一代理基准可以指示存储在第一存储代理上的共享数据的最新版本,所述最新版本可验证为还存储于第二存储代理之上。如下文中更详细地描述并与关于第二存储代理的第二代理基准类似,可因此将第一代理基准用作同步过程200的参考点,以便确定第一存储代理何时具有存储于其上的版本与存储于第二存储代理上的对应共享数据的版本相同或比其更早的共享数据。
在步骤214处,第一存储代理可基于第一代理基准来确定一组第一代理差量。如上所述,可使用第一代理基准来作为同步步骤200的基准点,以便确定第一存储代理何时具有存储于其上的版本与存储于第二存储代理上的对应共享数据的版本相同或比其更早的共享数据。因此,一组第一代理差量可以包括共享数据,所述共享数据可在对应于第一代理基准的时间之后在第一存储代理上更新,使得第二存储代理不会接收到相同的更新。
在一些实施方式中,可通过将第一存储代理上的共享数据的本地分配的版本号与第一代理基准进行比较,确定一组第一代理差量。如上所述,第一代理基准可以基于指示存储在第一存储代理中的共享数据的最新版本的第一存储代理的版本号,所述最新版本可验证为还存储在第二存储代理之上。另外,如上所述,在一些实施方式中,可使用共享数据的最新本地分配的版本号来作为第一存储代理的版本号。
因此,在一些实施方式中,可通过识别具有高于第一代理基准的本地分配的版本号的共享数据来确定一组第一代理差量,这指示了可在第一存储代理而非第一存储代理目前所知的第二存储代理上更新第一存储代理上存储的经识别的共享数据。另外,在一些实施方式中,当将共享数据添加或存储到在第一时间的第一存储代理上时,可向所添加的共享数据给定当前第一代理版本号作为本地分配的版本号。因此,在对应于第一代理基准的时间后添加或存储到第一存储代理上的共享数据可添加到第一代理增量,因为类数据的本地分配的版本号可以高于第一代理基准。
在步骤216处,第一存储代理可向第二存储代理传达一组第一代理差量。另外,在一些实施方式中,第一存储代理可将第二代理基准传回第二存储代理。如以上所指示,第一存储代理可从第二存储代理接收第二代理基准,并且随后可将第二代理基准传回第二存储代理,使得第一存储代理记住第二存储代理的第二代理基准,以使第一存储代理和第二存储代理的一些实施方案容易进行。
在步骤218处,第二存储代理可将第一代理差量的共享数据与第二存储代理上存储的对应共享数据协调。在协调期间,第二存储代理可以确定第一代理差量的共享数据是否旧于第二存储代理上存储的对应共享数据。当特定第一代理差量的共享数据较旧时,第二存储代理可以忽略特定第一代理差量的共享数据。当特定第一代理差量的共享数据较新时,第二存储代理可用特定第一代理差量的共享数据替代第二共享代理上存储的对应共享数据。
在一些实施方式中,第二存储代理可基于对应于第一代理差量的共享数据的本地分配的版本号来确定将要替换哪个共享数据。例如,在一些实施方式中,第一存储代理可以传达第一代理差量中包括的共享数据的本地分配的版本号,如由第一存储代理分配并且以下称为“第一代理分配的版本号”。第二存储代理可将第一代理差量的共享数据的第一代理分配的版本号与可包括在与最新先前共同同步相关联的适用第二代理同步点中的对应共享数据的远端代理分配的版本号进行比较。如上文所指示,适用第二代理同步点中包括的对应的共享数据的远端代理分配的版本号可为第一存储代理和第二存储代理的最新先前共同同步的时间上的第一代理版本号。因此,大于特定第二代理同步点中的对应第一共享数据的远端代理分配的版本号的第一代理差量的第一共享数据的第一代理分配的版本号可以指示第一存储代理由于最新先前共同同步而对第一共享数据进行更新。因此,在一些示例情况下,第二存储代理可用第一代理差量中包括的第一共享数据更新第二存储代理上存储的第一共享数据。
相比之下,少于或等于特定第二代理同步点中的对应第二共享数据的远端代理分配的版本号的第一代理差量的第二共享数据的第一代理分配的版本号可以指示第一存储代理由于最新先前共同同步而未更新第二共享数据。因此,第二存储代理可不利用第一代理中包括的数据来更新存储于第二存储代理上的第二共享数据。第二存储代理还可确定到底是否存在未存储于第二存储代理上的第一代理差量中包括的共享数据,并且可以存储此类共享数据。
举例来说,所接收的第一代理差量的共享数据可以包括具有第一代理分配的版本号“5”的共享数据“A”、具有第一代理分配的版本号“6”的共享数据“B”、具有第一代理分配的版本号“7”的共享数据“C”、具有第一代理分配的版本号“8”的共享数据“D”以及具有第一代理分配的版本号“0”的共享数据“E”。另外,第二存储代理可以包括存储于其上的与最新先前共同同步相关联的适用第二代理同步点。适用第二代理同步点可以包括在最新先前共同同步的时间上的共享数据“A”、“B”、“C”和“D”的远端代理分配的版本号(如上所述,其可为第一代理分配的版本号)。在适用第二代理同步点中,共享数据“A”可以具有远端代理分配的版本号“6”,共享数据“B”可以具有远端代理分配的版本号“5”,共享数据“C”可以具有远端代理分配的版本号“4”,并且共享数据“D”可以具有远端代理分配的版本号“8”。另外,适用第二代理同步点可不具有任何共享数据“E”的远端代理分配的版本号,这表明了在最新先前共同同步时间上,共享数据“E”未存储于第一存储代理或第二存储代理上。在其他实施方式中,第二存储代理可在除了适用第二代理同步点之外的位置处存储第一代理经分配的版本号。
第二存储代理可用第一代理差量的共享数据“B”和“C”替代存储于其上的共享数据“B”和“C”,因为第一代理差量的共享数据“B”和“C”可为第二存储代理上存储的共享数据“B”和“C”的以后版本(如第一代理差量中包括的相应更高第一代理分配的版本号所指示)共享替代共享。另外,第二存储代理可以存储共享数据“E”,因为它先前可不具有共享数据“E”存储在其上,如未包括在适用第二代理同步点中的共享数据“E”所指示。
在步骤218的协调期间,第二存储代理还可更新经更新的第二存储代理上存储的共享数据的本地分配的版本号。例如,第二存储代理可以更新共享数据“B”“C”和“E”的本地分配的版本号,因为共享数据已在协调期间更新。
如上文所指示,上述过程基于共享数据是否由于最新先前共同同步而由第一存储代理更新共享,确定是否要更新第一代理差量中包括的共享数据。然而,在一些情况下,第一代理差量中包括的由于最新先前共同同步而可由第一存储代理更新的共享数据还可由于最新先前共同同步而由第二存储代理进行更新。因此,在一些实施方式中,协调步骤还可包括确定是否要用第一代理差量中包括的数据替代此类共享数据。
在一些实施方式中,第二存储代理可基于第二代理基准以及如第二存储代理分配的共享数据的本地分配的版本号(其可称为“第二代理分配的版本号”)来确定第二存储代理上存储的对应于第一代理差量的共享数据的共享数据是否由于最新先前共同同步而已更新。如上所述,第二代理基准可建立时间点,其中第一存储代理和第二存储代理上存储的共享数据是相同的。因此,具有大于第二代理基准的第二代理分配的版本号的特定共享数据可指示特定共享数据由于最新先前共同同步而已更新。第二存储代理可因此将第二代理基准与共享第二存储代理上存储的对应于第一代理差量的共享数据的共享数据的第二代理分配的版本号进行比较,以便确定共享数据是否由于最新先前共同同步而已更新。在一些实施方式中,第二存储代理还可基于如由第一存储代理以上文所讨论的方法分配的共享数据的版本号,确定共享数据是否还已由于第一存储代理和第二存储代理之间的最新先前同步而由第一存储代理进行更新。
当确定特定共享数据由于最新先前共同同步而由第一存储代理和第二存储代理两者更新时,第二存储代理可确定是否用第一代理差量中包括的数据替代特定共享数据。例如,在一些实施方式中,第二存储代理可参考如对应第一代理差量中指示的并存储于第二存储代理上的特定共享数据的时间戳。
第二存储代理可配置成当对应第一代理差量指示的时间戳晚于第二存储代理上存储的与特定共享数据相关联的时间戳时,用包括于对应第一代理差量中的数据更新第二存储代理上存储的特定共享数据。相比之下,第二存储代理可配置成当对应第一代理差量指示的时间戳早于共享第二存储代理中存储的与特定共享数据相关联的时间戳时,就不用包括于对应第一代理差量中的数据更新第二存储代理上存储的特定共享数据。
在一些实施方式中,当确定特定共享数据由于最新先前共同同步而由第一存储代理和第二存储代理两者更新时,共享数据的协调步骤可包括共享数据的某种组合。例如,如果共享数据组件中的其中一个字段是标签列表,并且第一存储代理和第二存储代理两者由于最新先前同步而已更新标签,那么协调过程可选择将两个标签列表的联合视为共享数据元素的协调数据元素。
在步骤220处,第二存储代理可基于第二代理基准以类似于以上针对步骤214所描述的第一存储代理基于第一代理基准确定一组第一代理差量的方式来确定一组第二代理差量。在步骤222处,第二存储代理可基于在步骤218的协调期间更新的一或多个新分配的共享数据的版本号来更新第二存储代理的版本号。
在步骤224处,第二存储代理可向第一存储代理传达一组第二代理差量。因此,在一些实施方式中,第二存储代理可向第一存储代理传达第二存储代理的经更新的版本号。因此,第一存储代理可在针对同步过程200而执行的同步的时间上具有最新第二代理版本号。在一些实施方式中,第一存储代理可在为针对同步过程200而执行的同步建立的第一代理同步点中存储最新第二代理版本号。
在步骤226处,第一存储代理可用类似于以上针对步骤218所述通过第二存储代理执行协调的方式来使一组第二代理差量的共享数据与第一存储代理上存储的对应共享数据一致。在步骤228处,第一存储代理可基于在步骤226的协调期间更新的一或多个共享数据的新版本号来更新第一存储代理的版本号。另外,在一些实施方式中,第一存储代理可在步骤228处或步骤228后将第一存储代理的经更新的版本号传达到第二存储代理。因此,第二存储代理可在针对同步过程200而执行的同步的时间上具有最新第一代理版本号。在一些实施方式中,第二存储代理可在为针对同步过程200而执行的同步建立的第二代理同步点中存储最新第一代理版本号。
因此,同步过程200可执行以同步存储代理。本领域的技术人员将会了解,为了本文所描述的这个以及其他过程和方法,所述过程和方法中执行的功能可用不同顺序实施。另外,概述的步骤和操作仅提供为实例示例,并且步骤和操作的一些可以是任选的、被组合成更好的步骤和操作,或扩展为另外的步骤和操作,而不减损所公开的实施方式本质。
例如,确定同步点、基准和差量的顺序和/或定时可根据不同实施方案和实施方式的描述而变化。另外,传达同步点、基准(如果适用)和代理版本(适用)的顺序和/或定时还可根据不同实施方案和实施方式而变化。
图3为根据本文所描述的至少一个实施方式的示例数据同步方法300的流程图。在一些实施方式中,方法300中的一或多个步骤可由存储系统中操作的存储代理(诸如图1的示例存储系统100中操作的示例存储代理104)实施。例如,图1的存储代理104中的一者可配置成执行计算机指令以执行管理在存储代理上的存储分配的操作,如由方法300中的一或多个方框所表示。虽然被示出为离散方框,但是仍可根据期望实施方案将各种方框划分成另外方框、组成成较少方框或消除方框。现将参考图3讨论方法300。
方法300可开始于方块302,第一存储代理可接收与第二存储代理和第三存储代理之间的第二代理同步的最近第二代理同步时间相关联的最近第二代理同步点。在一些实施方式中,最近第二代理同步点可与第二存储代理和第三存储代理之间的最新第二代理同步相关联。
在方框304处,可以基于最近第二代理同步点,确定第一代理基准同步点。第一代理基准同步点可与发生在第二代理同步时间之前的第一存储代理和第三存储代理的第一代理同步的第一代理基准同步时间相关联。在一些实施方式中,第一代理基准同步点可与发生在最近第二代理同步时间之前的第一存储代理和第三存储代理之间的最新第一代理同步相关联。
在方框306处,可以建立第一存储代理与第二存储代理之间的数据同步的第一代理基准。可以基于第一代理基准同步点,确定第一代理基准,并且所述第一代理基准可以指示第一存储代理和第二存储代理具有相同版本共享数据存储于其上的共享时间。
因此,方法300可以用来建立共同的时间点,所述共同的时间点可用作为用于同步第一存储代理与第二存储代理之间的共享数据的基准。本领域的技术人员将会了解,对于方法300以及本文所描述的其他过程和方法,过程和方法中执行的功能可以不同顺序实施。此外,概述的步骤和操作仅提供为实例,并且步骤和操作的一些可以是任选的,被组成成更少的步骤和操作,或扩展为另外的步骤和操作,而不减损所公开的实施方式本质。
例如,在一些实施方式中,方法300可包括与基于第一代理基准确定在第一代理基准同步时间后通过确定第一存储代理来更新的数据相关联的步骤。在一些实施方式中,这个数据可传送至第二存储代理,使得第一存储代理和第二存储代理可将这个数据同步。
另外,在一些实施方式中,方法300可包括与通过第一存储代理将最近第一代理同步点传送至第二存储代理的步骤。最近第一代理同步点可与第一存储代理和第三存储代理的最近第一代理同步的最近第一代理同步时间相关联。方法300可进一步包括通过第二存储代理从第二存储代理接收如基于第二代理基准确定的在最近第一代理同步时间后通过第二存储代理更新的数据。第二代理基准可有关于可与发生在最近第一代理同步时间之前的第二存储代理和第三存储代理的第二代理基准同步时间相关联的第二代理基准同步点。
在这些以及其他实施方式中,方法300可进一步包括将从第二存储代理接收的数据与第一存储代理上存储的对应数据协调的步骤。在一些实施方式中,协调步骤可以包括确定所接收的数据是否旧于第一存储代理上存储的对应数据。当所接收的数据旧于对应数据时,就可忽略所接收的数据。当所接收数据新于对应数据时,可用所接收的数据替代对应数据。
如上指示,本文所描述的实施方式可以包括专用或通用计算机(例如,图1的处理器150)的使用,所述专用或通用计算机包括各种计算机硬件或软件模块,如下更详细地讨论。
本文所描述的实施方式可使用用于承载或具有计算机可执行指令或数据结构在其上的计算机可读介质(例如,图1的存储器152)来实施。此类计算机可读介质可为可通过通用或专用计算机存取的任何可用介质。举例而言(而非限制),此类计算机可读介质可以包括有形计算机可读存储介质,包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、压缩盘只读存储器(CD-ROM)或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、闪存设备(例如,固态存储设备),或者可用于承载或存储呈计算机可执行指令或数据结构的形式的期望程序代码并可由通用或专用计算机存取的任何其他存储介质。以上项的组合也可包括在计算机可读介质的范围内。
计算机可执行指令包括例如致使通用计算机、专用计算机或专用处理设备(例如,一或多个处理器)执行某个功能或成组功能的指令和数据。虽然已用特定于结构特征和/或方法行为的语言描述主题,但应理解,限定在随附权利要求书中的主题不一定受限于以上描述的特定特征或行为。更确切地,以上描述的特定特征和行为被公开为实施权利要求书的示例形式。
如本文所使用,术语“模块”或“组件”可指被配置成执行可存储在计算系统的通用计算机(例如,计算机可读介质和处理设备等等)上和/或由其执行的模块或组件和/或软件对象或软件例程的操作的特定硬件实施方案。在一些实施方式中,本文所描述的不同组件、模块、引擎和服务可实施为在计算系统上执行的对象或程序(例如,单独线程)。虽然本文所描述的系统和方法的一些大体上描述为在软件中实施(存储在通用硬件上和/或通过通用硬件执行),但是特定硬件实施方案或者软件与特定硬件实施方案的组合也是有可能且可预期的。在这个描述中,“计算实体”可为如本文先前定义的任何计算系统,或者在计算系统上运行的任何模块或模块组合。
本文所描述的所有实例以及条件语言旨在用于教学对象,以有助于读者了解本发明和发明人提出的概念,以便促进技术发展,并且将理解为不受限于此类特定描述的实例和条件。虽然本发明的实施方式已经详细描述,但应了解,可在不背离本发明的精神和范围的情况下,对本发明作出各种变化、替代和修改。
Claims (20)
1.一种数据同步方法,所述方法包括:
通过第一存储代理接收最近第二代理同步点,所述最近第二代理同步点与第二存储代理和第三存储代理之间的第二代理同步的最近第二代理同步时间相关联;
基于所述最近第二代理同步点,确定第一代理基准同步点,所述第一代理基准同步点与发生在所述第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的第一代理同步的第一代理基准同步时间相关联;以及
基于所述第一代理基准同步点,建立所述第一存储代理和所述第二存储代理之间的数据同步的第一代理基准。
2.根据权利要求1所述的方法,其进一步包括:基于所述第一代理基准,确定在所述第一代理基准同步时间后通过所述第一存储代理来更新的数据。
3.根据权利要求2所述的方法,其进一步包括:将在所述第一代理基准同步时间后通过所述第一存储代理来更新的所述数据传达到所述第二存储代理。
4.根据权利要求1所述的方法,其特征在于,所述最近第二代理同步点与所述第二存储代理和所述第三存储代理之间的最新第二代理同步相关联。
5.根据权利要求1所述的方法,其特征在于,所述第一代理基准同步点与发生在所述最近第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的最新第一代理同步相关联。
6.根据权利要求1所述的方法,其进一步包括:
通过所述第一存储代理将最近第一代理同步点传送到所述第二存储代理,所述最近第一代理同步点与所述第一存储代理和所述第三存储代理之间的最近第一代理同步的最近第一代理同步时间相关联;
通过所述第一存储代理从所述第二存储代理处接收如基于与第二代理基准同步点相关的第二代理基准确定的在所述最近第一代理同步后由第二存储代理更新的数据,所述第二代理基准同步点与发生在所述最近第一代理同步时间之前的所述第二存储代理和所述第三存储代理之间的第二代理基准同步时间相关联;以及
将从所述第二存储代理接收的所述数据与所述第一存储代理上存储的对应数据协调。
7.根据权利要求6所述的方法,其特征在于,所述协调包括:
确定所接收的数据是否旧于所述第一存储代理上存储的所述对应数据;
当所接收的数据旧于所述对应数据时,忽略所接收的数据;以及
当所接收的数据新于所述对应数据时,利用所接收的数据替代所述对应数据。
8.根据权利要求1所述的方法,其特征在于,所述最近第二代理同步点包括以下一或多个:所述第二存储代理和所述第三存储代理的版本号、所述第二存储代理和所述第三存储代理的标识符,以及所述第二存储代理和所述第三存储代理之间的所述第二代理同步中涉及的所述数据的本地分配的版本号。
9.一种数据同步方法,所述方法包括:
通过所述第一存储代理将最近第一代理同步点传送到所述第二存储代理,所述最近第一代理同步点与所述第一存储代理和第三存储代理之间的第一代理同步的最近第一代理同步时间相关联;
通过所述第一存储代理从所述第二存储代理处接收如基于根据第二代理基准同步点建立的第二代理基准确定的通过所述第二存储代理更新的数据,所述第二代理基准同步点与发生在所述最近第一代理同步时间之前的所述第二存储代理和所述第三存储代理之间的第二代理基准同步相关联;以及
将从所述第二存储代理接收的所述数据与所述第一存储代理上存储的对应数据协调。
10.根据权利要求9所述的方法,其特征在于,所述最近第一代理同步点与所述第一存储代理和所述第三存储代理之间的最新第一代理同步相关联。
11.根据权利要求9所述的方法,其特征在于,所述第二代理基准同步点与发生在所述第一代理同步时间之前的所述第二存储代理和所述第三存储代理之间的最新第二代理同步相关联。
12.根据权利要求9所述的方法,其特征在于,所述协调包括:
确定所接收的数据是否旧于所述第一存储代理上存储的所述对应数据;
当所接收的数据旧于所述对应数据时,忽略所接收的数据;以及
当所接收的数据新于所述对应数据时,利用所接收的数据替代所述对应数据。
13.一种计算机可读存储介质,所述计算机可读存储介质包括致使系统执行操作以将数据分配至存储网络的存储代理的指令,所述操作包括:
通过第一存储代理接收最近第二代理同步点,所述最近第二代理同步点与第二存储代理和第三存储代理之间的第二代理同步的最近第二代理同步时间相关联;
基于所述最近第二代理同步点,确定第一代理基准同步点,所述第一代理基准同步点与发生在所述第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的第一代理同步的第一代理基准同步时间相关联;以及
基于所述第一代理基准同步点,建立所述第一存储代理和所述第二存储代理之间的数据同步的第一代理基准。
14.根据权利要求13所述的计算机可读存储介质,其特征在于,所述操作还进一步包括:基于所述第一代理基准,确定在所述第一代理基准同步时间后通过所述第一存储代理来更新的数据。
15.根据权利要求14所述的计算机可读存储介质,其特征在于,所述操作还进一步包括:将在所述第一代理基准同步时间后通过所述第一存储代理来更新的所述数据传达到所述第二存储代理。
16.根据权利要求13所述的计算机可读存储介质,其特征在于,所述最近第二代理同步点与所述第二存储代理和所述第三存储代理之间的最新第二代理同步相关联。
17.根据权利要求13所述的计算机可读存储介质,其特征在于,所述第一代理基准同步点与发生在所述最近第二代理同步时间之前的所述第一存储代理和所述第三存储代理之间的最新第一代理同步相关联。
18.根据权利要求13所述的计算机可读存储介质,其特征在于,所述操作还进一步包括:
通过所述第一存储代理将最近第一代理同步点传送到所述第二存储代理,所述最近第一代理同步点与所述第一存储代理和所述第三存储代理之间的最近第一代理同步的最近第一代理同步时间相关联;
通过所述第一存储代理从所述第二存储代理处接收如基于与第二代理基准同步点相关的第二代理基准确定的在所述最近第一代理同步后更新的数据,所述第二代理基准同步点与发生在所述最近第一代理同步时间之前的所述第二存储代理和所述第三存储代理之间的第二代理基准同步时间相关联;以及
将从所述第二存储代理接收的所述数据与所述第一存储代理上存储的对应数据协调。
19.根据权利要求18所述的计算机可读存储介质,其特征在于,所述协调包括:
确定所接收的数据是否旧于所述第一存储代理上存储的所述对应数据;
当所接收的数据旧于所述对应数据时,忽略所接收的数据;以及
当所接收的数据新于所述对应数据时,利用所接收的数据替代所述对应数据。
20.根据权利要求13所述的计算机可读存储介质,其特征在于,所述最近第二代理同步点包括以下一或多个:所述第二存储代理和所述第三存储代理的版本号、所述第二存储代理和所述第三存储代理的标识符,以及所述第二存储代理和所述第三存储代理之间的所述第二代理同步中涉及的所述数据的本地分配的版本号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/137,691 US20140195482A1 (en) | 2013-01-08 | 2013-12-20 | Data synchronization in a storage network |
US14/137,691 | 2013-12-20 | ||
PCT/US2014/071762 WO2015095852A1 (en) | 2013-01-08 | 2014-12-20 | Data synchonization in a storage network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105830055A true CN105830055A (zh) | 2016-08-03 |
Family
ID=56551030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480068537.XA Pending CN105830055A (zh) | 2013-12-20 | 2014-12-20 | 存储网络中的数据同步 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20160065117A (zh) |
CN (1) | CN105830055A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133508A1 (en) * | 1999-07-03 | 2002-09-19 | Starfish Software, Inc. | System and methods for synchronizing datasets using cooperation among multiple synchronization engines |
US20040127242A1 (en) * | 2002-12-31 | 2004-07-01 | Dashevsky Jane Y. | Apparatus and associated methods for the synchronization of shared content |
CN101072091A (zh) * | 2006-05-09 | 2007-11-14 | 国际商业机器公司 | 用于客户端与服务器同步的系统和方法 |
-
2014
- 2014-12-20 CN CN201480068537.XA patent/CN105830055A/zh active Pending
- 2014-12-20 KR KR1020167009335A patent/KR20160065117A/ko not_active Application Discontinuation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133508A1 (en) * | 1999-07-03 | 2002-09-19 | Starfish Software, Inc. | System and methods for synchronizing datasets using cooperation among multiple synchronization engines |
US20040127242A1 (en) * | 2002-12-31 | 2004-07-01 | Dashevsky Jane Y. | Apparatus and associated methods for the synchronization of shared content |
CN101072091A (zh) * | 2006-05-09 | 2007-11-14 | 国际商业机器公司 | 用于客户端与服务器同步的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20160065117A (ko) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140195482A1 (en) | Data synchronization in a storage network | |
US20230185565A1 (en) | Blockchain Computer Data Distribution | |
EP2834759B1 (en) | Telemetry system for a cloud synchronization system | |
CN109218348B (zh) | 一种区块链中区块的确定方法及节点设备 | |
CN112000355B (zh) | 用于固件升级的方法及装置、家电设备 | |
CN107231400B (zh) | 一种数据的同步方法和装置 | |
CN110162334B (zh) | 一种代码管理方法、装置及存储介质 | |
CN111597567B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN108833610B (zh) | 一种信息更新方法、装置及系统 | |
CN109145060A (zh) | 数据处理方法及装置 | |
CN110535776A (zh) | 网关限流方法、装置、网关、系统及存储介质 | |
US20170300553A1 (en) | System and methodology for propagating modifications in key-value pairs across a cluster of computers | |
CN103701653A (zh) | 一种接口热插拔配置数据的处理方法及网络配置服务器 | |
CN114996350A (zh) | 一种区块链中的区块状态同步方法及第一节点 | |
CN112291318B (zh) | 一种区块链网络节点添加方法、系统、存储介质和装置 | |
US11805407B2 (en) | Apparatus and method for securely updating binary data in vehicle | |
CN104063377A (zh) | 信息处理方法和使用其的电子设备 | |
CN104717280A (zh) | 数据同步的标记方法和装置 | |
JP6343983B2 (ja) | 仮想記憶ゲート・システム | |
CN105830055A (zh) | 存储网络中的数据同步 | |
CN103425707A (zh) | 数据分析方法和装置 | |
CN103475582B (zh) | 一种lsp数据的同步方法和设备 | |
CN107422991B (zh) | 一种存储策略管理系统 | |
CN108228226B (zh) | 硬链接的差分方法、装置及相应终端 | |
CN109739535B (zh) | 一种对产品进行驱动维护的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160803 |
|
WD01 | Invention patent application deemed withdrawn after publication |