IP Library Granted Patent US 11,089,105
Granted Patent B1
US 11,089,105 · App. 16/372,620 · Granted Aug 10, 2021

Synchronously replicating datasets in cloud-based storage systems

Inventors: Aswin Karumbunathan (San Francisco, CA); John Colgrove (Los Altos, CA); Constantine Sapuntzakis (Mountain View, CA); Joshua Freilich (San Francisco, CA); Naveen Neelakantam (Mountain View, CA); Sergey Zhuravlev (Campbell, CA); 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,089,105
App. No.
16/372,620
Granted
Aug 10, 2021
Kind
B1
Abstract

A storage system for synchronously replicating a dataset across hardware-based storage systems and cloud-based storage systems, the storage system including specifying a set of managed objects, a set of management operations, and a set of access operations to correspond to the dataset, where management operations can modify or query managed objects equivalently through the hardware-based storage systems and the cloud-based storage systems; access operations to read or modify the dataset operate equivalently through the hardware-based storage systems and the cloud-based storage systems; each hardware-based storage system and each cloud-based storage system stores a separate copy of the dataset as a proper subset of the datasets stored and advertised for use; and operations to modify managed objects or the dataset performed and completed through the hardware-based storage systems and the cloud-based storage systems are reflected in subsequent management objects to query the dataset or subsequent access operations to read the dataset.

Claims (60)

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

specifying a set of managed objects, a set of management operations, and a set of access operations to correspond to a dataset that is synchronously replicated across hardware-based storage systems and cloud-based storage systems;

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.

2. The storage system of claim 1 , wherein the program instructions, when executed, cause the 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 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 storage system accessible for management and dataset operations.

4. The storage system of claim 1 , wherein the program instructions, when executed, cause the 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.

5. The storage system of claim 1 , wherein the storage system is a cloud-based storage system, and wherein the program instructions, when executed, cause the 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.

6. The storage system of claim 5 , 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.

7. The storage system of claim 5 , 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.

8. A method comprising:

specifying a set of managed objects, a set of management operations, and a set of access operations to correspond to a dataset that is synchronously replicated across hardware-based storage systems and cloud-based storage systems;

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.

9. The method of claim 8 , further comprising:

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

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

10. The method of claim 8 , 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.

11. The method of claim 8 , 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.

12. The method of claim 8 , wherein the storage system is a cloud-based storage system, and wherein the method further comprises:

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.

13. The method of claim 12 , 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.

14. The method of claim 12 , 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.

15. 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:

specifying a set of managed objects, a set of management operations, and a set of access operations to correspond to a dataset that is synchronously replicated across hardware-based storage systems and cloud-based storage systems;

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.

16. The apparatus of claim 15 , 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.

17. The apparatus of claim 15 , wherein the storage system is a cloud-based storage system, and wherein the computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps 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.

18. The method of claim 1 wherein each hardware-based storage system and each cloud-based storage system stores a separate copy of the dataset as a proper subset of the datasets stored.

19. The method of claim 1 wherein operations to modify managed objects or the dataset performed and completed through the hardware-based storage systems and the cloud-based storage systems are reflected in subsequent management objects to query the dataset or subsequent access operations to read the dataset.

20. The method of claim 1 wherein access operations to read or modify the dataset operate equivalently through the hardware-based storage systems and the cloud-based storage systems.

Assignments (4)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2023
From: KARUMBUNATHAN, ASWIN; COLGROVE, JOHN; SAPUNTZAKIS, CONSTANTINE; FREILICH, JOSHUA; NEELAKANTAM, NAVEEN; ZHURAVLEV, SERGEY; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 064297/0001 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2019
From: KARUMBUNATHAN, ASWIN; COLGROVE, JOHN; SAPUNTZAKIS, CONSTANTINE; FREILICH, JOSHUA; NEELAKANTAM, NAVEEN; ZHURAVLEV, SERGEY; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 048764/0701 →
Cited By (38)
US 12,197,758 US 12,204,416 US 12,204,786 US 12,238,165 US 12,248,428 US 12,255,817 US 12,299,310 US 12,299,508 US 12,301,671 US 12,321,246 US 12,321,396 US 12,321,621 US 12,321,627 US 12,348,583 US 12,373,414 US 12,393,485 US 12,395,573 US 12,399,788 US 12,405,862 US 12,406,056 US 12,436,707 US 12,445,371 US 12,445,372 US 12,468,835 US 12,477,038 US 12,494,859 US 12,500,678 US 12,549,463 US 12,550,037 US 12,554,510 US 12,578,896 US 12,608,280 US 12,613,729 US 12,613,864 US 12,639,379 US 12,670,170 US 12,705,212 US 12,711,032