IP Library Granted Patent US 10,310,763
Granted Patent B2
US 10,310,763 · App. 15/822,472 · Granted Jun 4, 2019

Forming a distributed storage network memory without namespace aware distributed storage units

Inventors: Asimuddin Kazi (Naperville, IL); Jason K. Resch (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F3/0634G06F3/061G06F3/0604G06F3/064G06F3/067G06F3/0619G06F3/0635G06F3/0665G06F11/1004G06F11/1076H04L67/10H04L67/1097
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,310,763
App. No.
15/822,472
Granted
Jun 4, 2019
Kind
B2
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 (44)

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.

2. 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.

3. 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.

4. 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.

5. 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.

6. 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.

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

8. 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.

9. 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.

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.

11. 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.

12. 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.

13. 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.

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

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.

16. 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.

Assignments (4)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0288 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2017
From: KAZI, ASIMUDDIN; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044223/0119 →
Continuity (6)
Continuation In Part 15161383 · May 23, 2016
Continuation 14954873 · Nov 30, 2015
Continuation 14704069 · May 5, 2015
Continuation 14103141 · Dec 11, 2013
Provisional Application 61761005 · Feb 5, 2013
Related Publication 20180074744A1 · Mar 15, 2018