IP Library Granted Patent US 10,042,707
Granted Patent B2
US 10,042,707 · App. 15/282,127 · Granted Aug 7, 2018

Recovering affinity with imposter slices

Inventors: Andrew D. Baptist (Mt. Pleasant, WI); Greg R. Dhuse (Chicago, IL); Ravi V. Khadiwala (Bartlett, IL); Jason K. Resch (Chicago, IL); Ilya Volvovski (Chicago, IL); Ethan S. Wozniak (Park Ridge, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F11/1092G06F3/064G06F3/0604G06F3/067G06F3/0611G06F3/0619G06F3/0659G06F3/0665G06F3/0689G06F11/2094H03M13/1515H03M13/3761H04L43/0864H04L43/16H04L67/1008H04L67/1097G06F2201/805
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,042,707
App. No.
15/282,127
Granted
Aug 7, 2018
Kind
B2
Abstract

Methods and apparatus for accessing dispersed storage error encoded data in a dispersed storage network (DSN). For each available primary storage unit, a processing module issues a write slice request including a slice name and encoded data slice corresponding to the primary storage unit where the encoded data slice includes an information dispersal algorithm (IDA) index of the primary storage unit. For each unavailable primary storage unit, the processing module issues a write imposter slice request to a foster storage unit that includes a slice name corresponding to foster storage unit and an imposter encoded data slice corresponding to the unavailable primary storage unit, where the imposter encoded data slice includes an IDA index corresponding to the unavailable primary storage unit. When the unavailable primary storage unit becomes available, the processing module facilitates transfer of the imposter encoded data slice to the newly available primary storage unit.

Claims (40)

1. A method of accessing data in a dispersed storage network, the dispersed storage network including a plurality of primary dispersed storage units and a plurality of secondary dispersed storage units, the method comprising:

dispersed storage error encoding a data segment to produce a set of encoded data slices;

for each available primary dispersed storage unit of the plurality of primary dispersed storage units, sending a respective write slice request for receipt by a respective available primary dispersed storage unit, the respective write slice request including a respective slice name corresponding to the respective available primary dispersed storage unit and a respective encoded data slice of the set of encoded data slices, wherein the respective encoded data slice includes a first respective information dispersed algorithm index of the respective available primary dispersed storage unit; and

for each unavailable primary dispersed storage unit of the plurality of primary dispersed storage units, sending a respective write imposter slice request for receipt by a respective secondary dispersed storage unit of the plurality of secondary dispersed storage units, the respective write imposter slice request including a respective imposter slice name corresponding to the respective secondary dispersed storage unit and a respective imposter encoded data slice of the set of encoded data slices, wherein the respective imposter encoded data slice includes a second respective information dispersed algorithm index of the respective unavailable primary dispersed storage unit.

2. The method of claim 1 , wherein the set of encoded data slices includes at least a write threshold number of encoded data slices.

3. The method of claim 2 , wherein the plurality of primary dispersed storage units is equal to the number of encoded data slices in the set of encoded data slices.

4. The method of claim 1 , further comprising sending a command to one of the respective secondary dispersed storage units to send one of the respective imposter encoded data slices to one of the respective unavailable primary dispersed storage units when the one of respective unavailable primary dispersed storage units becomes available.

5. The method of claim 4 , further comprising sending a command to the one of the respective secondary dispersed storage units to delete the one of the respective imposter encoded data slices.

6. The method of claim 4 , further comprising renaming the respective imposter encoded data slice.

7. The method of claim 1 further including receiving one of the respective imposter encoded data slices from one of the respective secondary dispersed storage units and forwarding the one of the respective imposter encoded data slices to one of the respective unavailable primary dispersed storage units when the one of the respective unavailable primary dispersed storage units becomes available.

8. The method of claim 7 , further comprising sending a command to the one of the respective secondary dispersed storage units to delete the one of the respective imposter encoded data slices.

9. The method of claim 7 , further comprising renaming the respective imposter encoded data slice.

10. A dispersed storage processing unit for use in a dispersed storage network, the dispersed storage network including a plurality of primary dispersed storage units and a plurality of secondary dispersed storage units, the first dispersed storage processing unit comprising:

a communications interface;

a memory; and

a processor;

wherein the memory includes a data segment and wherein the memory further includes instructions for causing the processor to:

dispersed storage error encode a data segment to produce a set of encoded data slices;

for each available primary dispersed storage unit of the plurality of primary dispersed storage units, send a respective write slice request for receipt by a respective available primary dispersed storage unit, the respective write slice request including a respective slice name corresponding to the respective available primary dispersed storage unit and a respective encoded data slice of the set of encoded data slices, wherein the respective encoded data slice includes a respective information dispersed algorithm index of the respective available primary dispersed storage unit; and

for each unavailable primary dispersed storage unit of the plurality of primary dispersed storage units, send a respective write imposter slice request for receipt by a respective secondary dispersed storage unit of the plurality of secondary dispersed storage units, the respective write imposter slice request including a respective imposter slice name corresponding to the respective secondary dispersed storage unit and a respective imposter encoded data slice of the set of encoded data slices, wherein the respective imposter encoded data slice includes a respective information dispersed algorithm index of the respective unavailable primary dispersed storage unit.

11. The dispersed storage processing unit of claim 10 , wherein the set of encoded data slices includes at least a write threshold number of encoded data slices.

12. The dispersed storage processing unit of claim 11 , wherein the plurality of primary dispersed storage units is equal to the number of encoded data slices in the set of encoded data slices.

13. The dispersed storage processing unit of claim 10 , wherein the memory further includes instructions for causing the processor to send a command to one of the respective secondary dispersed storage unit to send one of the respective imposter encoded data slices to one of the respective unavailable primary dispersed storage units when the one of the respective unavailable primary dispersed storage units becomes available.

14. The dispersed storage processing unit of claim 13 , wherein the memory further includes instructions for causing the processor to send a command to the one of the respective secondary dispersed storage units to delete one of the respective imposter encoded data slices.

15. The dispersed storage processing unit of claim 13 , wherein the memory further includes instructions for causing the processor to rename the one of the respective imposter encoded data slices.

16. The dispersed storage processing unit of claim 10 , wherein the memory further includes instructions for causing the processor to receive one of the respective imposter encoded data slices from one of the respective secondary dispersed storage units and forward the one of the respective imposter encoded data slices to one of the respective unavailable primary dispersed storage units when the one of the respective unavailable primary dispersed storage units becomes available.

17. The dispersed storage processing unit of claim 16 , wherein the memory further includes instructions for causing the processor to send a command to the one of the respective secondary dispersed storage units to delete the one of the respective imposter encoded data slices.

18. The dispersed storage processing unit of claim 16 , wherein the memory further includes instructions for causing the processor to rename the respective imposter encoded data slice.

19. A dispersed storage network comprising:

a plurality of primary dispersed storage units;

a plurality of secondary dispersed storage units; and

a dispersed storage processing unit, the dispersed storage processing unit including:

a communications interface;

a memory; and

a processor;

wherein the memory includes a data segment and wherein the memory further includes instructions for causing the processor to:

dispersed storage error encode a data segment to produce a set of encoded data slices;

for each available primary dispersed storage unit of the plurality of primary dispersed storage units, send a respective write slice request to a respective available primary dispersed storage unit, the respective write slice request including a respective slice name corresponding to the respective available primary dispersed storage unit and a respective encoded data slice of the set of encoded data slices, wherein the respective encoded data slice includes a respective information dispersed algorithm index of the respective available primary dispersed storage unit; and

for each unavailable primary dispersed storage unit of the plurality of primary dispersed storage units, send a respective write imposter slice request to a respective secondary dispersed storage unit of the plurality of secondary dispersed storage units, the respective write imposter slice request including a respective imposter slice name corresponding to the respective secondary dispersed storage unit and a respective imposter encoded data slice of the set of encoded data slices, wherein the respective imposter encoded data slice includes a respective information dispersed algorithm index of the respective unavailable primary dispersed storage unit.

20. The dispersed storage network of claim 19 , wherein one of the respective secondary dispersed storage units periodically attempts to find one of the respective unavailable primary dispersed storage units.

Assignments (5)
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2016
From: BAPTIST, ANDREW D.; DHUSE, GREG R.; KHADIWALA, RAVI V.; RESCH, JASON K.; VOLVOVSKI, ILYA; WOZNIAK, ETHAN S.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039911/0641 →
Continuity (2)
Provisional Application 62248752 · Oct 30, 2015
Related Publication 20170123917A1 · May 4, 2017