# US 12,181,981 B1 · Asynchronously protecting a synchronously replicated dataset

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

- Number: US 12,181,981 B1
- Document ID: US12181981B1
- Status: Granted
- Kind: B1
- Application number: 16/855,348
- Filed: 2020-04-22
- Granted: 2024-12-31
- Earliest claimed: 2018-05-21
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Marten Heidemeyer; Vivekkumar Patel; Neale Genereux; David Grunwald; Thomas Gill; Daquan Zuo
- Web page: https://patentgrep.com/patent/US12181981B1

## CPC

- G06F 11/1469: {Backup restoration techniques}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- 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 16/275: {Synchronous replication}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2201/815: Virtual
- 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 recovery storage system asynchronously protecting a synchronously replicated dataset, where the asynchronous protection of the synchronously replicated dataset includes: receiving, by a recovery storage system, an identifier of a synchronously replicated dataset, wherein the synchronously replicated dataset is a dataset synchronously replicated across the plurality of storage systems; asynchronously replicating, on the recovery storage system, the synchronously replicated dataset from the plurality of storage systems; detecting that each dataset in the synchronously replicated dataset on the plurality of storage systems has become unavailable; and restoring the dataset on the recovery storage system.

## Claims

### Claim 1

A method, the method comprising:
receiving, by a recovery storage system of a plurality of recovery storage systems, an identifier of a dataset, wherein the recovery storage system is not a member of a plurality of storage systems that synchronously replicate the dataset;
asynchronously replicating, by the recovery storage system, the dataset, from the plurality of storage systems, wherein the recovery storage system asynchronously receives, from different storage systems of the plurality of storage systems, snapshots of the dataset indicating modifying operations of the dataset that the plurality of storage systems is synchronously replicating;
detecting, by the recovery storage system, that the dataset on the plurality of storage systems has become unavailable by detecting that the plurality of storage systems is not servicing requests; and
upon detecting that the plurality of storage systems is not servicing requests, synchronously replicating the dataset among the plurality of recovery storage systems, whereby modifying operations directed to the dataset that are completed through any one recovery storage system during synchronous replication are reflected in subsequent access operations to read the dataset from any other recovery storage system of the plurality of recovery storage systems, including servicing requests for the dataset using the dataset on one or more of the plurality of recovery storage systems.

### Claim 2 (depends on 1)

The method of claim 1, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises receiving, by the recovery storage system, snapshots of the synchronously replicated dataset.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
instantiating a virtual machine using snapshots received from the plurality of storage systems.

### Claim 4 (depends on 1)

The method of claim 1, wherein detecting that each dataset in the synchronously replicated dataset on the plurality of storage systems has become unavailable comprises determining that each storage system in the plurality of storage systems has become unresponsive.

### Claim 5 (depends on 1)

The method of claim 1, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises receiving updates to the synchronously replicated dataset from different storage systems in the plurality of storage systems based on performance metrics of each of the plurality of storage systems.

### Claim 6 (depends on 1)

The method of claim 1, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises using the identifier of the synchronously replicated dataset to locate the synchronously replicated dataset and begin asynchronous replication.

### Claim 7 (depends on 1)

The method of claim 1, wherein the plurality of storage systems is an active cluster of storage systems synchronously replicating the dataset.

### Claim 8 (depends on 1)

The method of claim 1, wherein a storage system in the plurality of storage systems switches from the plurality of storage systems synchronously replicating the dataset to a recovery storage system asynchronously replicating the dataset.

### Claim 9 (depends on 1)

The method of claim 1, wherein another recovery storage system switches from a recovery storage system asynchronously replicating the dataset to the plurality of storage systems synchronously replicating the dataset.

### Claim 10

A recovery storage system, the recovery storage system comprising a computer processor and a computer memory operatively coupled to the computer processor, the computer memory storing computer program instructions that, when executed by the computer processor, cause the recovery storage system to carry out the steps of:
receiving, by a recovery storage system of a plurality of recovery storage systems, an identifier of a dataset, wherein the recovery storage system is not a member of a plurality of storage systems that synchronously replicate the dataset;
asynchronously replicating, by the recovery storage system, the dataset, from the plurality of storage systems, wherein the recovery storage system asynchronously receives, from different storage systems of the plurality of storage systems, snapshots of the dataset indicating modifying operations of the dataset that the plurality of storage systems is synchronously replicating;
detecting, by the recovery storage system, that the dataset on the plurality of storage systems has become unavailable by detecting that the plurality of storage systems is not servicing requests; and
upon detecting that the plurality of storage systems is not servicing requests, synchronously replicating the dataset among the plurality of recovery storage systems, whereby modifying operations directed to the dataset that are completed through any one recovery storage system during synchronous replication are reflected in subsequent access operations to read the dataset from any other recovery storage system of the plurality of recovery storage systems, including servicing requests for the dataset using the dataset on one or more of the plurality of recovery storage systems.

### Claim 11 (depends on 10)

The recovery storage system of claim 10, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises receiving, by the recovery storage system, snapshots of the synchronously replicated dataset.

### Claim 12 (depends on 10)

The recovery storage system of claim 10, further comprising:
instantiating a virtual machine using snapshots received from the plurality of storage systems.

### Claim 13 (depends on 10)

The recovery storage system of claim 10, wherein detecting that each dataset in the synchronously replicated dataset on the plurality of storage systems has become unavailable comprises determining that each storage system in the plurality of storage systems has become unresponsive.

### Claim 14 (depends on 10)

The recovery storage system of claim 10, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises receiving updates to the synchronously replicated dataset from different storage systems in the plurality of storage systems based on performance metrics of each of the plurality of storage systems.

### Claim 15 (depends on 10)

The recovery storage system of claim 10, wherein asynchronously replicating, on the recovery storage system, the dataset from the plurality of storage systems comprises using the identifier of the synchronously replicated dataset to locate the synchronously replicated dataset and begin asynchronous replication.

### Claim 16 (depends on 10)

The recovery storage system of claim 10, wherein the plurality of storage systems is an active cluster of storage systems synchronously replicating the dataset.

### Claim 17 (depends on 10)

The recovery storage system of claim 10, wherein a storage system in the plurality of storage systems switches from the plurality of storage systems synchronously replicating the dataset to a recovery storage system asynchronously replicating the dataset.

### Claim 18 (depends on 10)

The recovery storage system of claim 10, wherein another recovery storage system switches from a recovery storage system asynchronously replicating the dataset to the plurality of storage systems synchronously replicating the dataset.
