# US 10,310,763 B2 · Forming a distributed storage network memory without namespace aware distributed storage units

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

- Number: US 10,310,763 B2
- Document ID: US10310763B2
- Status: Granted
- Kind: B2
- Application number: 15/822,472
- Filed: 2017-11-27
- Published: 2018-03-15
- Granted: 2019-06-04
- Earliest claimed: 2013-02-05
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Asimuddin Kazi; Jason K. Resch
- Web page: https://patentgrep.com/patent/US10310763B2

## CPC

- G06F 3/0634: {by changing the state or mode of one or more devices}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/064: {Management of blocks}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- 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: 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 network (DSN). The method begins by selecting a pillar width number of dispersed storage (DS) units of a DS unit pool for storing data, segmenting the data based on a segmentation scheme to produce a plurality of segments, issuing, for each segment of the plurality of segments, a pillar width number of write slice requests to the pillar width number of DS units, determining that an unfavorable number of write errors have occurred, and for each of the write errors, re-issuing a corresponding write slice request to another DS unit of remaining DS units of the DS unit pool, generating a DSN address for the data based on identities of actual DS units utilized, and updating at least one of a DSN index and a DSN directory to associate the DSN address with a data identifier of the data.

## Claims

### Claim 1

A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method comprises:
selecting a pillar width number of dispersed storage (DS) units of a DS unit pool for storing data;
segmenting the data based on a segmentation scheme to produce a plurality of segments;
issuing, for each segment of the plurality of segments, a pillar width number of write slice requests to the pillar width number of DS units;
determining that an unfavorable number of write errors have occurred at one or more of the selected pillar width number of dispersed storage (DS) units, wherein the unfavorable number of write errors has occurred when the one or more processing modules have not received at least a write threshold number of successful write slice responses;
for each of the write errors, re-issuing a corresponding write slice request to another DS unit of remaining DS units of the DS unit pool, wherein the re-issuing a corresponding write slice request to another DS unit includes generating a new slice name for a slice, generating a new slice request to include the new slice name and the slice, and outputting the corresponding write slice request to remaining DS units of the DS unit pool separate from the original pillar width number of DS units;
generating a DSN address for the data based on identities of actual DS units utilized; and
updating at least one of a DSN index and a DSN directory to associate the DSN address with a data identifier of the data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the actual DS units utilized includes DS units from the selected pillar width number of dispersed storage (DS) units without write errors and the DS units of the remaining DS units of the DS unit pool utilized during the re-issuing a corresponding write slice request to another DS unit.

### Claim 3 (depends on 1)

The method of claim 1, wherein the selecting a pillar width number of dispersed storage (DS) units is based on one or more of storage availability, storage performance history, proximity, or affiliation with a requesting entity.

### Claim 4 (depends on 1)

The method of claim 1, wherein the issuing includes encoding each segment using a dispersed storage error coding function to produce a pillar width number of slices and generating the pillar number of write slice requests to include a pillar width number of temporary slice names and the pillar width number of slices.

### Claim 5 (depends on 4)

The method of claim 4, wherein the pillar width number of temporary slice names include a unique data identifier of data being stored, a segment identifier, and a pillar identifier.

### Claim 6 (depends on 1)

The method of claim 1, wherein the generating a DSN address includes producing a portion of the DSN address based on a deterministic function applied to each identifier of the DS units utilized.

### Claim 7 (depends on 1)

The method of claim 1, wherein the generating a DSN address includes concatenating internet protocol addresses of the DS units utilized.

### Claim 8 (depends on 1)

The method of claim 1, wherein the updating at least one of a DSN index and a DSN directory includes storing the DSN address in an index entry associated with the data identifier.

### Claim 9 (depends on 1)

The method of claim 1, wherein the associate the DSN address with a data identifier further comprises updating the DS units utilized with the DSN addresses to associate the DSN addresses with temporary slice names used during the issuing or re-issuing.

### Claim 10

A computing device of a group of computing devices of a dispersed storage network (DSN), the computing device comprises:
an interface;
a local memory; and
a processing module operably coupled to the interface and the local memory, wherein the processing module functions to:
select a pillar width number of dispersed storage (DS) units of a DS unit pool for storing data;
segment the data based on a segmentation scheme to produce a plurality of segments;
issue, for each segment of the plurality of segments, a pillar width number of write slice requests to the pillar width number of DS units;
determine that an unfavorable number of write errors have occurred, wherein the unfavorable number of write errors has occurred when the processing module has not received at least a write threshold number of successful write slice responses;
for each of the write errors, re-issuing a corresponding write slice request to another DS unit of remaining DS units of the DS unit pool, wherein the re-issuing a corresponding write slice request to another DS unit includes generating a new slice name for a slice, generating a new slice request to include the new slice name and the slice, and outputting the corresponding write slice request to remaining DS units of the DS unit pool separate from the original pillar width number of DS units;
determine that an unfavorable number of write errors have not occurred;
generate a DSN address for the data based on identities of actual DS units utilized; and
update at least one of a DSN index and a DSN directory to associate the DSN address with a data identifier of the data.

### Claim 11 (depends on 10)

The computing device of claim 10, wherein the actual DS units utilized includes DS units from the selected pillar width number of dispersed storage (DS) units without write errors and the DS units of the remaining DS units of the DS unit pool utilized during the re-issuing a corresponding write slice request to another DS unit.

### Claim 12 (depends on 10)

The computing device of claim 10, wherein the issue includes encoding each segment using a dispersed storage error coding function to produce a pillar width number of slices and generating the pillar width number of write slice requests to include a pillar width number of temporary slice names and the pillar width number of slices.

### Claim 13 (depends on 12)

The computing device of claim 12, wherein the pillar width number of temporary slice names include a unique data identifier of data being stored, a segment identifier, and a pillar identifier.

### Claim 14 (depends on 10)

The computing device of claim 10, wherein the generate a DSN address includes concatenating internet protocol addresses of the DS units utilized.

### Claim 15

A system, the system comprises:
an interface;
a local memory; and
a processing module operably coupled to the interface and the local memory, wherein the processing module functions to:
select a pillar width number of dispersed storage (DS) units of a DS unit pool for storing data;
segment the data based on a segmentation scheme to produce a plurality of segments;
issue, for each segment of the plurality of segments, a pillar width number of write slice requests to the pillar width number of DS units;
determine that an unfavorable number of write errors have occurred, wherein the unfavorable number of write errors has occurred when the processing module has not received at least a write threshold number of successful write slice responses;
for each of the write errors, re-issuing a corresponding write slice request to another DS unit of remaining DS units of the DS unit pool, wherein the re-issuing a corresponding write slice request to another DS unit includes generating a new slice name for a slice, generating a new slice request to include the new slice name and the slice, and outputting the corresponding write slice request to remaining DS units of the DS unit pool separate from the original pillar width number of DS units;
generate a DSN address for the data based on identities of actual DS units utilized; and
update at least one of a DS Network (DSN) index and a DSN directory to associate the DSN address with a data identifier of the data.

### Claim 16 (depends on 15)

The system of claim 15, wherein the actual DS units utilized includes DS units from the selected pillar width number of dispersed storage (DS) units without write errors and the DS units of the remaining DS units of the DS unit pool utilized during the re-issuing a corresponding write slice request to another DS unit.
