IP Library Granted Patent US 11,366,600
Granted Patent B2
US 11,366,600 · App. 16/814,480 · Granted Jun 21, 2022

Moving snapshots from a local snapshot lineage on a storage system to a cloud snapshot lineage on cloud storage

Inventors: Shanmuga Anand Gunasekaran (Bangalore, IN); Deepak Vokaliga (Hopkinton, MA); Michael Anthony (Wilmington, MA); Mark Aldred (Franklin, MA); Anurag Bhatnagar (Bangalore, IN)
Assignee: EMC IP Holding Company LLC
G06F3/0647G06F3/0604G06F3/067G06F3/0653G06F3/0664G06F16/128
View Patent ↗
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 11,366,600
App. No.
16/814,480
Granted
Jun 21, 2022
Kind
B2
Abstract

An apparatus comprises a processing device configured to identify a snapshot lineage comprising (i) a local snapshot lineage stored on a storage system and (ii) a cloud snapshot lineage stored on cloud storage of a cloud external to the storage system. The processing device is also configured to select, in accordance with a snapshot policy, a snapshot in the local snapshot lineage to copy to the cloud snapshot lineage. The processing device is further configured to create a virtual device on the storage system, to link the selected snapshot to the virtual device, to determine data of the selected snapshot that is to be copied from the virtual device to a cloud storage volume on the cloud storage, and to copy the selected snapshot to the cloud snapshot lineage by copying the determined data from the virtual device to the cloud storage volume.

Claims (64)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

the at least one processing device being configured:

to identify a snapshot lineage comprising two or more snapshots of a storage volume comprising data stored on one or more storage devices of a storage system, the snapshot lineage comprising (i) a local snapshot lineage stored on at least one of the one or more storage devices of the storage system and (ii) two or more cloud snapshot lineages stored on cloud storage of two or more different clouds external to the storage system, wherein a first one of the two or more cloud snapshot lineages stored on first cloud storage of a first cloud external to the storage system comprises a first subset of the two or more snapshots of the storage volume and a second one of the two or more cloud snapshot lineages stored on second cloud storage of a second cloud external to the storage system comprises a second subset of the two or more snapshots of the storage volume, the second subset of the two or more snapshots of the storage volume being different than the first subset of the two or more snapshots of the storage volume;

to select, in accordance with at least one snapshot policy, at least one snapshot in the local snapshot lineage to copy to at least one of the two or more cloud snapshot lineages, wherein the at least one snapshot policy specifies at least one of: different encryption to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; different compression to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; and different ages at which snapshots residing in the local snapshot lineage are to be copied to different ones of the two or more cloud snapshot lineages;

to create a virtual device on the storage system;

to link the selected at least one snapshot to the virtual device;

to determine at least a subset of data of the selected at least one snapshot that is to be copied from the virtual device to at least one cloud storage volume on the cloud storage of at least one of the two or more clouds external to the storage system on which the at least one of the two or more cloud snapshot lineages is stored; and

to copy the selected at least one snapshot to the at least one of the two or more cloud snapshot lineages by copying the determined at least the subset of the data of the selected at least one snapshot from the virtual device to the at least one cloud storage volume.

2. The apparatus of claim 1 wherein the at least one processing device is further configured:

to invoke an application programming interface to submit a request for a list of snapshots of the local snapshot lineage that are to be shipped to the at least one of the two or more cloud snapshot lineages; and

to receive a response to invoking the application programming interface, the response comprising the list of snapshots of the local snapshot lineage that are to be shipped to the at least one of the two or more cloud snapshot lineages.

3. The apparatus of claim 2 wherein the application programming interface comprises a representational state transfer application programming interface, and wherein the request comprises an endpoint uniform resource locator specifying a path parameter comprising a unique identifier of the storage system.

4. The apparatus of claim 3 wherein the endpoint uniform resource locator further specifies a query parameter comprising an identifier of one or more storage groups of the storage system, the query parameter filtering the list of snapshots to snapshots associated with the identified one or more storage groups of the storage system.

5. The apparatus of claim 2 wherein the response to invoking the application programming interface comprises:

a storage group identifier of the storage system;

a snapshot set identifier for the snapshot lineage;

a list of one or more snapshots of the snapshot lineage that are currently stored in the local snapshot lineage; and

the at least one snapshot policy associated with the snapshot lineage.

6. The apparatus of claim 5 wherein the list of the one or more snapshots of the snapshot lineage that are currently stored in the local snapshot lineage comprises, for a given snapshot:

source volume information for the given snapshot in the storage system, the source volume information comprising an internal volume identifier associated with a source volume of the storage system, an externally addressable volume identifier for the source volume, and a track size of the source volume;

a size of the given snapshot; and

metadata comprising a key-value pair for the given snapshot.

7. The apparatus of claim 5 wherein the at least one snapshot policy specifies, for a given one of the two or more cloud snapshot lineages:

a destination cloud provider for the given cloud snapshot lineage;

encryption to be applied to snapshots copied to the given cloud snapshot lineage;

compression to be applied to snapshots copied to the given cloud snapshot lineage; and

an age at which snapshots residing in the local snapshot lineage are to be copied to the given cloud snapshot lineage.

8. The apparatus of claim 1 wherein creating the virtual device in the storage system and linking the selected at least one snapshot to the virtual device comprises:

invoking an application programming interface to submit a request to prepare the selected at least one snapshot for shipping to the at least one of the two or more cloud snapshot lineages, the request comprising an internal volume identifier associated with a source volume of the storage system and a snapshot set identifier for the snapshot lineage; and

receiving a response to invoking the application programming interface, the response comprising access volume information for the virtual device, the access volume information comprising an externally addressable volume identifier for the access volume and a track size of the access volume.

9. The apparatus of claim 8 wherein the application programming interface comprises a representational state transfer application programming interface, and wherein the request comprises an endpoint uniform resource locator specifying a path parameter comprising a unique identifier of the storage system.

10. The apparatus of claim 1 wherein determining the at least the subset of the data of the selected at least one snapshot comprises:

invoking an application programming interface to submit a request for a bitmap of data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the request comprising a snapshot identifier for the selected at least one snapshot, at least one starting track location of the data of the selected at least one snapshot on one or more storage devices of the storage system, at least one track count of a number of tracks from the at least one starting track location on the one or more storage devices that comprise the data of the selected at least one snapshot; and

receiving a response to invoking the application programming interface, the response comprising the bitmap of the data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the bitmap comprising, for each storage device of the storage system comprising the data of the selected at least one snapshot: a storage device name; a volume name of the selected at least one snapshot; a count representing a size of the data of the at least one snapshot; and a pointer to an array comprising bitmaps of the tracks of the storage device comprising the data of the selected at least one snapshot.

11. The apparatus of claim 10 wherein the request further comprises an identifier of a previous snapshot in the snapshot lineage stored in the at least one of the two or more cloud snapshot lineages, the at least one starting track location specifies a comparison starting track location for comparison between the data of the selected at least one snapshot and data of the previous snapshot in the snapshot lineage, and the at least one track count specifies a number of tracks from the comparison starting track location comprising data to be compared for differences between the selected at least one snapshot and the previous snapshot in the snapshot lineage.

12. The apparatus of claim 1 wherein the at least one processing device is further configured, responsive to successfully copying the selected at least one snapshot to the at least one of the two or more cloud snapshot lineages, to remove at least one previous snapshot from the at least one of the two or more cloud snapshot lineages.

13. The apparatus of claim 12 wherein removing the at least one previous snapshot from the at least one of the two or more cloud snapshot lineages comprises:

invoking an application programming interface to submit a request to clean up the at least one of the two or more cloud snapshot lineages, the request comprising an identifier of the at least one previous snapshot to be removed from the at least one of the two or more cloud snapshot lineages; and

receiving a response to invoking the application programming interface, the response comprising an indication of success of removal of the at least one previous snapshot from the at least one of the two or more cloud snapshot lineages.

14. The apparatus of claim 1 wherein the at least one processing device is part of the storage system.

15. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform steps of:

identifying a snapshot lineage comprising two or more snapshots of a storage volume comprising data stored on one or more storage devices of a storage system, the snapshot lineage comprising (i) a local snapshot lineage stored on at least one of the one or more storage devices of the storage system and (ii) two or more cloud snapshot lineages stored on cloud storage of two or more different clouds external to the storage system, wherein a first one of the two or more cloud snapshot lineages stored on first cloud storage of a first cloud external to the storage system comprises a first subset of the two or more snapshots of the storage volume and a second one of the two or more cloud snapshot lineages stored on second cloud storage of a second cloud external to the storage system comprises a second subset of the two or more snapshots of the storage volume, the second subset of the two or more snapshots of the storage volume being different than the first subset of the two or more snapshots of the storage volume;

selecting, in accordance with at least one snapshot policy, at least one snapshot in the local snapshot lineage to copy to at least one of the two or more cloud snapshot lineages, wherein the at least one snapshot policy specifies at least one of: different encryption to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; different compression to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; and different ages at which snapshots residing in the local snapshot lineage are to be copied to different ones of the two or more cloud snapshot lineages;

creating a virtual device on the storage system;

linking the selected at least one snapshot to the virtual device;

determining at least a subset of data of the selected at least one snapshot that is to be copied from the virtual device to at least one cloud storage volume on the cloud storage of at least one of the two or more clouds external to the storage system on which the at least one of the two or more cloud snapshot lineages is stored; and

copying the selected at least one snapshot to the at least one of the two or more cloud snapshot lineages by copying the determined at least the subset of the data of the selected at least one snapshot from the virtual device to the at least one cloud storage volume.

16. The computer program product of claim 15 wherein determining the at least the subset of the data of the selected at least one snapshot comprises:

invoking an application programming interface to submit a request for a bitmap of data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the request comprising a snapshot identifier for the selected at least one snapshot, at least one starting track location of the data of the selected at least one snapshot on one or more storage devices of the storage system, at least one track count of a number of tracks from the at least one starting track location on the one or more storage devices that comprise the data of the selected at least one snapshot; and

receiving a response to invoking the application programming interface, the response comprising the bitmap of the data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the bitmap comprising, for each storage device of the storage system comprising the data of the selected at least one snapshot: a storage device name; a volume name of the selected at least one snapshot; a count representing a size of the data of the at least one snapshot; and a pointer to an array comprising bitmaps of the tracks of the storage device comprising the data of the selected at least one snapshot.

17. The computer program product of claim 16 wherein the request further comprises an identifier of a previous snapshot in the snapshot lineage stored in the at least one of the two or more cloud snapshot lineages, the at least one starting track location specifies a comparison starting track location for comparison between the data of the selected at least one snapshot and data of the previous snapshot in the snapshot lineage, and the at least one track count specifies a number of tracks from the comparison starting track location comprising data to be compared for differences between the selected at least one snapshot and the previous snapshot in the snapshot lineage.

18. A method comprising steps of:

identifying a snapshot lineage comprising two or more snapshots of a storage volume comprising data stored on one or more storage devices of a storage system, the snapshot lineage comprising (i) a local snapshot lineage stored on at least one of the one or more storage devices of the storage system and (ii) two or more cloud snapshot lineages stored on cloud storage of two or more different clouds external to the storage system, wherein a first one of the two or more cloud snapshot lineages stored on first cloud storage of a first cloud external to the storage system comprises a first subset of the two or more snapshots of the storage volume and a second one of the two or more cloud snapshot lineages stored on second cloud storage of a second cloud external to the storage system comprises a second subset of the two or more snapshots of the storage volume, the second subset of the two or more snapshots of the storage volume being different than the first subset of the two or more snapshots of the storage volume;

selecting, in accordance with at least one snapshot policy, at least one snapshot in the local snapshot lineage to copy to at least one of the two or more cloud snapshot lineages, wherein the at least one snapshot policy specifies at least one of: different encryption to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; different compression to be applied to snapshots copied to different ones of the two or more cloud snapshot lineages; and different ages at which snapshots residing in the local snapshot lineage are to be copied to different ones of the two or more cloud snapshot lineages;

creating a virtual device on the storage system;

linking the selected at least one snapshot to the virtual device;

determining at least a subset of data of the selected at least one snapshot that is to be copied from the virtual device to at least one cloud storage volume on the cloud storage of at least one of the two or more clouds external to the storage system on which the at least one of the two or more cloud snapshot lineages is stored; and

copying the selected at least one snapshot to the at least one of the two or more cloud snapshot lineages by copying the determined at least the subset of the data of the selected at least one snapshot from the virtual device to the at least one cloud storage volume;

wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

19. The method of claim 18 wherein determining the at least the subset of the data of the selected at least one snapshot comprises:

invoking an application programming interface to submit a request for a bitmap of data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the request comprising a snapshot identifier for the selected at least one snapshot, at least one starting track location of the data of the selected at least one snapshot on one or more storage devices of the storage system, at least one track count of a number of tracks from the at least one starting track location on the one or more storage devices that comprise the data of the selected at least one snapshot; and

receiving a response to invoking the application programming interface, the response comprising the bitmap of the data of the selected at least one snapshot to be shipped to the at least one of the two or more cloud snapshot lineages, the bitmap comprising, for each storage device of the storage system comprising the data of the selected at least one snapshot: a storage device name; a volume name of the selected at least one snapshot; a count representing a size of the data of the at least one snapshot; and a pointer to an array comprising bitmaps of the tracks of the storage device comprising the data of the selected at least one snapshot.

20. The method of claim 19 wherein the request further comprises an identifier of a previous snapshot in the snapshot lineage stored in the at least one of the two or more cloud snapshot lineages, the at least one starting track location specifies a comparison starting track location for comparison between the data of the selected at least one snapshot and data of the previous snapshot in the snapshot lineage, and the at least one track count specifies a number of tracks from the comparison starting track location comprising data to be compared for differences between the selected at least one snapshot and the previous snapshot in the snapshot lineage.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2020
From: GUNASEKARAN, SHANMUGA ANAND; VOKALIGA, DEEPAK; ANTHONY, MICHAEL; ALDRED, MARK; BHATNAGAR, ANURAG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052078/0473 →
Continuity (1)
Related Publication 20210286539A1 · Sep 16, 2021