# US 10,310,736 B1 · Systems and methods for storing data

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

- Number: US 10,310,736 B1
- Document ID: US10310736B1
- Status: Granted
- Kind: B1
- Application number: 15/388,885
- Filed: 2016-12-22
- Granted: 2019-06-04
- Earliest claimed: 2016-12-22
- Assignees: Veritas Technologies LLC
- Applicants: Veritas Technologies LLC
- Inventors: Junheng Yu; Hongbin Gong; Stephan Gipp
- Web page: https://patentgrep.com/patent/US10310736B1

## CPC

- G06F 3/0608: {Saving storage space on storage systems}
- G06F 11/1464: {for networked environments}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0683: {Plurality of storage devices}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/14: Error detection or correction of the data by redundancy in operations (error detection or correction of the data by redundancy in hardware G06F11/16)
- G06F 11/1453: {using de-duplication of the data}
- G06F 11/1456: {Hardware arrangements for backup}
- G06F 11/1458: {Management of the backup or restore process}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosed computer-implemented method for storing data may include (i) identifying a request to backup a set of data according to a storage-as-a-service configuration that stores data into cloud storage, (ii) dividing the set of data to be backed up into chunks of data, (iii) dividing, for each of the chunks of data, a respective chunk into blocks of data, (iv) generating, for each of the chunks of data, at least one block of parity bits for the respective chunk of data based on applying an erasure code to the blocks of data, and (v) splitting, during backing up the chunks of data according to the storage-as-a-service configuration, the respective blocks of data and the generated block of parity bits into heterogeneous storage media targets such that the storage-as-a-service configuration benefits from the heterogeneous storage media targets. Various other methods, systems, and computer-readable media are also disclosed.

## Claims

### Claim 1

A computer-implemented method for storing data, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:
identifying a request to backup a set of data according to a storage-as-a-service configuration that stores data into cloud storage;
dividing the set of data to be backed up into chunks of data;
dividing, for each of the chunks of data, a respective chunk into blocks of data;
generating, for each of the chunks of data, at least one block of parity bits for the respective chunk of data based on applying an erasure code to the blocks of data; and
splitting, during backing up the chunks of data according to the storage-as-a-service configuration, the respective blocks of data and the generated block of parity bits into heterogeneous storage media targets.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the chunks of data each has the same size.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein dividing the respective chunk into the blocks of data and generating the block of parity bits are performed in at least one of the following manners:
inline as the storage-as-a-service configuration receives the chunks of data;
offline, after the storage-as-a-service configuration receives the chunks of data; and
in response to a system load.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising appending a checksum code to each block of data in each of the chunks of data.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein a mathematical level of data redundancy for backing up the chunks of data within the storage-as-a-service configuration is
less than 1.5.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein at least two chunks are split into a different number of blocks of data according to different parameters of the erasure code.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the heterogeneous storage media targets are provided by different corporate storage-as-a-service vendors.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the heterogeneous storage media targets comprise different models of storage hardware that have substantially different levels of performance in terms of at least one of price, latency, and reliability.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein the block of parity bits for each chunk is stored within a storage media target having a lower level of performance than at least one storage media target that stores a block of data based on a prediction that the block of parity bits will be accessed less frequently.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the storage-as-a-service configuration stores the chunks of data in a deduplicated format.

### Claim 11

A system for storing data, the system comprising:
an identification module, stored in memory, that identifies a request to backup a set of data according to a storage-as-a-service configuration that stores data into cloud storage;
a dividing module, stored in memory, that:
divides the set of data to be backed up into chunks of data;
divides, for each of the chunks of data, a respective chunk into blocks of data;
a generation module, stored in memory, that generates, for each of the chunks of data, at least one block of parity bits for the respective chunk of data based on applying an erasure code to the blocks of data;
a splitting module, stored in memory, that splits, during backing up the chunks of data according to the storage-as-a-service configuration, the respective blocks of data and the generated block of parity bits into heterogeneous storage media targets; and
at least one physical processor configured to execute the identification module, the dividing module, the generation module, and the splitting module.

### Claim 12 (depends on 11)

The system of claim 11, wherein the chunks of data each has the same size.

### Claim 13 (depends on 11)

The system of claim 11, wherein the dividing module divides the respective chunk into the blocks of data and the generation module generates the block of parity bits in at least one of the following manners:
inline as the storage-as-a-service configuration receives the chunks of data;
offline, after the storage-as-a-service configuration receives the chunks of data; and
in response to a system load.

### Claim 14 (depends on 11)

The system of claim 11, wherein the generation module further appends a checksum code to each block of data in each of the chunks of data.

### Claim 15 (depends on 11)

The system of claim 11, wherein a mathematical level of data redundancy for backing up the chunks of data within the storage-as-a-service configuration is
less than 1.5.

### Claim 16 (depends on 11)

The system of claim 11, wherein at least two chunks are split into a different number of blocks of data according to different parameters of the erasure code.

### Claim 17 (depends on 11)

The system of claim 11, wherein the heterogeneous storage media targets are provided by different corporate storage-as-a-service vendors.

### Claim 18 (depends on 11)

The system of claim 11, wherein the heterogeneous storage media targets comprise different models of storage hardware that have substantially different levels of performance in terms of at least one of price, latency, and reliability.

### Claim 19 (depends on 18)

The system of claim 18, wherein the block of parity bits for each chunk is stored within a storage media target having a lower level of performance than at least one storage media target that stores a block of data based on a prediction that the block of parity bits will be accessed less frequently.

### Claim 20

A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:
identify a request to backup a set of data according to a storage-as-a-service configuration that stores data into cloud storage;
divide the set of data to be backed up into chunks of data;
divide, for each of the chunks of data, a respective chunk into blocks of data;
generate, for each of the chunks of data, at least one block of parity bits for the respective chunk of data based on applying an erasure code to the blocks of data; and
split, during backing up the chunks of data according to the storage-as-a-service configuration, the respective blocks of data and the generated block of parity bits into heterogeneous storage media targets.
