# US 2019/0377638 A1 · Storage system spanning multiple failure domains

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

- Number: US 2019/0377638 A1
- Document ID: US20190377638A1
- Status: Published application
- Kind: A1
- Application number: 16/275,737
- Filed: 2019-02-14
- Published: 2019-12-12
- Earliest claimed: 2018-06-12
- Assignees: Weka.IO Ltd.
- Applicants: Weka.IO Ltd
- Inventors: Maor Ben Dayan; Omri Palmon; Liran Zvibel; Kanael Arditti
- Web page: https://patentgrep.com/patent/US20190377638A1

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/2082: {Data synchronisation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A plurality of failure domains are communicatively coupled to each other via a network, and each of the plurality of failure domains is coupled to one or more storage devices. A failure resilient stripe is distributed across the plurality of storage devices, such that two or more blocks of the failure resilient stripe are located in each failure domain.

## Claims

### Claim 1

A system comprising:
a first failure domain comprising a first backend and a first storage device; and
a second failure domain comprising a backend and a second storage device, wherein:
the first backend is operable to build a failure resilient stripe comprising a plurality of blocks,
two or more blocks of the plurality of blocks comprise error correction information,
two or more blocks of the plurality of blocks are located in the first storage device,
two or more blocks of the plurality of blocks are located in the second storage device,
upon a failure of the first failure domain, the two or more blocks of the plurality of blocks in the first storage device are regenerated according to the two or more blocks of the plurality of blocks in the second storage device, and
upon a failure of the second failure domain, the two or more blocks of the plurality of blocks in the second storage device are regenerated according to the two or more blocks of the plurality of blocks in the first storage device.

### Claim 2 (depends on 1)

The system of claim 1, wherein the first failure domain comprises a plurality of solid-state drives.

### Claim 3 (depends on 1)

The system of claim 1, wherein the first failure domain comprises one or more servers.

### Claim 4 (depends on 1)

The system of claim 1, wherein the first failure domain comprises a rack and a network switch.

### Claim 5 (depends on 1)

The system of claim 1, wherein if the first failure domain and the second failure domain lose communication with each other, a third failure domain is operable to determine which of the first failure domain and the second failure domain will continue running the system.

### Claim 6 (depends on 1)

The system of claim 1, wherein neither the first failure domain nor the second failure domain will rebuild the failure resilient stripe unless permission is granted by a third failure domain.

### Claim 7 (depends on 1)

The system of claim 1, wherein the first backend comprises a bucket that initially builds the failure resilient stripe.

### Claim 8 (depends on 1)

The system of claim 1, wherein the first backend comprises a bucket that is a leader of the failure resilient stripe.

### Claim 9 (depends on 1)

The system of claim 1, wherein the second backend comprises a bucket that becomes a leader of the failure resilient stripe if the first failure domain fails.

### Claim 10 (depends on 1)

The system of claim 1, wherein the first failure domain comprise an availability group.

### Claim 11

A method comprising:
receiving a plurality of data pieces by a first failure domain;
generating a plurality of error correction pieces according to the plurality of data pieces;
building a failure resilient stripe comprising a plurality of blocks using a first backend of the first failure domain, wherein each block of the plurality of blocks comprises one data piece of the plurality of data pieces or one error correction piece of the plurality of error correction pieces;
placing a first two or more blocks of the plurality of blocks in the first failure domain;
placing a second two or more blocks of the plurality of blocks in a second failure domain;
if the first failure domain fails, regenerating the first two or more blocks in the first failure domain according to the second two or more blocks in the second failure domain; and
if the second failure domain fails, regenerating the second two or more blocks in the second failure domain according to the first two or more blocks in the first failure domain.

### Claim 12 (depends on 11)

The method of claim 11, wherein the first failure domain comprises a plurality of storage devices.

### Claim 13 (depends on 11)

The method of claim 11, wherein the first failure domain comprises one or more servers.

### Claim 14 (depends on 11)

The method of claim 11, wherein the first failure domain comprises a rack and a network switch.

### Claim 15 (depends on 11)

The method of claim 11, wherein the method comprises determining which of the first failure domain and the second failure domain will rebuild the failure resilient stripe if the first failure domain and the second failure domain lose communication with each other.

### Claim 16 (depends on 11)

The method of claim 11, wherein neither the first failure domain nor the second failure domain will rebuild the failure resilient stripe unless permission is granted by a third failure domain.

### Claim 17 (depends on 11)

The method of claim 11, wherein the failure resilient stripe is built by a bucket in the first backend.

### Claim 18 (depends on 11)

The method of claim 11, wherein a bucket of the first backend is a leader of the failure resilient stripe.

### Claim 19 (depends on 11)

The method of claim 11, wherein the method comprises promoting a bucket of a second backend of the second failure domain to become a leader of the failure resilient stripe if the first failure domain fails.

### Claim 20 (depends on 11)

The method of claim 11, wherein the first failure domain comprise an availability group.
