# US 12,008,019 B2 · Adjusting storage delivery in a storage system

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

- Number: US 12,008,019 B2
- Document ID: US12008019B2
- Status: Granted
- Kind: B2
- Application number: 17/934,458
- Filed: 2022-09-22
- Published: 2023-01-19
- Granted: 2024-06-11
- Earliest claimed: 2016-12-20
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Andrew Kleinerman; Ethan Miller; Benjamin Scholbrock
- Web page: https://patentgrep.com/patent/US12008019B2

## CPC

- G06F 16/278: {Data partitioning, e.g. horizontal or vertical partitioning}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0646: {Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Modifying storage distribution in a storage system that includes one or more storage devices, including: detecting, for a storage device among the one or more storage devices, that a storage capacity of the storage device is different from a storage capacity of another storage device of the one or more storage devices, and responsive to detecting that the storage capacity for the storage device is different from the storage capacity of the other storage devices of the one or more storage devices, modifying a distribution of shards of data for a data stripe among the one or more storage devices.

## Claims

### Claim 1

A method comprising:
detecting, for a first storage device among a plurality of storage devices storing a plurality of data stripes, that a first storage capacity of the first storage device is larger than a second storage capacity of a second storage device of the plurality of storage devices;
in response to the detection, restricting address space of the first storage device that is usable to store data to an amount of storage that is based on the second storage capacity of the second storage device and wherein the restricted address space is distributed to one or more memory regions of the first storage device based on wear-leveling of the first storage device; and
storing at least one shard of an additional data stripe on the first storage device and storing a remainder of the additional data stripe to one or more storage devices excluding the first storage device, with fewer garbage collection operations being performed on the first storage device having the larger storage capacity than on the second storage device.

### Claim 2 (depends on 1)

The method of claim 1, wherein storing at least one shard of the additional data stripe on the first storage device is performed according to a distribution policy in which at least one shard of a data stripe is stored on a storage device with a larger storage capacity.

### Claim 3 (depends on 1)

The method of claim 1, wherein storing at least one shard of the additional data stripe on the first storage device is performed according to a distribution policy in which a storage device with smaller capacity is selected to store shards less frequently than other storage devices.

### Claim 4 (depends on 1)

The method of claim 1, wherein the plurality of storage devices support a redundant array of independent disks (RAID) group, and wherein the additional data stripe comprises a stripe of data within the RAID group.

### Claim 5 (depends on 1)

The method of claim 1, wherein the method further comprises:
detecting, for a third storage device among the plurality of storage devices, that a storage capacity for the third storage device is greater than the second storage capacity of the second storage device; and
for a subsequent data stripe to be stored within the plurality of storage devices:
storing at least a first shard of data for the subsequent data stripe on the first storage device;
storing at least a second shard of data for the subsequent data stripe on the third storage device; and
storing remaining shards of data for the subsequent data stripe among one or more storage devices in the plurality of storage devices excluding the first storage device and the third storage device.

### Claim 6 (depends on 1)

The method of claim 1, wherein the method further comprises:
initiating garbage collection on the one or more storage devices excluding the first storage device with the larger storage capacity.

### Claim 7 (depends on 1)

The method of claim 1, wherein the method further comprises:
detecting that remaining storage capacity among the one or more storage devices is insufficient to reconstruct one or more shards of data for one or more data stripes.

### Claim 8 (depends on 1)

The method of claim 1, wherein storing the at least one shard of the additional data stripe on the first storage device and storing the remainder of the additional data stripe to the one or more storage devices excluding the first storage device comprises determining one or more splits of the additional data stripe.

### Claim 9

A storage system comprising:
a plurality of storage devices; and
a storage controller operatively coupled to the plurality of storage devices, the storage controller comprising a processing device configured to:
detect, for a first storage device among the plurality of storage devices storing a plurality of data stripes, that a first storage capacity of the first storage device is larger than a second storage capacity of a second storage device of the plurality of storage devices;
in response to the detection, restrict address space of the first storage device that is usable to store data to an amount of storage that is based on the second storage capacity of the second storage device and wherein the restricted address space is distributed to one or more memory regions of the first storage device based on wear-leveling of the first storage device; and
based on the detection, for an additional data strip to be stored among the plurality of storage device, store at least one shard of the additional data stripe on the first storage device and store a remainder of the additional data stripe to one or more storage devices of the plurality of storage devices, with fewer garbage collection operations being performed on the first storage device having the larger storage capacity than on the second storage device.

### Claim 10 (depends on 9)

The storage system of claim 9, wherein storing at least one shard of the additional data stripe on the first storage device is performed according to a distribution policy in which at least one shard of a data stripe is stored on a storage device with a larger storage capacity.

### Claim 11 (depends on 9)

The storage system of claim 9, wherein storing at least one shard of the additional data stripe on the first storage device is performed according to a distribution policy in which a storage device with smaller capacity is selected to store shards less frequently than other storage devices.

### Claim 12 (depends on 9)

The storage system of claim 9, wherein the plurality of storage devices support a redundant array of independent disks (RAID) group, and wherein the additional data stripe comprises a stripe of data within the RAID group.

### Claim 13 (depends on 9)

The storage system of claim 9, wherein the processing device is further configured to:
detect, for a third storage device among the plurality of storage devices, that a storage capacity for the third storage device is greater than the second storage capacity of the second storage device; and
for a subsequent data stripe to be stored within the plurality of storage devices:
store at least a first shard of data for the subsequent data stripe on the first storage device;
store at least a second shard of data for the subsequent data stripe on the third storage device; and
store remaining shards of data for the subsequent data stripe among one or more storage devices in the plurality of storage devices excluding the first storage device and the third storage device.

### Claim 14 (depends on 9)

The storage system of claim 9, wherein the processing device is further configured to:
initiate garbage collection on the one or more storage devices excluding the first storage device with the larger storage capacity.

### Claim 15 (depends on 9)

The storage system of claim 9, wherein the processing device is configured to:
detect that remaining storage capacity among the one or more storage devices is insufficient to reconstruct one or more shards of data for one or more data stripes.

### Claim 16 (depends on 9)

The storage system of claim 9, wherein storing the at least one shard of the additional data stripe on the first storage device and storing the remainder of the additional data stripe to the one or more storage devices excluding the first storage device comprises determining one or more splits of the additional data stripe.
