# US 2020/0401309 A1 · Distributed object storage system with dynamic spreading

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

- Number: US 2020/0401309 A1
- Document ID: US20200401309A1
- Status: Published application
- Kind: A1
- Application number: 16/828,945
- Filed: 2020-03-24
- Published: 2020-12-24
- Earliest claimed: 2019-06-24
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Sam De Roeck; Arne De Coninck; Stijn Devriendt; Lien Boelaert; Annelies Cuvelier; Frederik De Schrijver
- Web page: https://patentgrep.com/patent/US20200401309A1

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0617: {in relation to availability}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for distributed storage systems using dynamic spreading policies are described. Distributed storage elements may be accessed using various storage paths through hierarchically organized storage system components to store data blocks corresponding to data elements. A higher priority hierarchical spreading policy is selected for determining the storage elements to receive the data blocks. If the first hierarchical spreading policy is determined not to have been met, a lower priority hierarchical spreading policy is selected and the data blocks are stored according to the lower priority hierarchical spreading policy. Data block stored at the lower priority hierarchical spreading policy may automatically be migrated to the higher priority hierarchical spreading policy.

## Claims

### Claim 1

A storage system, comprising:
a controller configured to:
access a plurality of storage elements using a plurality of storage paths through a plurality of hierarchical system components;
select, for a selected data element, a first hierarchical spreading policy from a plurality of hierarchical spreading policies for determining a subset of storage elements from the plurality of storage elements to store a plurality of data blocks corresponding to the selected data element;
determine, for the selected data element, that the first hierarchical spreading policy has not been met;
select, responsive to determining that the first hierarchical spreading policy has not been met, a second hierarchical spreading policy from the plurality of hierarchical spreading policies; and
store, using the second hierarchical spreading policy, the plurality of data blocks corresponding to the selected data element to a selected subset of storage elements from the plurality of storage elements.

### Claim 2 (depends on 1)

The storage system of claim 1, further comprising:
an encoder configured to disassemble a data object into a predetermined number of redundant data blocks;
a block spreader configured to distribute, using the second hierarchical spreading policy, the predetermined number of redundant data blocks to the plurality of storage elements;
a block clusterer configured to retrieve a subset of the predetermined number of redundant data blocks from the plurality of storage elements; and
a decoder configured to assemble the data object from the subset of the predetermined number of redundant data blocks.

### Claim 3 (depends on 1)

The storage system of claim 1, further comprising:
a storage policy engine configured to:
store the plurality of hierarchical spreading policies; and
assign a priority order for the plurality of hierarchical spreading policies, wherein the first hierarchical spreading policy has a higher priority order than the second hierarchical spreading policy.

### Claim 4 (depends on 3)

The storage system of claim 3, wherein:
the first hierarchical spreading policy corresponds to availability of the plurality of hierarchical system components at each hierarchy level of a plurality of hierarchy levels; and
the second hierarchical spreading policy corresponds to downgraded availability of the plurality of hierarchical system components at a selected hierarchy level of the plurality of hierarchy levels.

### Claim 5 (depends on 4)

The storage system of claim 4, wherein the plurality of hierarchical system components comprises at least two types of system components selected from:
a storage node;
a storage rack;
a storage cluster;
a storage site;
a network switch;
a network;
a subnetwork; and
a storage system.

### Claim 6 (depends on 3)

The storage system of claim 3, wherein:
the first hierarchical spreading policy corresponds to a percentage of available storage elements along a first set of storage paths from the plurality of storage paths;
the second hierarchical spreading policy corresponds to a percentage of available storage elements along a second set of storage paths from the plurality of storage paths; and
the second set of storage paths includes fewer storage paths than the first set of storage paths.

### Claim 7 (depends on 1)

The storage system of claim 1, further comprising:
a storage manager configured to:
attempt to store the plurality of data blocks to the subset of storage elements selected from the plurality of storage elements; and
determine a quantity of failed attempts to store the plurality of data blocks using the first hierarchical spreading policy, wherein the controller determines that the first hierarchical spreading policy has not been met based on the quantity of failed attempts meeting a policy failure threshold.

### Claim 8 (depends on 1)

The storage system of claim 1, further comprising:
a blacklist engine configured to identify blacklisted storage elements among the plurality of storage elements, wherein the controller determines that the first hierarchical spreading policy has not been met based on the blacklisted storage elements reducing the plurality of storage elements available below an availability threshold for the first hierarchical spreading policy.

### Claim 9 (depends on 8)

The storage system of claim 8, wherein:
the blacklist engine is further configured to identify blacklisted storage elements based on failure of hierarchical system components; and
the controller determines that the first hierarchical spreading policy has not been met based on failure of at least one hierarchical system component reducing the plurality of hierarchical system components available at a selected hierarchy level below a hierarchical availability threshold for the first hierarchical spreading policy.

### Claim 10 (depends on 1)

The storage system of claim 1, wherein the controller is further configured to:
disable, based on an operating condition, the first hierarchical spreading policy;
store, for each data element stored using the second hierarchical spreading policy, reduced spreading identifiers in metadata;
identify each data element with the reduced spreading identifier; and
migrate, using the first hierarchical spreading policy, each identified data element to an expanded subset of storage elements from the plurality of storage elements.

### Claim 11

A computer-implemented method, comprising:
accessing a plurality of storage elements using a plurality of storage paths through a plurality of hierarchical system components;
selecting, for a selected data element, a first hierarchical spreading policy from a plurality of hierarchical spreading policies for determining a subset of storage elements from the plurality of storage elements to store a plurality of data blocks corresponding to the selected data element;
determining, for the selected data element, that the first hierarchical spreading policy has not been met;
selecting, responsive to determining that the first hierarchical spreading policy has not been met, a second hierarchical spreading policy from the plurality of hierarchical spreading policies; and
storing, using the second hierarchical spreading policy, the plurality of data blocks corresponding to the selected data element to a selected subset of storage elements from the plurality of storage elements.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, further comprising:
storing the plurality of hierarchical spreading policies; and
assigning a priority order for the plurality of hierarchical spreading policies, wherein the first hierarchical spreading policy has a higher priority order than the second hierarchical spreading policy.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein:
the first hierarchical spreading policy corresponds to availability of the plurality of hierarchical system components at each hierarchy level of a plurality of hierarchy levels; and
the second hierarchical spreading policy corresponds to downgraded availability of the plurality of hierarchical system components at a selected hierarchy level of the plurality of hierarchy levels.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein the plurality of hierarchical system components comprises at least two types of system components selected from:
a storage node;
a storage rack;
a storage cluster;
a storage site;
a network switch;
a network;
a subnetwork; and
a storage system.

### Claim 15 (depends on 12)

The computer-implemented method of claim 12, wherein:
the first hierarchical spreading policy corresponds to a percentage of available storage elements along a first set of storage paths from the plurality of storage paths;
the second hierarchical spreading policy corresponds to a percentage of available storage elements along a second set of storage paths from the plurality of storage paths; and
the second set of storage paths includes fewer storage paths than the first set of storage paths.

### Claim 16 (depends on 11)

The computer-implemented method of claim 11, further comprising:
attempting to store the plurality of data blocks to the subset of storage elements selected from the plurality of storage elements; and
determining a quantity of failed attempts to store the plurality of data blocks using the first hierarchical spreading policy, wherein determining that the first hierarchical spreading policy has not been met is based on the quantity of failed attempts meeting a policy failure threshold.

### Claim 17 (depends on 11)

The computer-implemented method of claim 11, further comprising:
identifying blacklisted storage elements among the plurality of storage elements, wherein determining that the first hierarchical spreading policy has not been met is based on the blacklisted storage elements reducing the plurality of storage elements available below an availability threshold for the first hierarchical spreading policy.

### Claim 18 (depends on 11)

The computer-implemented method of claim 11, further comprising:
identifying blacklisted storage elements among the plurality of storage elements based on failure of hierarchical system components, wherein determining that the first hierarchical spreading policy has not been met is based on failure of at least one hierarchical system component reducing the plurality of hierarchical system components available at a selected hierarchy level below a hierarchical availability threshold for the first hierarchical spreading policy.

### Claim 19 (depends on 11)

The computer-implemented method of claim 11, further comprising:
disabling, based on an operating condition, the first hierarchical spreading policy;
storing, for each data element stored using the second hierarchical spreading policy, reduced spreading identifiers in metadata;
identifying each data element with the reduced spreading identifiers; and
migrating, using the first hierarchical spreading policy, each identified data element to an expanded subset of storage elements from the plurality of storage elements.

### Claim 20

A system, comprising:
a plurality of storage elements configured to store a plurality of data blocks;
a plurality of hierarchical system components configured to define a plurality of storage paths for accessing the plurality of storage elements;
means for accessing the plurality of storage elements using the plurality of storage paths through the plurality of hierarchical system components;
means for selecting, for a selected data element, a first hierarchical spreading policy from a plurality of hierarchical spreading policies for determining a subset of storage elements from the plurality of storage elements to store a plurality of data blocks corresponding to the selected data element;
means for determining, for the selected data element, that the first hierarchical spreading policy has not been met;
means for selecting, responsive to determining that the first hierarchical spreading policy has not been met, a second hierarchical spreading policy from the plurality of hierarchical spreading policies;
means for storing, using the second hierarchical spreading policy, the plurality of data blocks corresponding to the selected data element to a selected subset of storage elements from the plurality of storage elements; and
means for migrating, using the first hierarchical spreading policy, the plurality of data blocks stored using the second hierarchical spreading policy.
