Assignment of a data identifier to first and second volumes

According to examples, an apparatus may include a processor and a non-transitory machine-readable storage medium comprising instructions executable by the processor to assign a first object identifier and a data identifier to a first volume, the first object identifier being assigned exclusively to the first volume. The instructions may also be executable by the processor to identify an identifier of a second volume, determined whether the identifier of the second volume matches the data identifier, and based on a determination that the identifier of the second volume matches the data identifier of the first volume, configure a replication relationship between the first volume and the second volume.

BACKGROUND

Storage systems may be used for a variety of purposes including access to shared data by multiple users and data storage. Storage systems may include storage devices that are collocated with each other and/or located at multiple locations. Data stored at storage devices may be replicated and the replicated copies of the data may be stored on multiple storage devices to safeguard against the failure of a single storage device. As such, when a storage device fails or the data in the storage device is inadvertently erased or edited, a copy of the desired data may be retrieved from another storage device.

DETAILED DESCRIPTION

Disclosed herein are apparatuses and methods for assigning a common data identifier to multiple volumes having a common data source. Particularly, in addition to a first object identifier that is assigned exclusively to a first volume, a data identifier may also be assigned to the first volume. Moreover, in addition to a second object identifier that is assigned exclusively to a second volume that is a replica of the first volume, the same data identifier that is assigned to the first volume may be assigned to the second volume. In one regard, the data identifier of the first volume may be assigned to any volumes or snapshots that have a common data source, e.g., have the same data, as the first volume regardless of whether the volumes or snapshots are moved, replicated, or the like and regardless of whether the volumes or snapshots are stored in the same or different storage nodes. As such, for instance, volumes or snapshots having the common data source may be readily identified from the data identifiers assigned to the volumes or snapshots. In addition, the data identifiers assigned to the volumes or snapshots may be invariant, e.g., may not be changed once the data identifiers have been assigned.

According to examples, a determination as to whether the identifier of a configuration candidate volume matches the data identifier of a first volume may be made. Based on a determination that the identifier of the configuration candidate volume matches the data identifier, a replication relationship between the first volume and the configuration candidate volume may be configured, e.g., set-up. That is, the configuration candidate volume, while configured for the replication relationship with the first volume, may be synchronized with the first volume such that changes to the first volume may continuously or periodically be propagated to the configuration candidate volume. In addition, the synchronization may be synchronous or asynchronous. In instances in which the first volume is to be restored, the first volume may be restored using the configuration candidate volume.

It should be understood that references to a configuration of a replication relationship between volumes may also include a reconfiguration of a previously existing replication relationship. Likewise, it should be understood that references to a sync between volumes and/or between a snapshot and volume may also include a resync of a previous sync.

A technical problem associated with managing multiple volumes and snapshots may be that tracking and identifying volumes or snapshots having desired data may be a time-consuming and resource intensive process. This may be exacerbated in instances in which the volumes or snapshots are moved or severed from sync replication relationships. For instance, identifying volumes or snapshots having the desired data that have been severed from replication relationships, e.g., volumes or snapshots that are related to each other, may include comparing, bit by bit, the data in the volumes or snapshots to determine whether the data in the volumes or snapshots are the same with respect to each other. As a result, for instance, when a volume is to be synced, e.g., restored to a current or a previous version, identifying an appropriate snapshot from which to sync, e.g., replicate, the volume may consume a great deal of time and resources.

Through implementation of aspects of the present disclosure, e.g., assigning the same data identifier to volumes and snapshots having a common data source, the volumes and snapshots having the common data source may readily be identified from the data identifiers assigned to the volumes and snapshots. That is, the volumes and snapshots having the common data source may be identified without having to compare the data contained in the volumes or snapshots. Thus, for instance, snapshots that are in-sync, e.g., have the same version of data, with a volume (or with other snapshots) may readily be identified based on the data identifiers assigned to the snapshots. In addition, as the data identifiers may be invariant, the relationships between the snapshots and volumes having the common data source may remain known even when the snapshots or volumes are moved, replicated, etc. Accordingly, volumes and snapshots having common data sources (e.g., starting points) may be identified from the data identifier assigned to the volumes and snapshots. As a result, for instance, when an original volume that has been moved or replicated, or for which snapshots have been created, is to be synced, the snapshot from which the volume is to be synced may readily be identified from the data identifier of the original volume.

A technical improvement provided by the apparatuses and methods disclosed herein may be that a processor may quickly and efficiently identify a suitable snapshot for use in restoring a volume through use of the data identifiers disclosed herein. In addition, the processor may quickly and efficiently, e.g., with a reduced amount of computational resource usage, identify the snapshot regardless of whether the snapshot was severed, e.g., moved, replicated, etc., from a sync replication relationship with the intended volume. As a result, the processor may restore an intended volume quickly, which may also reduce downtime of the intended volume.

As used herein, a “volume” may refer to a manageable entity that contains data for a given application or a logical unit number (LUN). As used herein “snapshot” may refer to a temporal dependent view of a collection of data. In other words, a data source and applications operating on data being housed in the data source may have a given state of the data as it exists at a particular instant in time captured as a snapshot. A “data source’ may refer to a volume or collection of volumes that house the data for applications. An “application” may refer to a set of software instructions, a service, or a system that interacts with data housed at the data source. A “replicated volume” or “replicated source” may refer to a mirror of a local volume or a first volume. That is, the replicated volume (e.g., a second volume) may be a remote volume that is external to a local volume and that is being kept in synchronization with the local volume via some mechanism, such as synchronous block-based data replication.

Reference is first made toFIGS. 1 and 2.FIG. 1shows a block diagram of an example apparatus100that may manage tracking of volumes through use of a data identifier.FIG. 2depicts a block diagram of an example system200that may include a host202that may be communicatively coupled via a network204to a distributed storage system206. It should be understood that the example apparatus100depicted inFIG. 1and the system200depicted inFIG. 2may include additional features and that some of the features described herein may be removed and/or modified without departing from either of the scopes of the apparatus100or the system200.

The apparatus100may be a computing device, a server, a storage system controller, a storage node controller, or the like. As shown inFIG. 1, the apparatus100may include a processor102that may control operations of the apparatus100. The processor102may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other suitable hardware device. Although the apparatus100is depicted as including a single processor102, it should be understood that the apparatus100may include multiple processors, multiple cores, or the like, without departing from a scope of the apparatus100.

The apparatus100may also include a machine-readable storage medium110that may have stored thereon machine readable instructions112-118(which may also be termed computer readable instructions) that the processor102may execute. The machine-readable storage medium110may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. The machine-readable storage medium110may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The machine-readable storage medium110may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals.

As shown inFIG. 2, the distributed storage system206may include a storage system controller208, which, according to examples, may be equivalent to the apparatus100depicted inFIG. 1. The distributed storage system206may also include a plurality of storage nodes212-1to212-N, where the variable “N” is a value greater than one. The storage system controller208and the plurality of storage nodes212-1to212-N may be communicatively coupled to one another via a network210. The storage system controller208may receive read requests and write requests from the host202. In response to receiving a read request, the storage system controller208may read data from one or more of the storage nodes212-1to212-N. In response to receiving a write request, the storage system controller208may write data to one or more of storage nodes212-1to212-N.

The storage system controller208may store data on the storage nodes212-1to212-N in a redundant manner (e.g., using erasure coding or data mirroring), so that even if one or more of the storage nodes212-1to212-N were to fail, data loss may be prevented. To allow for the redundant storage of data, the storage nodes212-1to212-N may operate independently of one another. That is, the failure of one or more of the storage nodes212-1to212-N may not cause the failure of the remainder of the storage nodes212-1to212-N. The storage nodes212-1to212-N may be geographically distributed (e.g., distributed at geographically disparate locations). A consequence of the distributed nature of the storage nodes212-1to212-N may be an asymmetry between intra-node and inter-node data retrieval. In other words, a first storage node212-1may read data from or write data to locally more quickly, than if the first storage node212-1were to read data from or write data to a neighboring storage node212-2.

The network204and/or the network210may include a LAN, WAN, MAN, wired or wireless network, private or public network, etc. While the storage system controller208is depicted as a component that is separate from each of the storage nodes212-1to212-N, the storage system controller208may be instantiated within one or more of the storage nodes212-1to212-N. In these examples, a storage system controller208instantiated in one or more of the storage nodes212-1may be equivalent to the apparatus100depicted inFIG. 1. In addition, in the case that the storage system controller208may be instantiated within the first storage node212-1and the second storage node212-2, the first storage node212-1may be known as a group leader and the second storage node212-2may be known as a backup leader (or vice versa).

With reference to bothFIGS. 1 and 2, the processor102may fetch, decode, and execute the instructions112to assign a first object identifier222and a data identifier224to a first volume220. The first volume220may be created and/or stored in a first storage node212-1and the processor102may assign the first object identifier222and the data identifier224to the first volume220during or after creation and/or storage of the first volume220. Although the first volume220is depicted as being stored in a storage node212-1, it should be understood that the first volume220may be stored across multiple storage nodes212-1, e.g., an array of storage nodes212-1.

The first object identifier222may be an arrangement of bits, numbers, letters, symbols, or the like, that may distinguish the first volume from other volumes. In this regard, the processor102may exclusively assign the first object identifier222to the first volume220, e.g., the first object identifier222may be unique to the first volume220such that the first volume220alone may be identified by the first object identifier222. The data identifier224may also be an arrangement of bits, numbers, letters, symbols, or the like, that the processor102may assign to the first volume220as a distinguishing identifier. However, the data identifier224may differ from the first object identifier222in that the data identifier224may be assigned to multiple volumes in instances in the volumes have the same data. That is, the processor102may assign the same data identifier224to replicas or snapshots of the first volume220as well as snapshots of replica volumes of the first volume220. In addition, the data identifier224may, once assigned to a volume or snapshot, be invariant, e.g., may not be changed. In any regard, the processor102may randomly generate the data identifier224, for instance, as a 64 bit number. In this regard, the processor102may generate the data identifier224separately from the data contained in the volume, e.g., the data identifier224may not be derived from the data contained in the volume.

The processor102may fetch, decode, and execute the instructions114to identify an identifier of a second volume230. The second volume230may be created and/or stored in a second storage node212-2and the processor102may have assigned the second volume230with a second object identifier232and an identifier224during or after creation and/or storage of the second volume230. Although the second volume230is depicted as being stored in a storage node212-2, it should be understood that the second volume220may be stored across multiple storage nodes212-2, e.g., an array of storage nodes212-2.

In instances in which the second volume230includes the same data as the first volume220, the processor102may have assigned the second volume with the same data identifier224as the first volume220. However, if the data of the first volume220or the second volume230has been changed, the first volume220may have a different data identifier than the second volume230. In other words, if the data of the first volume220differs from the data of the second volume230, the second volume230may be construed as being out-of-sync with the first volume220. In various instances in which the identifier224of the second volume230matches the data identifier224of the first volume220, the second volume230may be construed as a replica of the first volume220.

In one regard, the processor102may assign the same data identifier224to the second volume230as was assigned to the first volume220because the second volume230includes the same data as the first volume220, e.g., the first volume220shares the common data source with the second volume230. In addition, the processor102may assign the same data identifier224to additional volumes having the same version of the data as in the first volume220as the data in the first volume220is the common data source to the additional volumes. However, the processor102may exclusively assign the second object identifier232to the second volume230, e.g., the second object identifier232may be unique to the second volume230such that the second volume230alone may be identified by the second object identifier232. In addition, the second object identifier232may be an arrangement of bits, numbers, letters, symbols, or the like, that may uniquely distinguish the second volume230from other volumes.

It should be understood that the first object identifier222and the data identifier224are depicted inFIG. 2as representing a relationship between the first object identifier222and the data identifier224and the first volume220. Likewise, it should be understood that the second object identifier232and the data identifier224are depicted inFIG. 2as representing a relationship between the second object identifier232and the data identifier224and the second volume230. As such, the object identifiers222,232and the data identifiers224may not be stored in the storage nodes212-1,212-2. Instead, the processor102may store the assignment of the data identifier224to the first volume220and the second volume230in a data store (not shown), which may be part of the storage system controller208, a storage node212-1, or the like. The processor102may also store the assignment of the first object identifier222to the first volume220and the assignment of the second object identifier232to the second volume230in the data store. By way of example, the processor102may store the assignments along with the identifiers in a look up table or other searchable manner.

The processor102may fetch, decode, and execute the instructions118to, based on a determination that the identifier of the second volume230matches the data identifier224of the first volume220, configure a replication relationship between the first volume220and the second volume230. As the matching data identifiers224may be an indication that the second volume230and the first volume220each includes the same version of data from a common data source, the data in the first volume220may be restored to a particular state. While configured for the replication relationship, the second volume230may be synchronized with the first volume220such that changes to the first volume220may be continuously or periodically propagated to the second volume230. The synchronization may be synchronous or asynchronous.

According to examples, the processor102may, through use of the data identifiers, identify a volume with which to configure for a replication relationship with the first volume220in a simple and efficient manner, e.g., without having to compare the states of the data in the first volume220or the volume. In addition or alternatively, the processor may restore the first volume220using the data in the volume for which a replication relationship with the first volume220has been configured.

According to examples, the processor102may also create a snapshot of the second volume230. The processor102may also determine that the second volume is in-sync with the first volume220and based on that determination, may assign the data identifier224to the snapshot of the second volume230. The processor102may further assign snapshot identifier to the snapshot of the second volume230, in which the snapshot identifier is unique to the snapshot.

However, based on a determination that the second volume230has not been assigned the data identifier224of the first volume220, the processor102may determine that the data in the second volume230and the data in the first volume220do not match. As a result, the processor102may not configure a replication relationship between the first volume220and the second volume230. In addition, the processor102may consider the data identifiers of additional candidate volumes until the processor102identifies a candidate volume having a matching data identifier224from the list of sync candidate volumes. The processor102may further configure a replication relationship between the first volume220and the candidate volume having the matching data identifier224. In addition, the processor102may restore the first volume220using the sync candidate volume having the matching data identifier224.

In addition, the processor102may create a third volume (not shown) in an array of storage nodes, e.g., the first storage node212-1, the second storage node212-2and/or in a third storage node212-3. The processor102may similarly create additional volumes. Each of the first volume220, the second volume230, and any additional volumes created from first volume220, e.g., replicas of the first volume220, may be considered as having a common data source, which, in this example is the version of the data in the first volume220at the time the second volume230and/or the addition volumes were created.

According to examples, the processor102may replicate or move the second volume230to generate a third volume. In addition, the processor102may assign the data identifier224and a third object identifier to the third volume, in which the third object identifier may be assigned exclusively to the third volume. The processor102may further configure a replication relationship between the first volume220and the third volume based on the third volume having the same data identifier224as the first volume220. In this regard, even though the third volume was not replicated directly from the first volume220, the third volume may still be configured to have a replication relationship with the first volume220. The replication relationship may thus be configured between the volumes following volume moves and/or replications through use of the data identifier224.

Turning now toFIG. 3, there is shown a block diagram of an example storage node212-1of the distributed storage system206depicted inFIG. 2. As shown, the storage node212-1may include a storage node controller302communicatively coupled to a plurality of storage devices304-1to304-M, in which the variable “M” may represent a value greater than one. The storage node controller302, according to examples, may be equivalent to the apparatus100depicted inFIG. 1. In any regard, the storage node controller302may receive read requests and write requests from the storage system controller208. In response to receipt of a read request, the storage node controller302may read data from one or more of the storage devices304-1to304-M. In response to receipt of a write request, the storage node controller302may write data to one or more of the storage devices304-1to304-M. The storage devices304-1to304-M may include one or more hard disk drives (HDDs), solid state drives (SSDs), optical drives, etc.

According to examples, the storage node controller302may store data in volumes in the storage devices304-1to304-M in a redundant manner, so that even if one or more of the storage devices304-1to304-M were to fail, data may not be lost. Thus, for instance, the storage node controller302may store the first volume220in a first storage device304-1and the second volume230in a second storage device304-2. To allow for the redundant storage of data, the storage devices304-1to304-M may operate independently of one another. That is, the failure of one or more of the storage devices304-1to304-M may not cause the failure of the remainder of the storage devices304-1to304-M. In contrast to the distributed nature of the distributed storage system206, the components of a storage node212-1may be located at the same geographical location. In some examples, all of the storage devices304-1to304-M of a storage node212-1may be located within a single chassis. One consequence of such a physical arrangement may be that the storage node controller302may read data from and write data to the storage devices304-1to304-M with minimal delay.

While one storage node controller302has been depicted inFIG. 3, it may be understood that one or more storage node controllers may be employed (e.g., in an active/standby arrangement). Further, it may be understood that the other storage nodes212-2to212-N may contain similar components as storage node212-1.

Instead of the machine-readable storage medium110, the apparatus100may include hardware logic blocks that may perform functions similar to the instructions112-118. In other examples, the apparatus100may include a combination of instructions and hardware logic blocks to implement or execute functions corresponding to the instructions112-118. In any of these examples, the processor102may implement the hardware logic blocks and/or execute the instructions112-118. As discussed herein, the apparatus100may also include additional instructions and/or hardware logic blocks such that the processor102may execute operations in addition to or in place of those discussed above with respect toFIG. 1.

Reference is made toFIGS. 4A-4C, which respectively depict diagrams of an example replication branch or multiple example replication branches of snapshots. With reference first toFIG. 4A, a replication branch400of snapshots402may include a plurality of snapshots402-1to402-4. Each of the snapshots402-1to402-4may be a snapshot of the first volume220and may contain the same data state as the first volume220(shown inFIG. 2). As such, each of the snapshots402-1to402-4may have been assigned the same data identifier224as the first volume220. For instance, each of the snapshots402-1to402-4may be snapshots of replica volumes of the first volume220stored on different storage devices304-1to304-M of a storage node212-1, on different storage devices of multiple storage nodes212-1,212-2, etc. In other examples, the snapshots402-1to402-4may be snapshots of the first volume220created at different times (as denoted by the arrow403) while the data in the first volume220remained in an unaltered state.

The replication branch400may also be assigned a replication branch identifier (e.g., B1) that identifies the snapshots402-1to402-4that are included in that replication branch400. That is, for instance, each of the snapshots402-1to402-4in the replication branch400may be assigned the same replication branch identifier (B1). In addition, the replication branch400may be considered to be the active replication branch for the first volume220. That is, the replication branch400may include the snapshot402-1to402-4from which the first volume220may be synced.

FIG. 4Bshows, for instance, a downstream volume branch404, which may be a replication branch of the second volume230. As the second volume230and the first volume220may have the common data source, the downstream volume branch404may include the snapshots402-1to402-4. As such, the snapshots402-1to402-4in the downstream volume branch404may have the same data identifier224as the snapshots402-1to402-4in the replication branch400. In other words, in instances in which data of the snapshots402-1to402-4matches the data of the first volume220, the data identifier224may be assigned to the snapshots402-1to402-4. However, in instances in which the data of the snapshots402-1to402-4does not match the data of the first volume220, the snapshots402-1to402-4may be assigned with other data identifiers. The downstream volume branch404may also be assigned a second branch identifier.

In addition, a second replication branch406may be created, for instance, based on the first volume220being synced, e.g., the data stored in the first volume220being modified, and a new snapshot402-5of the first volume220being created. That is, additional snapshots of the first volume220may be assigned the replication branch identifier of the second replication branch406. In addition, the updated first volume220may be assigned an updated data identifier and thus, the new snapshot402-5may also be assigned the updated data identifier. The second replication branch406may be assigned a third branch identifier and the second replication branch406may be an active branch because the new snapshot406may be the most recent snapshot of a current data state of the first volume220. Thus, for example, in instances in which the first volume220is to be synced to a most recent data state, the processor102may sync the first volume220from the new snapshot408.

Turning now toFIG. 4C, there is shown an example in which the first volume220is to be synced using a snapshot402-4other than the new snapshot402-5. That is,FIG. 4Cmay show an example in which the first volume220is synced from data in a prior version of first volume220. Through recovery of the first volume220to the earlier data state, a third replication branch408may be created from the earlier snapshot402-4. The active branch may now depend from the earlier snapshot402-4and thus, new snapshots may be assigned the same data identifier as the earlier snapshot402-4until the data in the first volume220changes and a new data identifier is assigned to the modified first volume220. The replication branch408may also be assigned a fourth branch identifier.

Various manners in which the apparatus100may operate are discussed in greater detail with respect to the methods500-800respectively depicted inFIGS. 5-8. Particularly,FIG. 5depicts a flow diagram of an example method500for syncing a first volume220from an identified snapshot. In addition,FIGS. 6-8respectively depict flow diagrams of example methods600-800pertaining to various operations that the processor102may implement with regard to additional volumes/snapshots in a distributed storage system206. It should be understood that the methods500-800may include additional operations and that some of the operations described therein may be removed and/or modified without departing from the scopes of the methods500-800. The descriptions of the methods500-800are made with reference to the features depicted inFIGS. 1-4Cfor purposes of illustration.

With reference first toFIG. 5, at block502, the processor102may assign a first object identifier222and a data identifier224to a first volume220. The processor102may assign the first object identifier222and the data identifier224to the first volume220as discussed above with respect toFIG. 1.

At block504, the processor102may replicate the first volume220to generate a second volume230. The processor102may replicate the first volume220to create the second volume230in a second storage node212-2. In other examples, however, the processor102may create the second volume230in the first storage node212-1. In still other examples, the processor102may create a third volume (not shown) in the first storage node212-1, the second storage node212-2and/or in a third storage node212-3.

At block506, the processor102may assign the data identifier224and a second object identifier232to the second volume230. The processor102may assign the same data identifier224to the second volume230as was assigned to the first volume220because the second volume230includes the same data as the first volume220. The processor102may also exclusively assign the second object identifier232to the second volume230, e.g., the second object identifier232may be unique to the second volume230such that the second volume230alone may be identified by the second object identifier232.

At block508, the processor102may identify a snapshot in a replication branch of snapshots that is assigned the data identifier224assigned to the first volume220. For instance, the processor102may identify a snapshot402-4that has been assigned the same data identifier224as the first volume220, in which the data identifier224may correspond to the first volume220having a desired data state. In this regard and as discussed above with respect toFIGS. 4B and 4C, the identification of the snapshot402-4may depend on whether the first volume220is to be synced to, for instance, a current data state or a prior data state.

At block510, the processor102may sync the first volume220from the identified snapshot402-4. That is, for instance, the processor102may replace and/or update the data in the first volume220with the data in the identified snapshot402-4. In one regard, therefore, the processor102may identify the desired snapshot through an identification of the data identifier224of the desired snapshot and may restore the data in the first volume220to a previous state as contained in the desired snapshot. Accordingly, for instance, through use of the data identifiers224disclosed herein, the processor102may restore the first volume220in a relatively simple and efficient manner.

With reference now to the example method600depicted inFIG. 6, at block602, the processor102may replicate or move the second volume230to generate a third volume. In addition, at block604, the processor102may assign a third object identifier and the data identifier224to the third volume. The third object identifier may be an identifier that is assigned exclusively to the third volume. In this regard, and because the third volume includes the common data source as the first volume220and the second volume230, the third volume is also assigned the same data identifier224. The data identifier224may also be assigned to other volumes that have the common data source as the first volume220. Moreover, at block604, the processor102may configure a replication relationship between the first volume220and the third volume.

Reference is now made to the example method700depicted inFIG. 7. In the method700, the first volume220may be part of a first replication branch400, which the first replication branch400may include a first snapshot402-1and a second snapshot402-2of the first volume220. At block702, the processor102may determine whether data of the second snapshot402-2matches data of the first volume220. At block704, based on a determination that the data of the second snapshot402-2matches the data of the first volume220, the processor102may assign the data identifier224to the second snapshot402-2. However, at block706, based on a determination that the data of the second snapshot402-2does not match the data of the first volume220, the processor102may assign a second data identifier to the second snapshot402-2. In other words, the processor102may assign a data identifier to the second snapshot402-2that is different from the data identifier assigned to the first volume220.

At block708, the processor102may assign a first branch identifier to the first volume220. In addition, at block710, the processor102may assign a second branch identifier to the second volume230, in which the second volume230may be part of a second replication branch404.

At block712, the processor102may determine whether data of a third snapshot402-3matches data of the first volume220, which may be assigned to the second replication branch404. That is, the processor102may determine whether the third snapshot402-3shares a common data source with the first volume220. At block714, based on a determination that the data of the third snapshot402-3matches the data of the first volume220, the processor102may assign the data identifier224to the third snapshot402-3. However, at block716, based on a determination that the data of the third snapshot402-3does not match the data of the first volume220, the processor102may assign a third data identifier to the third snapshot402-3. In other words, the processor102may assign a data identifier to the third snapshot402-3that is different from the data identifier assigned to the first volume220.

Turning now toFIG. 8, at block802, the processor102may identify an active replication branch of snapshots. That is, for instance, the processor102may identify which of the replication branches404-408is currently active, e.g., contains snapshots corresponding to a most recent version of the data contained in the first volume220. At block804, the processor102may identify an identifier of a snapshot of the first volume220in the identified active branch. At block806, the processor102may determine whether the identifier of the snapshot matches the data identifier224of the first volume220. At block808, based on a determination that the identifier of the snapshot matches the data identifier224of the first volume220, the processor102may sync the first volume220from the snapshot. However, at block810, based on a determination that the identifier of the snapshot does not match the data identifier224of the first volume220, the processor102may not sync the first volume220from the snapshot. Instead, the processor102may identify a snapshot having the same data identifier and may use that identified snapshot to sync the first volume220.

Through implementation of the methods400-800, a processor102may manage replicas and snapshots of volumes in a manner that enables data to be uniquely identified while the data is copied or moved, e.g., via snapshot replication, sync replication, etc. That is, data may be uniquely identified even when the data is moved or replicated across storage devices, branches, volumes, etc. Thus, for instance, data that has not been modified from an original version or a particularly modified data may easily and quickly be identified. In one regard, a replica of the data, e.g., a snapshot of the data, that may be used to restore data in a volume may be identified in a relatively quick manner. As a result, the volume may be restored to a desired data state, which may reduce downtime of the volume.

Some or all of the operations set forth in the methods500-800may be contained as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the methods500-800may be embodied by computer programs, which may exist in a variety of forms. For example, some operations of the methods500-800may exist as machine readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.

Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

With reference now toFIGS. 9 and 10, there are respectively shown example non-transitory machine-readable storage mediums900and1000for syncing a first volume220from an identified snapshot. The machine-readable storage mediums900and1000may each be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. The machine-readable storage mediums900and1000may each be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like.

With reference first toFIG. 9, the non-transitory machine-readable storage medium900may have stored thereon machine readable instructions902-912that a processor, e.g., the processor102, may execute. The machine readable instructions902may cause the processor to assign a first object identifier222and a data identifier224to a first volume220. The machine readable instructions902may cause the processor to create a first snapshot of the first volume220. The machine readable instructions906may cause the processor to assign a second object identifier232and the data identifier224to the first snapshot of the first volume220. The machine readable instructions908may cause the processor to receive an instruction to sync the first volume220. The machine readable instructions910may cause the processor to identify, based on receipt of the instruction to sync the first volume220, a snapshot in a replication branch of snapshots that is assigned the data identifier224. In addition, the machine readable instructions912may cause the processor to sync the first volume220from the identified snapshot.

With reference now toFIG. 10, the non-transitory machine-readable storage medium1000may have stored thereon machine readable instructions902-912and1002-1012that a processor, e.g., the processor102, may execute. The machine readable instructions1002may cause the processor to determine whether data of a second snapshot matches data of the first volume220, in which the first volume220is part of a first replication branch, the first replication branch having the first snapshot and a second snapshot of the first volume220. The machine readable instructions1004may cause the processor to, based on a determination that the data of the second snapshot matches the data of the first volume220, assign the data identifier224to the second snapshot. The machine readable instructions1004may cause the processor to, based on a determination that the data of the second snapshot does not match the data of the first volume220, assign a second data identifier to the second snapshot.

The machine readable instructions1006may cause the processor to determine whether data of a third snapshot of the first volume220matches data of the first volume220, in which a second replication branch includes the third snapshot of the first volume220. The machine readable instructions1008may cause the processor to, based on a determination that the data of the third snapshot matches the data of the first volume220, assign the data identifier224to the third snapshot. The machine readable instructions1010may cause the processor to, based on a determination that the data of the third snapshot does not match the data of the first volume220, assign a third data identifier to the third snapshot. The machine readable instructions1006may cause the processor to store the assignment of the first object identifier222and the data identifier224to the first volume220and the assignment of the second object identifier232and the data identifier224to the snapshot230of the first volume220in a data store.