# US 11,029,875 B2 · System and method for data storage in distributed system across multiple fault domains

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

- Number: US 11,029,875 B2
- Document ID: US11029875B2
- Status: Granted
- Kind: B2
- Application number: 16/145,336
- Filed: 2018-09-28
- Published: 2020-04-02
- Granted: 2021-06-08
- Earliest claimed: 2018-09-28
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Dharmesh M Patel; Rizwan Ali; Ravikanth Chaganti
- Web page: https://patentgrep.com/patent/US11029875B2

## CPC

- G06F 3/065: {Replication mechanisms}
- G06F 11/2058: {using more than 2 mirrored copies}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 9/5016: {the resource being the memory}
- G06F 11/2064: {while ensuring consistency}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A data storage system includes an accelerator pool and data silos. The accelerator pool obtains a data storage request for first data; stores a copy of the first data locally in a memory of the accelerator pool; in response to storing the copy of the first data: sends an acknowledgement to a requesting entity that generated the data storage request; and, after sending the acknowledgement, stores at least one second copy of the first data in the data silos. The acknowledgement indicates that the first data is redundantly stored in at least two different fault domains.

## Claims

### Claim 1

A data storage system, comprising:
an accelerator pool comprising memory and persistent storage; and
data silos,
wherein the accelerator pool is programmed to:
obtain a data storage request for first data;
store a copy of the first data locally in the memory;
in response to storing the copy of the first data and prior to the first data being stored in more than one fault domain and prior to any copies of the first data being stored in the persistent storage:
send an acknowledgement to a requesting entity that generated the data storage request; and
after sending the acknowledgement, store at least one second copy of the first data in the data silos,
wherein the acknowledgement indicates that the first data is redundantly stored in at least two different fault domains.

### Claim 2 (depends on 1)

The data storage system of claim 1, wherein the accelerator pool and the data silos are in independent fault domains.

### Claim 3 (depends on 1)

The data storage system of claim 1, wherein the data silos comprise:
a first data silo in a first fault domain; and
a second data silo in a second fault domain,
wherein the first fault domain is independent from the second fault domain.

### Claim 4 (depends on 3)

The data storage system of claim 3, wherein storing the at least one second copy of the first data in the data silos comprises:
sending the first data to only the first data silo to sequentially store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in the second data silo,
wherein the accelerator pool does not send the first data to the second data silo.

### Claim 5 (depends on 4)

The data storage system of claim 4, wherein the second copy of the first data in the first data silo is stored via Remote Direct Memory Access (RDMA) of memory of the first data silo by the accelerator pool.

### Claim 6 (depends on 4)

The data storage system of claim 4, wherein the third copy of the first data is stored in the second data silo after the second copy of the first data is stored in the first data silo.

### Claim 7 (depends on 3)

The data storage system of claim 3, wherein storing at least the second copy of the first data in the data silos comprises:
sending the first data to both of the first data silo and the second data silo to, at least partially in parallel, store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in the second data silo.

### Claim 8 (depends on 1)

The data storage system of claim 1, wherein the accelerator pool comprises accelerators, wherein each of the accelerators comprises:
non-volatile random-access memory; and
persistent storage.

### Claim 9 (depends on 8)

The data storage system of claim 8, wherein each of the accelerators is programmed to:
store the copy of the first data in the non-volatile random-access memory;
after storing the copy of the first data, send the acknowledgement; and
after sending the acknowledgement, migrate the copy of the first data to the persistent storage.

### Claim 10 (depends on 1)

The data storage system of claim 1, wherein the data silos are programmed to:
obtain a second data storage request for second data;
store the second data in the data silos without storing any copies of the second data in the accelerator pool.

### Claim 11 (depends on 10)

The data storage system of claim 10, wherein the second data is stored without utilizing any computing resources of the accelerator pool.

### Claim 12

A method for storing data in a data storage system, comprising:
obtaining, by an accelerator pool comprising memory and persistent storage, a data storage request for first data;
storing a copy of the first data locally in the memory;
in response to storing the copy of the first data and prior to the first data being stored in more than one fault domain and prior to any copies of the first data being stored in the persistent storage:
sending an acknowledgement to a requesting entity that generated the data storage request; and
after sending the acknowledgement, storing at least one second copy of the first data in data silos,
wherein the acknowledgement indicates that the first data is redundantly stored in at least two different fault domains.

### Claim 13 (depends on 12)

The method of claim 12, wherein storing the at least one second copy of the first data in the data silos comprises:
sending the first data to only a first data silo of the data silos to sequentially store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in a second data silo of the data silos,
wherein the accelerator pool does not send the first data to the second data silo,
wherein the first data silo and the second data silo are in independent fault domains.

### Claim 14 (depends on 13)

The method of claim 13, wherein storing the third copy of the first data in the first data silo comprises:
remotely directly accessing, by the accelerator pool, a memory of the second data silo; and
storing the third copy of the first data in the memory of the second data silo via the remotely directly accessing of the memory.

### Claim 15 (depends on 12)

The method of claim 12, wherein the accelerator pool and the data silos are in independent fault domains.

### Claim 16 (depends on 12)

The method of claim 12, wherein storing the at least one second copy of the first data in the data silos comprises:
sending the first data to both of a first data silo of the data silos and a second data silo of the data silos to, at least partially in parallel, store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in the second data silo.

### Claim 17

A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to perform a method for storing data in a data storage system, the method comprising:
obtaining, by an accelerator pool comprising memory and persistent storage, a data storage request for first data;
storing a copy of the first data locally in the memory;
in response to storing the copy of the first data and prior to the first data being stored in more than one fault domain and prior to any copies of the first data being stored in the persistent storage:
sending an acknowledgement to a requesting entity that generated the data storage request; and
after sending the acknowledgement, storing at least one second copy of the first data in data silos,
wherein the acknowledgement indicates that the first data is redundantly stored in at least two different fault domains.

### Claim 18 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein storing the at least one second copy of the first data in the data silos comprises:
sending the first data to only a first data silo of the data silos to sequentially store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in a second data silo of the data silos,
wherein the accelerator pool does not send the first data to the second data silo,
wherein the first data silo and the second data silo are in independent fault domains.

### Claim 19 (depends on 18)

The non-transitory computer readable medium of claim 18, wherein storing the third copy of the first data in the first data silo comprises:
remotely directly accessing, by the accelerator pool, a memory of the second data silo; and
storing the third copy of the first data in the memory of the second data silo via the remotely directly accessing of the memory.

### Claim 20 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein storing the at least one second copy of the first data in the data silos comprises:
sending the first data to both of a first data silo of the data silos and a second data silo of the data silos to, at least partially in parallel, store:
the at least one second copy of the first data in the first data silo; and
a third copy of the first data in the second data silo.
