# US 2022/0035532 A1 · System and method for using free space to improve erasure code locality

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

- Number: US 2022/0035532 A1
- Document ID: US20220035532A1
- Status: Published application
- Kind: A1
- Application number: 17/503,861
- Filed: 2021-10-18
- Published: 2022-02-03
- Earliest claimed: 2019-05-02
- Assignees: Vast Data Ltd.
- Applicants: Vast Data LTD.
- Inventors: Yogev VAKNIN
- Web page: https://patentgrep.com/patent/US20220035532A1

## CPC

- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method for using free space for recovering erasure coding data sets. The method includes segmenting at least one erasure coding data set into at least one stripe based on an erasure coding scheme, wherein each erasure coding data set includes chunks, wherein the chunks include chunks of systematic data and chunks of parity data; distributing the at least one stripe across non-volatile memory nodes based on the erasure coding scheme, wherein each non-volatile memory node is a unit of a non-volatile storage device; and upon a first failure of one of the non-volatile memory nodes: detecting that at least one of the non-volatile memory nodes that is not failed includes a first free space that does not currently store user data; and performing a first recovery process for recovering a first portion of the at least one erasure coding data set, based on the first free space.

## Claims

### Claim 1

A method for using free space for recovering erasure coding data sets, comprising:
segmenting at least one erasure coding data set into at least one stripe based on an erasure coding scheme, wherein each erasure coding data set includes a plurality of chunks, wherein the plurality of chunks includes a plurality of chunks of systematic data and a plurality of chunks of parity data;
distributing the at least one stripe across a plurality of non-volatile memory nodes based on the erasure coding scheme, wherein each non-volatile memory node is a unit of a non-volatile storage device; and
upon a first failure of one of the non-volatile memory nodes:
detecting that at least one of the non-volatile memory nodes that is not failed includes a first free space that does not currently store user data; and
performing a first recovery process for recovering a first portion of the at least one erasure coding data set, based on the first free space.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
performing a second recovery process for recovering a second portion of the at least one erasure coding data set, when detecting a second free space in any of the non-volatile memory nodes that is not failed.

### Claim 3 (depends on 1)

The method of claim 1, wherein the performing of the first recovery process includes storing the first portion in the first free space and mapping a stripe of the at least one stripe that is related to the first recovery process to the first free space.

### Claim 4 (depends on 1)

The method of claim 1, wherein the performing of the first recovery process includes:
reading chunks from at least one first non-volatile memory node of the plurality of non-volatile memory nodes that are not failed, wherein the first portion is recovered based on the reading, wherein a number of nodes included in the at least one first non-volatile memory node is smaller than a number of nodes of the plurality of non-volatile memory nodes.

### Claim 5 (depends on 1)

The method of claim 1, wherein each chunk of the plurality of chunks of parity data is calculated by a summation function that is applied on a certain number of chunks of the plurality of chunks, wherein the certain number is smaller than a number of the plurality of non-volatile memory nodes including the plurality of chunks of systematic data.

### Claim 6 (depends on 1)

The method of claim 1, wherein the performing of the first recovery process includes:
reading chunks from at least one first non-volatile memory node of the plurality of non-volatile memory nodes that is not failed, wherein the first portion is recovered based on the reading, wherein a number of nodes included in the at least one first non-volatile memory node is equal to or smaller than k/t, wherein k is a number of the plurality of non-volatile memory nodes including the plurality of chunks of systematic data, wherein t is larger than 1 and is determined upon the first failure.

### Claim 7

A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute a process, the process comprising:
segmenting at least one erasure coding data set into at least one stripe based on an erasure coding scheme, wherein each erasure coding data set includes a plurality of chunks, wherein the plurality of chunks includes a plurality of chunks of systematic data and a plurality of chunks of parity data;
distributing the at least one stripe across a plurality of non-volatile memory nodes based on the erasure coding scheme, wherein each non-volatile memory node is a unit of a non-volatile storage device; and
upon a first failure of one of the non-volatile memory nodes:
detecting that at least one of the non-volatile memory nodes that is not failed includes a first free space that does not currently store user data; and
performing a first recovery process for recovering a first portion of the at least one erasure coding data set, based on the first free space.

### Claim 8

A system using free space for recovering erasure coding data sets, comprising:
a processing circuitry; and
a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:
segment at least one erasure coding data set into at least one stripe based on an erasure coding scheme, wherein each erasure coding data set includes a plurality of chunks, wherein the plurality of chunks includes a plurality of chunks of systematic data and a plurality of chunks of parity data;
distribute the at least one stripe across a plurality of non-volatile memory nodes based on the erasure coding scheme, wherein each non-volatile memory node is a unit of a non-volatile storage device; and
upon a first failure of one of the non-volatile memory nodes:
detect that at least one of the non-volatile memory nodes that is not failed includes a first free space that does not currently store user data; and
perform a first recovery process for recovering a first portion of the at least one erasure coding data set, based on the first free space.

### Claim 9 (depends on 8)

The system of claim 8, wherein the system is further configured to:
perform a second recovery process for recovering a second portion of the at least one erasure coding data set, when detecting a second free space in any of the non-volatile memory nodes that is not failed.

### Claim 10 (depends on 8)

The system of claim 8, wherein the system is further configured to store the first portion in the first free space and map a stripe of the at least one stripe that is related to the first recovery process to the first free space.

### Claim 11 (depends on 8)

The system of claim 8, wherein the system is further configured to:
read chunks from at least one first non-volatile memory node of the plurality of non-volatile memory nodes that are not failed, wherein the first portion is recovered based on the reading, wherein a number of nodes included in the at least one first non-volatile memory node is smaller than a number of nodes of the plurality of non-volatile memory nodes.

### Claim 12 (depends on 8)

The system of claim 8, wherein each chunk of the plurality of chunks of parity data is calculated by a summation function that is applied on a certain number of chunks of the plurality of chunks, wherein the certain number is smaller than a number of the plurality of non-volatile memory nodes including the plurality of chunks of systematic data.

### Claim 13 (depends on 8)

The system of claim 8, wherein the system is further configured to:
read chunks from at least one first non-volatile memory node of the plurality of non-volatile memory nodes that is not failed, wherein the first portion is recovered based on the reading, wherein a number of nodes included in the at least one first non-volatile memory node is equal to or smaller than k/t, wherein k is a number of the plurality of non-volatile memory nodes including the plurality of chunks of systematic data, wherein t is larger than 1 and is determined upon the first failure.
