IP Library Granted Patent US 11,716,385
Granted Patent B2
US 11,716,385 · App. 17/388,670 · Granted Aug 1, 2023

Utilizing cloud-based storage systems to support synchronous replication of a dataset

Inventors: Aswin Karumbunathan (San Francisco, CA); John Colgrove (Los Altos, CA); Constantine Sapuntzakis (Palo Alto, CA); Joshua Freilich (San Francisco, CA); Naveen Neelakantam (Mountain View, CA); Sergey Zhuravlev (Bothell, WA); Ronald Karr (Palo Alto, CA)
Assignee: PURE STORAGE, INC.
H04L67/1097
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,716,385
App. No.
17/388,670
Filed
Jul 29, 2021
Granted
Aug 1, 2023
Kind
B2
Art Unit
2168
USPC
709/219
Abstract

Synchronously replicating a dataset across cloud-based storage systems, including adding a cloud-based storage system to a set of storage systems that the dataset is synchronously replicated across, where access operations are applied to the dataset equivalently through all storage systems in the set, all storage systems in the set store a separate copy of the dataset, and operations to modify the dataset performed and completed through any of the storage systems in the set are reflected in access operations to read the dataset, the cloud-based storage system including one or more cloud computing instances executing a storage controller application, a virtual drive layer that includes one or more cloud computing instances with local storage for storing at least a portion of the dataset as block data, and an object storage layer for storing at least a portion of the dataset as object data.

Claims (72)

1. A storage system including memory storing program instructions that, when executed, cause the storage system to carry out the steps of:

attaching, to a set of storage systems that a dataset is synchronously replicated across, the set of storage systems including one or more of hardware-based storage systems and cloud-based storage systems, a cloud-based storage system that includes one or more cloud computing instances executing a storage controller application, a virtual drive layer that includes one or more cloud computing instances with local storage for storing at least a portion of the dataset as block data, and an object storage layer for storing at least a portion of the dataset as object data, wherein:

management operations are applied to managed objects equivalently through all storage systems in the set of storage systems,

access operations are applied to the dataset equivalently through all storage systems in the set of storage systems,

all storage systems in the set of storage systems store a separate copy of the dataset, and

operations to modify managed objects or the dataset performed and completed through any of the storage systems in the set of storage systems are reflected in subsequent management operations to query the dataset or subsequent access operations to read the dataset.

2. The storage system of claim 1 , wherein the program instructions, when executed, cause the cloud-based storage system to carry out the step of:

receiving a request to read a portion of the dataset; and

processing the request to read the portion of the dataset locally.

3. The storage system of claim 1 , wherein the program instructions, when executed, cause the cloud-based storage system to carry out the step of:

detecting a disruption in data communications with one or more of the other hardware-based storage systems or cloud-based storage systems;

determining whether to the cloud-based storage system should continue to synchronously replicate the dataset;

responsive to determining that the cloud-based storage system should continue to synchronously replicate the dataset, keeping the dataset on the cloud-based storage system accessible for management and dataset operations; and

responsive to determining that the cloud-based storage system should not continue to synchronously replicate the dataset, making the dataset on the cloud-based storage system inaccessible for management and dataset operations.

4. The storage system of claim 3 , wherein the program instructions, when executed, cause the cloud-based storage system to carry out the step of:

detecting that the disruption in data communications with one or more of the other hardware-based storage systems or cloud-based storage systems has been repaired; and

making the dataset on the cloud-based storage system accessible for management and dataset operations.

5. The storage system of claim 1 , wherein the program instructions, when executed, cause the cloud-based storage system to carry out the step of:

identifying a target storage system for asynchronously receiving the dataset, wherein the target storage system is not one of the hardware-based storage systems or the cloud-based storage systems across which the dataset is synchronously replicated;

identifying a portion of the dataset that is not being asynchronously replicated to the target storage system by any of the other hardware-based storage systems or the cloud-based storage systems; and

asynchronously replicating, to the target storage system, the portion of the dataset that is not being asynchronously replicated to the target storage system by any of the other hardware-based storage systems or the cloud-based storage systems, wherein two or more storage systems of the hardware-based storage systems or the cloud-based storage systems collectively replicate the entire dataset to the target storage system.

6. The storage system of claim 1 , wherein the program instructions, when executed, cause the cloud-based storage system to carry out the step of:

receiving, by the storage system, a request to write data to the storage system;

storing, in solid-state storage of the cloud-based storage system, the data; and

storing, in object-storage of the cloud-based storage system, the data.

7. The storage system of claim 6 , wherein storing, in solid-state storage of the cloud-based storage system, the data further comprises storing, in local storage of one or more cloud computing instances, the data.

8. The storage system of claim 6 , wherein storing, in object-storage of the cloud-based storage system, the data further comprises creating one or more equal sized objects, wherein each equal sized object includes a distinct chunk of the data.

9. A method comprising:

attaching, to a set of storage systems that a dataset is synchronously replicated across, the set of storage systems including one or more of hardware-based storage systems and cloud-based storage systems, a cloud-based storage system that includes one or more cloud computing instances executing a storage controller application, a virtual drive layer that includes one or more cloud computing instances with local storage for storing at least a portion of the dataset as block data, and an object storage layer for storing at least a portion of the dataset as object data, wherein:

management operations are applied to managed objects equivalently through all storage systems in the set of storage systems,

access operations are applied to the dataset equivalently through all storage systems in the set of storage systems,

all storage systems in the set of storage systems store a separate copy of the dataset, and

operations to modify managed objects or the dataset performed and completed through any of the storage systems in the set of storage systems are reflected in subsequent management operations to query the dataset or subsequent access operations to read the dataset.

10. The method of claim 9 , further comprising:

receiving a request to read a portion of the dataset; and

processing the request to read the portion of the dataset locally.

11. The method of claim 9 , further comprising:

detecting a disruption in data communications with one or more of the other hardware-based storage systems or cloud-based storage systems;

determining whether the particular storage system should continue to synchronously replicate the dataset;

responsive to determining that the particular storage system should continue to synchronously replicate the dataset, keeping the dataset on the particular storage system accessible for management and dataset operations; and

responsive to determining that the particular storage system should not continue to synchronously replicate the dataset, making the dataset on the particular storage system inaccessible for management and dataset operations.

12. The method of claim 11 , further comprising:

detecting that the disruption in data communications with one or more of the other hardware-based storage systems or cloud-based storage systems has been repaired; and

making the dataset on the storage system accessible for management and dataset operations.

13. The method of claim 9 , further comprising:

identifying a target storage system for asynchronously receiving the dataset, wherein the target storage system is not one of the hardware-based storage systems or the cloud-based storage systems across which the dataset is synchronously replicated;

identifying a portion of the dataset that is not being asynchronously replicated to the target storage system by any of the other hardware-based storage systems or the cloud-based storage systems; and

asynchronously replicating, to the target storage system, the portion of the dataset that is not being asynchronously replicated to the target storage system by any of the other hardware-based storage systems or the cloud-based storage systems, wherein two or more storage systems of the hardware-based storage systems or the cloud-based storage systems collectively replicate the entire dataset to the target storage system.

14. The method of claim 9 , wherein the method further comprises:

receiving, by the cloud-based storage system, a request to write data to the cloud-based storage system;

storing, in solid-state storage of the cloud-based storage system, the data; and

storing, in object-storage of the cloud-based storage system, the data.

15. The method of claim 14 , wherein storing, in solid-state storage of the cloud-based storage system, the data further comprises storing, in local storage of one or more cloud computing instances, the data.

16. The method of claim 14 , wherein storing, in object-storage of the cloud-based storage system, the data further comprises creating one or more equal sized objects, wherein each equal sized object includes a distinct chunk of the data.

17. An apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

attaching, to a set of storage systems that a dataset is synchronously replicated across, the set of storage systems including one or more of hardware-based storage systems and cloud-based storage systems, a cloud-based storage system that includes one or more cloud computing instances executing a storage controller application, a virtual drive layer that includes one or more cloud computing instances with local storage for storing at least a portion of the dataset as block data, and an object storage layer for storing at least a portion of the dataset as object data, wherein:

management operations are applied to managed objects equivalently through all storage systems in the set of storage systems,

access operations are applied to the dataset equivalently through all storage systems in the set of storage systems,

all storage systems in the set of storage systems store a separate copy of the dataset, and

operations to modify managed objects or the dataset performed and completed through any of the storage systems in the set of storage systems are reflected in subsequent management operations to query the dataset or subsequent access operations to read the dataset.

18. The apparatus of claim 17 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

receiving a request to read a portion of the dataset; and

processing the request to read the portion of the dataset locally.

19. The apparatus of claim 17 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

detecting a disruption in data communications with one or more of the other hardware-based storage systems or cloud-based storage systems;

determining whether to the particular storage system should continue to synchronously replicate the dataset;

responsive to determining that the particular storage system should continue to synchronously replicate the dataset, keeping the dataset on the particular storage system accessible for management and dataset operations; and

responsive to determining that the particular storage system should not continue to synchronously replicate the dataset, making the dataset on the particular storage system inaccessible for management and dataset operations.

20. The apparatus of claim 17 , wherein the computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

receiving, by the cloud-based storage system, a request to write data to the cloud-based storage system;

storing, in solid-state storage of the cloud-based storage system, the data; and

storing, in object-storage of the cloud-based storage system, the data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2021
From: KARUMBUNATHAN, ASWIN; COLGROVE, JOHN; SAPUNTZAKIS, CONSTANTINE; FREILICH, JOSHUA; NEELAKANTAM, NAVEEN; ZHURAVLEV, SERGEY; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 057023/0255 →
Continuity (9)
Continuation 16372620 · Apr 2, 2019
Continuation In Part 15842850 · Dec 14, 2017
Provisional Application 62769277 · Nov 19, 2018
Provisional Application 62768952 · Nov 18, 2018
Provisional Application 62598989 · Dec 14, 2017
Provisional Application 62518071 · Jun 12, 2017
Provisional Application 62502060 · May 5, 2017
Provisional Application 62470172 · Mar 10, 2017
Related Publication 20210360066A1 · Nov 18, 2021
Cited By (4)
US 12,326,876 US 12,554,510 US 12,572,560 US 12,640,947