IP Library Granted Patent US 9,606,858
Granted Patent B2
US 9,606,858 · App. 13/887,662 · Granted Mar 28, 2017

Temporarily storing an encoded data slice

Inventors: Jason K. Resch (Chicago, IL); Andrew Baptist (Mt. Pleasant, WI); Ilya Volvovski (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F11/10G06F11/1076G06F17/30584G06F2211/1028
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 9,606,858
App. No.
13/887,662
Granted
Mar 28, 2017
Kind
B2
Abstract

A processing module encodes data using a dispersed storage error coding function to produce a set of encoded data slices and identifies storage units for storage of the set of encoded data slices. The processing module determines that a storage unit of the storage units is unavailable, where the storage unit is targeted to store an encoded data slice of the set of encoded data slices. The processing module selects a foster storage unit of the storage units for temporarily storing the encoded data slice. When the storage unit is available, the processing module transfers the encoded data slice from the foster storage unit to the storage unit.

Claims (60)

1. A method that is executed by one or more processing modules of one or more computing devices, the method comprises:

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

identifying a set of storage units for storage of the set of encoded data slices;

while writing the set of encoded data slices to the identified set of storage units:

determining that a storage unit of the identified set of storage units is unavailable, wherein the storage unit is targeted to store an encoded data slice of the set of encoded data slices;

determining to foster store the encoded data slice;

when determined to foster store the encoded data slice:

selecting a foster storage unit of the identified set of storage units for temporarily foster storing the encoded data slice;

writing the encoded data slice to the foster storage unit, the writing including issuing a write request to the foster storage unit, wherein the write request includes the encoded data slice, an indication that the encoded data slice is to be stored as a foster encoded data slice, a second encoded data slice of the set of encoded data slices, and an indication that the second encoded data slice is to be permanently stored; and

when the storage unit is available, transferring the encoded data slice from the foster storage unit to the storage unit.

2. The method of claim 1 , wherein the selecting the foster storage unit comprises:

determining the foster storage unit based on a desired physical proximity to the storage unit.

3. The method of claim 1 , wherein the selecting the foster storage unit comprises at least one of:

determining availability of the foster storage unit;

initiating a query with the foster storage unit;

accessing a list that identifies the foster storage unit;

determining performance history of the foster storage unit; or

determining reliability history of the foster storage unit.

4. The method of claim 1 , wherein the transferring the encoded data slice comprises:

detecting when the storage unit is available;

sending a transfer request to the foster storage unit and the storage unit for transferring the encoded data slice from the foster storage unit to the storage unit; and

receiving an acknowledgement of the transferring of the encoded data slice.

5. The method of claim 1 , wherein the transferring the encoded data slice comprises:

when the storage unit is available, sending a notice to the storage unit that the foster storage unit is storing the encoded data slice; and

requesting, by a computing device of the one or more computing devices within the storage unit, transfer of the encoded data slice from the foster storage unit to the storage unit.

6. The method of claim 1 , wherein the transferring the encoded data slice comprises:

detecting when the storage unit is available;

sending a read request to the foster storage unit regarding the encoded data slice; and

upon receiving the encoded data slice, sending the encoded data slice to the storage unit for storage therein.

7. A computing device comprises:

an interface; and

a processing module, when operable within the computing device, causes the computing device to:

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

identify a set of storage units for storage of the set of encoded data slices;

while writing the set of encoded data slices to the identified set of storage units:

determine that a storage unit of the identified set of storage units is unavailable, wherein the storage unit is targeted to store an encoded data slice of the set of encoded data slices;

determine to foster store the encoded data slice;

when determine to foster store the encoded data slice:

select a foster storage unit of the identified set of storage units for temporarily foster storing the encoded data slice;

write the encoded data slice to the foster storage unit, wherein the write includes the processing module further functioning to issue, via the interface, a write request to the foster storage unit, wherein the write request includes the encoded data slice, an indication that the encoded data slice is to be stored as a foster encoded data slice, a second encoded data slice of the set of encoded data slices, and an indication that the second encoded data slice is to be permanently stored; and

when the storage unit is available, transfer the encoded data slice from the foster storage unit to the storage unit.

8. The computing device of claim 7 , wherein the processing module functions to select the foster storage unit by:

determining the foster storage unit based on a desired physical proximity to the storage unit.

9. The computing device of claim 7 , wherein the processing module functions to select the foster storage unit by at least one of:

determining availability of the foster storage unit;

initiating, via the interface, a query with the foster storage unit;

accessing a list that identifies the foster storage unit;

determining performance history of the foster storage unit; or

determining reliability history of the foster storage unit.

10. The computing device of claim 7 , wherein the processing module functions to transfer the encoded data slice by:

detecting when the storage unit is available;

sending, via the interface, a transfer request to the foster storage unit and the storage unit for transferring the encoded data slice from the foster storage unit to the storage unit; and

receiving, via the interface, an acknowledgement of the transferring of the encoded data slice.

11. The computing device of claim 7 , wherein the processing module functions to transfer the encoded data slice by:

when the storage unit is available, sending, via the interface, a notice to the storage unit that the foster storage unit is storing the encoded data slice; and

requesting, by another computing device within the storage unit, transfer of the encoded data slice from the foster storage unit to the storage unit.

12. The computing device of claim 7 , wherein the processing module functions to transfer the encoded data slice by:

detecting when the storage unit is available;

sending, via the interface, a read request to the foster storage unit regarding the encoded data slice; and

upon receiving, via the interface, the encoded data slice, sending, via the interface, the encoded data slice to the storage unit for storage therein.

Assignments (7)
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 May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2014
From: VOLVOVSKI, ILYA
To: CLEVERSAFE, INC.
Reel/Frame 033227/0924 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2013
From: RESCH, JASON K.; BAPTIST, ANDREW
To: CLEVERSAFE, INC.
Reel/Frame 030379/0886 →
Continuity (3)
Continuation In Part 13021510 · Feb 4, 2011
Provisional Application 61327921 · Apr 26, 2010
Related Publication 20130262959A1 · Oct 3, 2013