# US 11,030,090 B2 · Adaptive data migration

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

- Number: US 11,030,090 B2
- Document ID: US11030090B2
- Status: Granted
- Kind: B2
- Application number: 16/524,491
- Filed: 2019-07-29
- Published: 2019-11-14
- Granted: 2021-06-08
- Earliest claimed: 2016-07-26
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Robert Lee; Svitlana Tumanova; Boris Feigin; Taher Vohra
- Web page: https://patentgrep.com/patent/US11030090B2

## CPC

- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- 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/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/3433: {for load management (allocation of a server based on load conditions G06F9/505; load rebalancing G06F9/5083; redistributing the load in a network by a load balancer H04L67/1029)}
- G06F 11/3485: {for I/O devices}
- G06F 2212/7205: Cleaning, compaction, garbage collection, erase control
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for elective garbage collection in storage memory, performed by a storage system is provided. The method includes monitoring storage space available in each of a plurality of portions of storage memory of a storage system and detecting an imbalance in the storage space available across the plurality of portions of storage memory. The method includes performing garbage collection to rebalance the space available across the plurality of portions of storage memory, responsive to the detecting. A storage system is also provided.

## Claims

### Claim 1

A method for elective garbage collection in storage memory, performed by a storage system, comprising:
selecting between a RAID rebuild and a garbage collection move to perform for data migration, based on detection of an imbalance of available storage space across a plurality of portions of storage memory available, wherein both the RAID rebuild and the garbage collection move are configurable to stripe data across each of the plurality of portions of storage memory.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
detecting addition of a further portion of storage memory to the storage system, wherein the imbalance results from the addition of the further portion of storage memory, and wherein such rebalancing achieves linearity of performance by preventing bottlenecks as the storage system is scaled by the addition of the further portion of storage memory.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
identifying addition of a further portion of storage memory to the storage system; and
declaring an entirety of the plurality of portions of storage memory as candidate memory for the garbage collection, responsive to the identifying the addition of the further portion of storage memory, so that the garbage collection reads from the plurality of portions of storage memory and writes across the plurality of portions of storage memory and the further portion of storage memory.

### Claim 4 (depends on 1)

The method of claim 1, wherein:
each of the plurality of portions of storage memory comprises a storage pack, one or more solid-state drives, or a blade having solid-state memory; and
detection of the imbalance is a result of identifying a difference in distribution of storage space available among the plurality of portions of storage memory.

### Claim 5 (depends on 1)

The method of claim 1, wherein the performing garbage collection comprises:
reading live data from garbage collection candidate portions of the storage memory; and
striping the live data across the plurality of portions of storage memory including at least one portion of storage memory that has more storage space available than the garbage collection candidate portions of the storage memory.

### Claim 6 (depends on 1)

The method of claim 1, wherein the garbage collection move comprises:
performing byte for byte copying to rebalance space available across the plurality of portions of storage memory, responsive to the detection.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
initiating garbage collection responsive to detecting overall storage space available in the storage system being below a threshold.

### Claim 8

A tangible, non-transitory, computer-readable media having instructions thereupon which, when executed by a processor, cause the processor to perform a method comprising:
selecting between a RAID rebuild and a garbage collection move to perform for data migration, based on detection of an imbalance of available storage space across a plurality of portions of storage memory available, wherein both the RAID rebuild and the garbage collection move are configurable to stripe data across each of the plurality of portions of storage memory.

### Claim 9 (depends on 8)

The computer-readable media of claim 8, wherein the method further comprises:
detecting addition of a further portion of storage memory to the storage system, wherein the imbalance results from the addition of the further portion of storage memory, and wherein such rebalancing achieves linearity of performance by preventing bottlenecks as the storage system is scaled by the addition of the further portion of storage memory.

### Claim 10 (depends on 8)

The computer-readable media of claim 8, wherein the method further comprises:
identifying a further portion of storage memory is added to the storage system, wherein detection of the imbalance is based on the identifying the further portion of storage memory is added and wherein an entirety of the plurality of portions of storage memory is candidate memory for the garbage collection.

### Claim 11 (depends on 8)

The computer-readable media of claim 8, wherein determining storage space available for each of the plurality of portions of storage memory and the detection of the imbalance comprises identifying a difference in distribution of storage space available among the plurality of portions of storage memory.

### Claim 12 (depends on 8)

The computer-readable media of claim 8, wherein the method further comprises:
striping live data, from garbage collection candidate portions of the storage memory, across the plurality of portions of storage memory in performance of the garbage collection, wherein at least one of the plurality of portions of storage memory has more storage space available than the garbage collection candidate portions of the storage memory.

### Claim 13 (depends on 8)

The computer-readable media of claim 8, further comprising:
polling a storage space detector to determine storage space used in each of the plurality of portions of storage memory.

### Claim 14

A storage system, comprising:
one or more processors;
a plurality of portions of storage memory;
a storage space detector, configurable to track storage space available in each of the plurality of portions of storage memory; and
a garbage collection module, configurable to rebalance the storage space available across the plurality of portions of storage memory, responsive to identifying an imbalance across the plurality of portions of storage memory based on results from the storage space detector, wherein both the RAID rebuild and the garbage collection move are configurable to stripe data across each of the plurality of portions of storage memory.

### Claim 15 (depends on 14)

The storage system of claim 14, wherein the storage space detector and the garbage collection module are further configurable to determine addition of a further portion of storage memory to the storage system, with the identifying the imbalance triggered by the addition of the further portion of storage memory.

### Claim 16 (depends on 14)

The storage system of claim 14, wherein:
the one or more processors are configurable to determine addition of a further portion of storage memory to the storage system; and
the garbage collection module is further configurable to collect from the plurality of portions of storage memory as candidate memory for the garbage collection, and write across the plurality of portions of storage memory and the further portion of storage memory, restoring balance in the storage memory space available in the storage system.

### Claim 17 (depends on 14)

The storage system of claim 14, wherein:
the plurality of portions of storage memory comprises a plurality of storage packs, solid-state drives, or blades having solid-state memory; and
identifying the imbalance is responsive to identifying a difference in distribution of storage space available among the plurality of portions of storage memory.

### Claim 18 (depends on 14)

The storage system of claim 14, wherein the garbage collection module is configurable to read live data from a garbage collection candidate portion of the storage memory and stripe the live data across the plurality of portions of storage memory including a portion of storage memory that has more storage space available than the garbage collection candidate portion of the storage memory.

### Claim 19 (depends on 14)

The storage system of claim 14, wherein the storage space detector adjusts between the RAID rebuild and the garbage collection based on the tracked storage space.

### Claim 20 (depends on 14)

The storage system of claim 14, wherein the one or more processors are configurable to poll the space detector module to determine overall storage space available in the storage system and to trigger the garbage collection responsive to determining the overall storage space available in the storage system is below a threshold.
