IP Library Patent Application 14950456
Patent Application
App. No. 14/950,456

CONTENT-BASED REPLICATION OF DATA BETWEEN STORAGE UNITS

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
14/950,456
Abstract

Methods, systems, and computer programs are presented for replicating data across storage systems. One method includes an operation for transferring a snapshot of a volume from an upstream array to a downstream array. The method further includes an operation for comparing an upstream snapshot checksum of the snapshot in the upstream array with a downstream snapshot checksum of the snapshot in the downstream array. When the upstream snapshot checksum is different from the downstream snapshot checksum, a plurality of chunks in the snapshot are defined. Further, for each chunk in the snapshot, a comparison is made of an upstream chunk checksum calculated by the upstream array with a downstream chunk checksum calculated by the downstream array. When the upstream chunk checksum is different from the downstream chunk checksum then the data of the chunk is sent from the upstream array to the downstream array.

Claims (62)

1 . A method for replicating data across storage systems, the method comprising:

transferring a snapshot of a volume from an upstream array to a downstream array, the volume being a single accessible storage area within the upstream array;

comparing an upstream snapshot checksum of the snapshot in the upstream array with a downstream snapshot checksum of the snapshot in the downstream array;

when the upstream snapshot checksum is different from the downstream snapshot checksum, defining a plurality of chunks in the snapshot; and

for each chunk in the snapshot,

comparing an upstream chunk checksum calculated by the upstream array with a downstream chunk checksum calculated by the downstream array; and

sending, from the upstream array to the downstream array, data of the chunk when the upstream chunk checksum is different from the downstream chunk checksum.

2 . The method as recited in claim 1 , further including:

exchanging, before defining the plurality of chunks, transfer parameters between the upstream array and the downstream array, the transfer parameters including one or more of checksum type for calculating the upstream chunk checksum and the downstream chunk checksum, or a checksum size, or a chunk size, or a cursor indicating at what chunk to start the comparing of the upstream chunk checksum and the downstream chunk checksum.

3 . The method as recited in claim 2 , further including:

starting comparing the upstream chunk checksum with the downstream chunk checksum at the chunk indicated by the cursor.

4 . The method as recited in claim 1 , wherein comparing the upstream chunk checksum with the downstream chunk checksum further includes:

calculating, by the upstream array, the upstream chunk checksum;

sending, from the upstream array to the downstream array, a request to get the downstream chunk checksum;

calculating, by the downstream array, the downstream chunk checksum;

sending the downstream chunk checksum to the upstream array; and

comparing, by the upstream array, the upstream chunk checksum with the downstream chunk checksum.

5 . The method as recited in claim 1 , wherein transferring the snapshot of the volume includes transferring all data from the snapshot from the upstream array to the downstream array, wherein the upstream array is a first storage system that includes a first processor, a first volatile memory, and a first permanent storage, wherein the downstream array is a second storage system that includes a second processor, a second volatile memory, and a second permanent storage, wherein the upstream array stores the snapshot of the volume to be replicated to the downstream array, wherein a volume holds data for the single accessible storage area, wherein data of the volume is accessible by a host in communication with the storage system.

6 . The method as recited in claim 1 , further including:

sending, from the upstream array to the downstream array, a confirmation message indicating that the snapshot has been validated.

7 . The method as recited in claim 1 , wherein the snapshot of the volume includes one or more blocks, wherein data from the snapshot is accessed by a host in units of a size of the block, the method further including:

storing, in the upstream array, checksums of blocks of the snapshot; and

calculating the upstream chunk checksum based on the checksums of the blocks in the chunk, wherein the chunk is not uncompressed to calculate the upstream chunk checksum.

8 . The method as recited in claim 7 , wherein a chunk includes one hundred or more blocks, wherein data from the chunk is not directly addressable by the host.

9 . The method as recited in claim 7 , wherein a chunk has a size in a range from 1 Megabyte to 16 Megabytes, wherein a block has a block size in a range from 1 Kilobyte to 256 Kilobytes.

10 . A method for replicating data across storage systems, the method comprising:

transferring a snapshot of a volume from an upstream array to a downstream array, the volume being a single accessible storage area within the upstream array;

comparing an upstream snapshot checksum of the snapshot in the upstream array with a downstream snapshot checksum of the snapshot in the downstream array;

when the upstream snapshot checksum is different from the downstream snapshot checksum, defining a plurality of chunks in the snapshot; and

for each chunk in the snapshot,

comparing an upstream chunk checksum calculated by the upstream array with a downstream chunk checksum calculated by the downstream array;

when the upstream chunk checksum is different from the downstream chunk checksum, defining a plurality of blocks in the chunk; and

for each block in the chunk,

comparing an upstream block checksum calculated by the upstream array with a downstream block checksum calculated by the downstream array; and

sending, from the upstream array to the downstream array, data of the block when the upstream block checksum is different from the downstream block checksum.

11 . The method as recited in claim 10 , exchanging, before defining the plurality of chunks, transfer parameters between the upstream array and the downstream array, the transfer parameters including one or more of checksum type for calculating the upstream chunk checksum and the downstream chunk checksum, or a checksum size, or a chunk size, or a cursor indicating at what chunk to start the comparing of the upstream chunk checksum and the downstream chunk checksum.

12 . The method as recited in claim 11 , further including:

starting comparing the upstream chunk checksum with the downstream chunk checksum at the chunk indicated by the cursor.

13 . The method as recited in claim 10 , wherein data from the snapshot is accessed by a host in units of a size of the block, the method further including:

storing, in the upstream array, checksums of blocks of the snapshot; and

calculating the upstream chunk checksum based on the checksums of the blocks in the chunk, wherein the chunk is not uncompressed to calculate the upstream chunk checksum.

14 . The method as recited in claim 10 , wherein operations of the method are performed by a computer program when executed by one or more processors, the computer program being embedded in a non-transitory computer-readable storage medium.

15 . A non-transitory computer-readable storage medium storing a computer program for replicating data across storage systems, the computer-readable storage medium comprising:

program instructions for transferring a snapshot of a volume from an upstream array to a downstream array, the volume being a single accessible storage area within the upstream array;

program instructions for comparing an upstream snapshot checksum of the snapshot in the upstream array with a downstream snapshot checksum of the snapshot in the downstream array;

program instructions for, when the upstream snapshot checksum is different from the downstream snapshot checksum, defining a plurality of chunks in the snapshot; and

for each chunk in the snapshot,

program instructions for comparing an upstream chunk checksum calculated by the upstream array with a downstream chunk checksum calculated by the downstream array; and

program instructions for sending, from the upstream array to the downstream array, data of the chunk when the upstream chunk checksum is different from the downstream chunk checksum.

16 . The storage medium as recited in claim 15 , further including:

program instructions for exchanging, before defining the plurality of chunks, transfer parameters between the upstream array and the downstream array, the transfer parameters including one or more of checksum type for calculating the upstream chunk checksum and the downstream chunk checksum, or a checksum size, or a chunk size, or a cursor indicating at what chunk to start the comparing of the upstream chunk checksum and the downstream chunk checksum.

17 . The storage medium as recited in claim 16 , further including:

program instructions for starting comparing the upstream chunk checksum with the downstream chunk checksum at the chunk indicated by the cursor.

18 . The storage medium as recited in claim 15 , wherein comparing the upstream chunk checksum with the downstream chunk checksum further includes:

program instructions for calculating, by the upstream array, the upstream chunk checksum;

program instructions for sending, from the upstream array to the downstream array, a request to get the downstream chunk checksum;

program instructions for calculating, by the downstream array, the downstream chunk checksum;

program instructions for sending the downstream chunk checksum to the upstream array; and

program instructions for comparing, by the upstream array, the upstream chunk checksum with the downstream chunk checksum.

19 . The storage medium as recited in claim 15 , wherein transferring the snapshot of the volume includes transferring all data from the snapshot from the upstream array to the downstream array.

20 . The storage medium as recited in claim 15 , further including:

program instructions for sending, from the upstream array to the downstream array, a confirmation message indicating that the snapshot has been validated.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2015
From: BARSZCZAK, TOMASZ; KARAJE, GURUNATHA; BHAGAT, NIMESH
To: NIMBLE STORAGE, INC.
Reel/Frame 037135/0137 →