IP Library Granted Patent US 9,063,658
Granted Patent B2
US 9,063,658 · App. 14/288,453 · Granted Jun 23, 2015

Distributed storage network for modification of a data object

Inventor: Jason K. Resch (Chicago, IL)
Assignee: Cleversafe, Inc.
G06F3/061G06F11/1076G06F2211/1028G06F11/1092H04L67/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 9,063,658
App. No.
14/288,453
Granted
Jun 23, 2015
Kind
B2
Abstract

In a dispersed storage network, data objects are dispersed storage error encoded into pluralities of sets of encoded data slices that are stored in a set of storage units. To recover a data object, a read threshold number of encoded data slices from each set of encoded data slices of a corresponding set of the plurality of sets of encoded data slices are required. Upon determining that an update is available for the set of storage units, a dispersed storage managing unit takes a first subset of storage units off line to perform the update. During the update, a remaining number of storage units of the set of storage units remain on line such that at least the read threshold number of encoded data slices are available for each set of the pluralities of sets of encoded data slices.

Claims (71)

1. A dispersed storage managing unit for use within a dispersed storage network, comprising:

an interface;

memory; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

determine that an update is available for a set of storage units that support a virtual memory vault, wherein the virtual memory vault is mapped to the set of storage units, wherein data objects are dispersed storage error encoded into pluralities of sets of encoded data slices that are stored in the set of storage units and wherein, to recover a data object of the data objects, a read threshold number of encoded data slices from each set of encoded data slices of a corresponding set of the plurality of sets of encoded data slices are required;

take a first subset of storage units in the set of storage units off line to perform the update, wherein a remaining number of storage units of the set of storage units remain on line such that at least the read threshold number of encoded data slices are available for each set of the pluralities of sets of encoded data slices; and

when the update is complete in the first subset of storage units, bring the first subset of storage units back on line.

2. The dispersed storage managing unit of claim 1 , wherein the processing module is further operable to:

take a second subset of storage units in the set of storage units off line to perform the update, the second subset of storage units including different ones of the storage units than the first subset of storage units, the second subset of storage units including a number of storage units less than or equal to the first subset of storage units; and

when the update is complete in the second subset of storage units, bring the second subset of storage units back on line.

3. The dispersed storage managing unit of claim 1 , wherein the update is a software update.

4. The dispersed storage managing unit of claim 3 , wherein the processing module is further operable to:

download the software update via the interface; and

cache the software update in the memory.

5. The dispersed storage managing unit of claim 3 , wherein the processing module is further operable to perform at least one of:

provide the software update to the first subset of storage units; and

provide a message that instructs the first subset of storage units to retrieve the software update from a trusted source.

6. The dispersed storage managing unit of claim 3 , wherein the processing module is further operable to:

provide the software update to all of the storage units in the set of storage units prior to taking the first subset of storage units off line.

7. The dispersed storage managing unit of claim 3 , further comprises:

the memory storing a current software version running on each of the storage units; and

the processing module is further operable to:

compare an update version of the software update with the current software version to determine whether to provide the software update to the set of storage units.

8. The dispersed storage managing unit of claim 1 , wherein the update comprises one or more of:

a new software application;

a new version of an existing software application;

a new version of a portion of an existing software application;

adding new physical memory;

updating physical memory;

adding a new processing module;

updating a processing module;

updating an interface; and

adding a new interface.

9. The dispersed storage managing unit of claim 1 , further comprises:

a decode threshold number including the read threshold number and a safety factor;

the read threshold number indicating a minimum number of storage units in the set of storage units that are needed to enable retrieval of the data object; and

the safety factor indicating an additional number of storage units in addition to the minimum number of storage units that should remain on line during the update;

wherein the remaining number of storage units that remain on line while the first subset of storage units is updated is at least equal to the decode threshold number of storage units.

10. A method for updating a set of storage units within a dispersed storage network, comprising:

determining, by a processing module, that an update is available for the set of storage units, the set of storage units supporting a virtual memory vault, wherein the virtual memory vault is mapped to the set of storage units, wherein data objects are dispersed storage error encoded into pluralities of sets of encoded data slices that are stored in the set of storage units and wherein, to recover a data object of the data objects, a read threshold number of encoded data slices from each set of encoded data slices of a corresponding set of the plurality of sets of encoded data slices are required;

taking, by the processing module, a first subset of storage units in the set of storage units off line to perform the update, wherein a remaining number of storage units of the set of storage units remain on line such that at least the read threshold number of encoded data slices are available for each set of the pluralities of sets of encoded data slices; and

when the update is complete in the first subset of storage units, bringing, by the processing module, the first subset of storage units back on line.

11. The method of claim 10 , further comprises:

taking, by the processing module, a second subset of storage units in the set of storage units off line to perform the update, the second subset of storage units including different ones of the storage units than the first subset of storage units, the second subset of storage units including a number of storage units less than or equal to the first subset of storage units; and

when the update is complete in the second subset of storage units, bringing, by the processing module, the second subset of storage units back on line.

12. The method of claim 10 , wherein the update is a software update.

13. The method of claim 12 , further comprises:

downloading the software update from the network; and

caching the software update in a memory.

14. The method of claim 12 , further comprises at least one of:

providing, by the processing module, the software update to the first subset of storage units; and

providing, by the processing module, a message that instructs the first subset of storage units to retrieve the software update from a trusted source.

15. The method of claim 12 , further comprising:

providing, by the processing module, the software update to all of the storage units prior to taking the first subset of storage units off line.

16. The method of claim 12 , further comprises:

storing a current software version running on each of the storage units in a memory; and

comparing, by the processing module, an update version of the software update with the current software version to determine whether to provide the software update to the set of storage units.

17. A non-transitory computer readable storage medium having accessible therefrom a set of instructions interpretable by a processing module, the set of instructions being configured to cause the processing module to carry out operations for:

determining that an update is available for a set of storage units, the set of storage units supporting a virtual memory vault, wherein the virtual memory vault is mapped to the set of storage units, wherein data objects are dispersed storage error encoded into pluralities of sets of encoded data slices that are stored in the set of storage units and wherein, to recover a data object of the data objects, a read threshold number of encoded data slices from each set of encoded data slices of a corresponding set of the plurality of sets of encoded data slices are required;

taking a first subset of storage units in the set of storage units off line to perform the update, wherein a remaining number of storage units of the set of storage units remain on line such that at least the read threshold number of encoded data slices are available for each set of the pluralities of sets of encoded data slices; and

when the update is complete in the first subset of storage units, bringing the first subset of storage units back on line.

18. The storage medium of claim 17 , wherein the set of instructions further causes the processing module to carry out operations for:

taking a second subset of storage units in the set of storage units off line to perform the update, the second subset of storage units including different ones of the storage units than the first subset of storage units, the second subset of storage units including a number of storage units less than or equal to the first subset of storage units; and

when the update is complete in the second subset of storage units, bringing the second subset of storage units back on line.

19. The storage medium of claim 17 , wherein the set of instructions further causes the processing module to carry out operations for:

downloading the update from a network; and

caching the update in a memory.

20. The storage medium of claim 17 , wherein the set of instructions further causes the processing module to carry out operations for performing at least one of:

providing the update to the first subset of storage units;

providing a message that instructs the first subset of storage units to retrieve the update from a trusted source; and

providing the update to all of the storage units in the set of storage units prior to taking the first subset of storage units off line.

Assignments (6)
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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2014
From: RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 032972/0001 →
Continuity (5)
Continuation 14132020 · Dec 18, 2013
Continuation 13932320 · Jul 1, 2013
Continuation 12839197 · Jul 19, 2010
Provisional Application 61256436 · Oct 30, 2009
Related Publication 20140280681A1 · Sep 18, 2014