# US 10,503,591 B2 · Selecting retrieval locations in a dispersed storage network

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

- Number: US 10,503,591 B2
- Document ID: US10503591B2
- Status: Granted
- Kind: B2
- Application number: 15/832,316
- Filed: 2017-12-05
- Published: 2018-04-05
- Granted: 2019-12-10
- Earliest claimed: 2015-02-27
- Assignees: Pure Storage, Inc.
- Applicants: International Business Machines Corporation
- Inventors: Ethan S. Wozniak; Andrew D. Baptist; Greg R. Dhuse; Jason K. Resch
- Web page: https://patentgrep.com/patent/US10503591B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- 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 11/1092: {Rebuilding, e.g. when physically replacing a failing disk}
- H04L 67/1097: 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]
- G06F 2211/1028: Distributed, i.e. distributed RAID systems with parity
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method for execution by a dispersed storage and task (DST) processing unit includes determining to recover a data segment from a set of storage units. A plurality of candidate retrieval locations of the set of storage units are identified. Performance information for each of the plurality of candidate retrieval locations is obtained. A cost-benefit level for each of a plurality of permutations of a selected number of storage locations of the candidate retrieval locations is determined based on the performance information. One of the plurality of permutations is selected based on the cost-benefit level for each of the plurality of permutations. Retrieval of encoded data slices from the corresponding storage locations of the selected permutation is initiated. The data segment is reproduced in response to receiving a decode threshold number of the encoded data slices.

## Claims

### Claim 1

A method for execution by a dispersed storage and task (DST) processing unit that includes a processor, the method comprises:
determining to recover a data segment from a set of storage units;
identifying a plurality of candidate retrieval locations of the set of storage units;
obtaining performance information for each of the plurality of candidate retrieval locations;
identifying a plurality of permutations of the plurality of candidate retrieval locations, wherein each of the plurality of permutations corresponds to a proper subset of the plurality of candidate retrieval locations that includes a number of candidate retrieval locations selected from the plurality of candidate retrieval locations, wherein the number is strictly less than a total number of candidate retrieval locations in the plurality of candidate retrieval locations, and wherein the number is strictly greater than a decode threshold number;
determining a cost-benefit level for each of the plurality of permutations of of the candidate retrieval locations based on the performance information;
selecting one of the plurality of permutations based on the cost-benefit level for each of the plurality of permutations;
sending, via a network, read slice requests to ones of the plurality of candidate retrieval locations included in the one of the plurality of permutations;
receiving, via the network, a plurality of encoded data slices from the ones of the plurality of candidate retrieval locations in response to the read slice requests; and
reproducing the data segment in response to the plurality of encoded data slices including the decode threshold number of encoded data slices.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determining includes identifying a set of encoded data slices associated with the data segment, wherein the data segment was dispersed storage error encoded to produce the set of encoded data slices for storage in the set of storage units, wherein the decode threshold number corresponds to a decode threshold number of an information dispersal algorithm utilized to dispersed storage error encode the data segment, and wherein reproducing the data segment includes dispersed storage error decoding the decode threshold number of the encoded data slices to produce the data segment.

### Claim 3 (depends on 1)

The method of claim 1, wherein identifying the plurality of candidate retrieval locations includes interpreting encoded data slice location information based on a set of slice names of the plurality of encoded data slices to produce a storage unit identifier for each of the plurality of candidate retrieval locations.

### Claim 4 (depends on 1)

The method of claim 1, wherein obtaining the performance information includes accessing a historical performance record.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the cost-benefit level includes performing a calculation to estimate an incremental network loading level for each of the plurality of permutations.

### Claim 6 (depends on 1)

The method of claim 1, wherein determining the cost-benefit level includes performing a calculation to estimate a recovery latency for each of the plurality of permutations.

### Claim 7 (depends on 1)

The method of claim 1, wherein selecting the one of the plurality of permutations includes identifying the permutation associated with a most favorable cost-benefit level.

### Claim 8 (depends on 1)

The method of claim 1, wherein selecting the one of the plurality of permutations includes identifying a subset of the plurality of permutations, wherein each of the plurality of permutations in the subset is associated with a cost-benefit level that compares favorably to a cost-benefit threshold level, and wherein the one of the plurality of permutations is selected pseudo-randomly from the subset of the plurality of permutations.

### Claim 9 (depends on 1)

The method of claim 1,
wherein the plurality of permutations includes at least one permutation that includes exactly one more than the decode threshold number of candidate retrieval locations selected from the plurality of candidate retrieval locations;
wherein the plurality of permutations includes at least one permutation that includes exactly one less than the total number of candidate retrieval locations selected from the plurality of candidate retrieval locations; and
wherein, for each integer number between the one more than the decode threshold number and the one less than the total number, the plurality of permutations includes at least one permutation that includes exactly the each integer number of candidate retrieval locations selected from the plurality of candidate retrieval locations.

### Claim 10

A processing system of a dispersed storage and task (DST) processing unit comprises:
at least one processor;
a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:
determine to recover a data segment from a set of storage units;
identify a plurality of candidate retrieval locations of the set of storage units;
obtain performance information for each of the plurality of candidate retrieval locations;
identify a plurality of permutations of the plurality of candidate retrieval locations, wherein each of the plurality of permutations corresponds to a proper subset of the plurality of candidate retrieval locations that includes a number of candidate retrieval locations selected from the plurality of candidate retrieval locations, wherein the number is strictly less than a total number of candidate retrieval locations in the plurality of candidate retrieval locations, and wherein the number is strictly greater than a decode threshold number;
determine a cost-benefit level for each of the plurality of permutations of of the candidate retrieval locations based on the performance information;
select one of the plurality of permutations based on the cost-benefit level for each of the plurality of permutations;
send, via a network, read slice requests to ones of the plurality of candidate retrieval locations included in the one of the plurality of permutations;
receive, via the network, a plurality of encoded data slices from the ones of the plurality of candidate retrieval locations in response to the read slice requests; and
reproduce the data segment in response to the plurality of encoded data slices including the decode threshold number of encoded data slices.

### Claim 11 (depends on 10)

The processing system of claim 10, wherein the determining includes identifying a set of encoded data slices associated with the data segment, wherein the data segment was dispersed storage error encoded to produce the set of encoded data slices for storage in the set of storage units, wherein the decode threshold number corresponds to a decode threshold number of an information dispersal algorithm utilized to dispersed storage error encode the data segment, and wherein reproducing the data segment includes dispersed storage error decoding the decode threshold number of the encoded data slices to produce the data segment.

### Claim 12 (depends on 10)

The processing system of claim 10, wherein identifying the plurality of candidate retrieval locations includes interpreting encoded data slice location information based on a set of slice names of the plurality of encoded data slices to produce a storage unit identifier for each of the plurality of candidate retrieval locations.

### Claim 13 (depends on 10)

The processing system of claim 10, wherein obtaining the performance information includes accessing a historical performance record.

### Claim 14 (depends on 10)

The processing system of claim 10, wherein determining the cost-benefit level includes performing a calculation to estimate an incremental network loading level for each of the plurality of permutations.

### Claim 15 (depends on 10)

The processing system of claim 10, wherein determining the cost-benefit level includes performing a calculation to estimate a recovery latency for each of the plurality of permutations.

### Claim 16 (depends on 10)

The processing system of claim 10, wherein selecting the one of the plurality of permutations includes identifying the permutation associated with a most favorable cost-benefit level.

### Claim 17 (depends on 10)

The processing system of claim 10, wherein selecting the one of the plurality of permutations includes identifying a subset of the plurality of permutations, wherein each of the plurality of permutations in the subset is associated with a cost-benefit level that compares favorably to a cost-benefit threshold level, and wherein the one of the plurality of permutations is selected pseudo-randomly from the subset of the plurality of permutations.

### Claim 18 (depends on 10)

The processing system of claim 10,
wherein the plurality of permutations includes at least one permutation that includes exactly one more than the decode threshold number of candidate retrieval locations selected from the plurality of candidate retrieval locations;
wherein the plurality of permutations includes at least one permutation that includes exactly one less than the total number of candidate retrieval locations selected from the plurality of candidate retrieval locations; and
wherein, for each integer number between the one more than the decode threshold number and the one less than the total number, the plurality of permutations includes at least one permutation that includes exactly the each integer number of candidate retrieval locations selected from the plurality of candidate retrieval locations.

### Claim 19

A non-transitory computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:
determine to recover a data segment from a set of storage units;
identify a plurality of candidate retrieval locations of the set of storage units;
obtain performance information for each of the plurality of candidate retrieval locations;
identify a plurality of permutations of the plurality of candidate retrieval locations, wherein each of the plurality of permutations corresponds to a proper subset of the plurality of candidate retrieval locations that includes a number of candidate retrieval locations selected from the plurality of candidate retrieval locations, wherein the number is strictly less than a total number of candidate retrieval locations in the plurality of candidate retrieval locations, and wherein the number is strictly greater than a decode threshold number;
determine a cost-benefit level for each of the plurality of permutations of of the candidate retrieval locations based on the performance information;
select one of the plurality of permutations based on the cost-benefit level for each of the plurality of permutations;
send, via a network, read slice requests to ones of the plurality of candidate retrieval locations included in the one of the plurality of permutations;
receive, via the network, a plurality of encoded data slices from the ones of the plurality of candidate retrieval locations in response to the read slice requests; and
reproduce the data segment in response to the plurality of encoded data slices including the decode threshold number of encoded data slices.

### Claim 20 (depends on 19)

The non-transitory computer readable storage medium of claim 19, wherein the determining includes identifying a set of encoded data slices associated with the data segment, wherein the data segment was dispersed storage error encoded to produce the set of encoded data slices for storage in the set of storage units, wherein the decode threshold number corresponds to a decode threshold number of an information dispersal algorithm utilized to dispersed storage error encode the data segment, and wherein reproducing the data segment includes dispersed storage error decoding the decode threshold number of the encoded data slices to produce the data segment.
