# US 11,030,062 B2 · Chunk allocation

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

- Number: US 11,030,062 B2
- Document ID: US11030062B2
- Status: Granted
- Kind: B2
- Application number: 16/569,008
- Filed: 2019-09-12
- Published: 2020-02-20
- Granted: 2021-06-08
- Earliest claimed: 2017-08-10
- Assignees: Rubrik, Inc.
- Applicants: Rubrik, Inc.
- Inventors: Garvit Juniwal; Gaurav Jain; Adam Gee
- Web page: https://patentgrep.com/patent/US11030062B2

## CPC

- G06F 11/1438: {Restarting or rejuvenating}
- G06F 11/1666: {where the redundant component is memory or memory area}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0616: {in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
- 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/0649: {Lifecycle management}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1484: {involving virtual machines}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; 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], H04L67/1097)}
- G06F 11/3409: {for performance assessment}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- 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

Methods and systems for identifying a set of disks within a cluster and then storing a plurality of data chunks into the set of disks such that the placement of the plurality of data chunks within the cluster optimizes failure tolerance and storage system performance for the cluster are described. The plurality of data chunks may be generated using replication of data (e.g., n-way mirroring) or application of erasure coding to the data (e.g., using a Reed-Solomon code or a Low-Density Parity-Check code). The topology of the cluster including the physical arrangement of the nodes and disks within the cluster and status information for the nodes and disks within the cluster (e.g., information regarding disk fullness, disk performance, and disk age) may be used to identify the set of disks in which to store the plurality of data chunks.

## Claims

### Claim 1

A method for operating a data management system, comprising:
acquiring a first snapshot of a real or virtual machine;
generating a first plurality of data sets using the first snapshot of the real or virtual machine;
acquiring disk ages for a plurality of disks at a first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the first point in time using the disk ages for the plurality of disks at the first point in time;
identifying a first subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
identifying a second subset of the plurality of disks different from the first subset of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
storing a first data set of the first plurality of data sets using the first subset of the plurality of disks;
storing a second data set of the first plurality of data sets using the second subset of the plurality of disks;
acquiring a second snapshot of the real or virtual machine subsequent to acquiring the first snapshot of the real or virtual machine;
generating a second plurality of data sets using the second snapshot of the real or virtual machine;
acquiring disk ages for the plurality of disks at a second point in time subsequent to the first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the second point in time using the disk ages for the plurality of disks at the second point in time;
identifying a third subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the second point in time, wherein the first subset of the plurality of disks is different from the third subset of the plurality of disks; and
storing a third data set of the second plurality of data sets using the third subset of the plurality of disks.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the identifying the first subset of the plurality of disks includes identifying a first grouping of the plurality of disks with an estimated time to failure associated with a first time period; and
the identifying the second subset of the plurality of disks includes identifying a second grouping of the plurality of disks with an estimated time to failure associated with a second time period different from the first time period.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the first grouping of the plurality of disks has an estimated time to failure between one year and two years and the second grouping of the plurality of disks has an estimated time to failure of less than one year.

### Claim 4 (depends on 2)

The method of claim 2, wherein:
the first time period does not overlap with the second time period.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
concurrently writing a third data chunk of the third data set to a third disk of the plurality of disks and writing a fourth data chunk of a fourth data set to a fourth disk of the plurality of disks.

### Claim 6 (depends on 5)

The method of claim 5, wherein: the third disk comprises a third hard-disk drive; and the fourth disk comprises a fourth hard-disk drive.

### Claim 7 (depends on 1)

The method of claim 1, wherein:
the generating the first plurality of data sets using the first snapshot of the real or virtual machine includes generating the first plurality of data sets using one of replication of data corresponding with the first snapshot or application of erasure coding techniques to the data corresponding with the first snapshot; and
the generating the second plurality of data sets using the second snapshot of the real or virtual machine includes generating the second plurality of data sets using one of replication of data corresponding with the second snapshot or application of erasure coding techniques to the data corresponding with the second snapshot.

### Claim 8 (depends on 1)

The method of claim 1, wherein:
the determining the plurality of estimated times to failure for the plurality of disks at the first point in time includes determining a plurality of mean-time-to-failure values for the plurality of disks using the disk ages for the plurality of disks at the first point in time.

### Claim 9 (depends on 1)

The method of claim 1, wherein:
the first snapshot comprises a full image snapshot of the virtual machine.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
determining a plurality of disk fullness values for the plurality of disks at the first point in time, the identifying the first subset of the plurality of disks includes identifying the first subset of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time and the plurality of disk fullness values for the plurality of disks at the first point in time.

### Claim 11

A data management system, comprising:
a memory configured to store a first snapshot of a real or virtual machine and store a second snapshot of the real or virtual machine different from the first snapshot of the virtual machine; and
one or more processors configured to perform operations comprising, at least:
generating a first plurality of data sets using the first snapshot of the real or virtual machine;
acquiring disk ages for a plurality of disks at a first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the first point in time using the disk ages for the plurality of disks at the first point in time;
identifying a first subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
identifying a second subset of the plurality of disks different from the first subset of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
storing a first data set of the first plurality of data sets using the first subset of the plurality of disks;
storing a second data set of the first plurality of data sets using the second subset of the plurality of disks;
acquiring a second snapshot of the real or virtual machine subsequent to acquiring the first snapshot of the real or virtual machine;
generating a second plurality of data sets using the second snapshot of the real or virtual machine;
acquiring disk ages for the plurality of disks at a second point in time subsequent to the first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the second point in time using the disk ages for the plurality of disks at the second point in time;
identifying a third subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the second point in time, wherein the first subset of the plurality of disks is different from the third subset of the plurality of disks; and
storing a third data set of the second plurality of data sets using the third subset of the plurality of disks.

### Claim 12 (depends on 11)

The system of claim 11, wherein:
the identifying the first subset of the plurality of disks includes identifying a first grouping of the plurality of disks with an estimated time to failure associated with a first time period; and
the identifying the second subset of the plurality of disks includes identifying a second grouping of the plurality of disks with an estimated time to failure associated with a second time period different from the first time period.

### Claim 13 (depends on 12)

The system of claim 12, wherein:
the first grouping of the plurality of disks has an estimated time to failure between one year and two years and the second grouping of the plurality of disks has an estimated time to failure of less than one year.

### Claim 14 (depends on 12)

The system of claim 12, wherein:
the first time period does not overlap with the second time period.

### Claim 15 (depends on 11)

The system of claim 11, wherein the operations further comprise:
concurrently writing a third data chunk of the third data set to a third disk of the plurality of disks and writing a fourth data chunk of a fourth data set to a fourth disk of the plurality of disks.

### Claim 16 (depends on 15)

The system of claim 15, wherein: the third disk comprises a third hard-disk drive; and the fourth disk comprises a fourth hard-disk drive.

### Claim 17 (depends on 11)

The system of claim 11, wherein:
the generating the first plurality of data sets using the first snapshot of the real or virtual machine includes generating the first plurality of data sets using one of replication of data corresponding with the first snapshot or application of erasure coding techniques to the data corresponding with the first snapshot; and
the generating the second plurality of data sets using the second snapshot of the real or virtual machine includes generating the second plurality of data sets using one of replication of data corresponding with the second snapshot or application of erasure coding techniques to the data corresponding with the second snapshot.

### Claim 18 (depends on 11)

The system of claim 11, wherein:
the determining the plurality of estimated times to failure for the plurality of disks at the first point in time includes determining a plurality of mean-time-to-failure values for the plurality of disks using the disk ages for the plurality of disks at the first point in time.

### Claim 19 (depends on 11)

The system of claim 11, wherein:
the first snapshot comprises a full image snapshot of the virtual machine.

### Claim 20 (depends on 11)

The system of claim 11, wherein the operations further comprise:
determining a plurality of disk fullness values for the plurality of disks at thefirst point in time, the identifying the first subset of the plurality of disks includes identifying the first subset of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time and the plurality of disk fullness values for the plurality of disks at the first point in time.

### Claim 21

A non-transitory machine-readable medium comprising instructions which, when read by a machine, cause the machine to perform operations at a data management system comprising a memory configured to store a first snapshot of a real or virtual machine and store a second snapshot of the real or virtual machine different from the first snapshot of the virtual machine, the operations comprising, at least:
generating a first plurality of data sets using the first snapshot of the real or virtual machine;
acquiring disk ages for a plurality of disks at a first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the first point in time using the disk ages for the plurality of disks at the first point in time;
identifying a first subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
identifying a second subset of the plurality of disks different from the first subset of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the first point in time;
storing a first data set of the first plurality of data sets using the first subset of the plurality of disks;
storing a second data set of the first plurality of data sets using the second subset of the plurality of disks;
acquiring a second snapshot of the real or virtual machine subsequent to acquiring the first snapshot of the real or virtual machine;
generating a second plurality of data sets using the second snapshot of the real or virtual machine;
acquiring disk ages for the plurality of disks at a second point in time subsequent to the first point in time;
determining a plurality of estimated times to failure for the plurality of disks at the second point in time using the disk ages for the plurality of disks at the second point in time;
identifying a third subset of the plurality of disks less than all of the disks of the plurality of disks using the plurality of estimated times to failure for the plurality of disks at the second point in time, wherein the first subset of the plurality of disks is different from the third subset of the plurality of disks; and
storing a third data set of the second plurality of data sets using the third subset of the plurality of disks.
