# US 10,372,554 B1 · Verification and restore of replicated data using a cloud storing chunks of data and a plurality of hashes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,554 B1
- Document ID: US10372554B1
- Status: Granted
- Kind: B1
- Application number: 14/143,825
- Filed: 2013-12-30
- Granted: 2019-08-06
- Earliest claimed: 2013-12-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC Corporation
- Inventors: Assaf Natanzon; Eran Weiss
- Web page: https://patentgrep.com/patent/US10372554B1

## CPC

- G06F 11/1469: {Backup restoration techniques}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0617: {in relation to availability}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1464: {for networked environments}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 2201/83: the solution involving signatures
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer implemented method, system, and computer program product for data replication and restoration. The method includes downloading a plurality of hashes from a cloud corresponding to a set of backed up hashes for a set of chunks, wherein each chunk corresponds to a portion of a LUN at a production site at a point in time, determining a second plurality of hashes for the LUN at the production site, and comparing each of the second plurality of hashes for the LUN at the production site with the plurality of hashes downloaded from the cloud. The method further includes downloading data corresponding to one or more non-matching hashes from the cloud, and restoring the data that was downloaded to the LUN on the production site. Once the LUN has been validated, interception of IOs by a splitter may be stopped.

## Claims

### Claim 1

A system comprising:
a production site including a LUN;
a cloud having storage, wherein the cloud stores a plurality of chunks and a plurality of hashes, wherein each chunk corresponds to a portion of the LUN at a point in time, and wherein each hash of the plurality of hashes corresponds to a chunk;
one or more processors; and
memory storing computer-executable program logic, wherein the computer-executable program logic is configured to cause execution, by the one or more processors, of:
downloading the plurality of hashes from the cloud;
determining a second plurality of hashes for the LUN on the production site, wherein each hash of the second plurality of hashes corresponds to a value for a portion of the LUN;
comparing each of the second plurality of hashes for the LUN with each of the plurality of hashes downloaded from the cloud to determine if the compared hashes match:
downloading data, corresponding to one or more non-matching non-corresponding hashes, from the cloud, wherein the data corresponds to one or more chunks corresponding to the one or more non-matching hashes; and
restoring the data that was downloaded to the LUN on the production site.

### Claim 2 (depends on 1)

The system of claim 1 wherein the computer-executable program logic is further configured to cause execution, by the one or more processors, of:
providing instant access to the LUN regardless of whether or not the LUN has been validated; and
if a portion of the LUN is accessed, in an access request that has not been validated, validating the LUN in response to the access request.

### Claim 3 (depends on 2)

The system of claim 2 wherein the computer-executable program logic is further configured to cause execution, by the one or more processors, of:
validating the LUN, via a background process, while access to the LUN is enabled.

### Claim 4 (depends on 1)

The system of claim 1 wherein downloading the data corresponding to the one or more non-matching hashes includes:
downloading the one or more chunks corresponding to the one or more non-matching hashes from the cloud;
uncompressing the one or more chunks; and
unencrypting the one or more chunks.

### Claim 5

A computer implemented method, the method comprising:
executing computer-executable program logic by one or more processors on a computer having memory storing the computer-executable program logic, to implement the steps of:
downloading a plurality of hashes from a cloud corresponding to a set of backed up hashes for a set of chunks, wherein each chunk of the set of chunks is stored in the cloud and corresponds to a portion of a LUN at a production site at a point in time;
determining a second plurality of hashes for the LUN on the production site; and
comparing each of the second plurality of hashes for the LUN with each of the plurality of hashes downloaded from the cloud to determine if the compared hashes match;
downloading data, corresponding to one or more non-matching hashes, from the cloud, wherein the data corresponds to one or more chunks corresponding to the one or more non-matching hashes; and
restoring the data that was downloaded to the LUN on the production site.

### Claim 6 (depends on 5)

The method of claim 5 further comprising:
providing instant access to the LUN regardless of whether or not the LUN has been validated; and
if a portion of the LUN is accessed, in an access request that has not been validated, validating the LUN in response to the access request.

### Claim 7 (depends on 6)

The method of claim 6 further comprising:
validating the LUN, via a background process, while access to the LUN is enabled.

### Claim 8 (depends on 7)

The method of claim 7 wherein if an Input/Output (IO) is directed to a location that has been validated, where a location that has been validated is a location on a LUN for which a hash has been compared to a hash downloaded from the cloud for the location and found to match, the IO directed to the validated location is allowed to process.

### Claim 9 (depends on 5)

The method of claim 5 wherein downloading the data corresponding to the one or more non-matching hashes includes:
downloading the one or more chunks corresponding to the one or more non-matching hashes from the cloud;
uncompressing the one or more chunks; and
unencrypting the one or more chunks.

### Claim 10 (depends on 9)

The method of claim 9 wherein Input/Outputs (IOs) to the LUN are intercepted by a splitter.

### Claim 11 (depends on 10)

The method of claim 10 wherein once the LUN has been validated, the splitter stops intercepting IOs.

### Claim 12

A computer program product comprising:
a non-transitory computer readable medium encoded with computer executable program code, the code is configured to cause execution, by one or more processors, of:
downloading a plurality of hashes from a cloud corresponding to a set of backed up hashes for a set of chunks, wherein each chunk of the set of chunks is stored in the cloud and corresponds to a portion of a LUN at a production site at a point in time;
determining a second plurality of hashes for the LUN on the production site;
comparing each of the second plurality of hashes for the LUN with each of the plurality of hashes downloaded from the cloud;
if corresponding hashes do not match:
downloading data corresponding to one or more non-matching hashes from the cloud; wherein the data corresponds to one or more chunks corresponding to the one or more non-matching hashes; and
restoring the data to the LUN on the production site.

### Claim 13 (depends on 12)

The computer program product of claim 12 wherein downloading the data corresponding to the one or more non-matching hashes includes:
downloading the one or more chunks corresponding to the one or more non-matching hashes from the cloud;
uncompressing the one or more chunks; and
unencrypting the one or more chunks.

### Claim 14 (depends on 12)

The computer program product of claim 12 wherein the computer-executable program code further is configured to cause execution, by the one or more processors, of:
providing instant access to the LUN regardless of whether or not the LUN has been validated; and
if a portion of the LUN is accessed, in an access request that has not been validated, validating the LUN in response to the access request.

### Claim 15 (depends on 14)

The computer program product of claim 14 wherein the computer executable program code further is configured to cause execution, by the one or more processors, of:
validating the LUN, via a background process, while access to the LUN is enabled.

### Claim 16 (depends on 14)

The computer program product of claim 14 wherein Input/Outputs (IOs) to the LUN are intercepted by a splitter.

### Claim 17 (depends on 16)

The computer program product of claim 16 wherein if an Input/Output (IO) is directed to a location that has been validated, where a location that has been validated is a location on a LUN for which a hash has been compared to a hash downloaded from the cloud for the location and found to match, the computer-executable program code further is configured to cause execution, by the one or more processors of:
allowing the IO directed to the validated location to process.

### Claim 18 (depends on 16)

The computer program product of claim 16 wherein once the LUN has been validated, the splitter stops intercepting IOs.
