IP Library Granted Patent US 10,459,792
Granted Patent B2
US 10,459,792 · App. 15/903,628 · Granted Oct 29, 2019

Using an eventually consistent dispersed memory to implement storage tiers

Inventor: Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1076G06F3/061G06F3/064G06F3/067G06F3/0614G06F3/0644
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,459,792
App. No.
15/903,628
Granted
Oct 29, 2019
Kind
B2
Abstract

A method for a dispersed storage network begins by receiving one or more revisions of a data object for storage within a time frame and facilitating, for each revision of the one or more revisions, storage of the revision in the selected primary storage target including at least some encoded data slices of each set of encoded data slices of a plurality of sets of encoded data slices are stored in the selected primary storage target and, for each of the revisions, facilitating subsequent storage of remaining encoded data slices of each set of encoded data slices that were not stored in the selected primary storage target, and determining to store the remaining encoded data slices in another storage target, identifying a most recently stored revision of the data object and facilitating storage of the remaining encoded data slices of the most recently stored revision in the other storage target.

Claims (43)

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:

receiving one or more revisions of a data object for storage within a time frame;

selecting a primary storage target from a plurality of storage targets, where a number of DSN storage units of the primary storage target is greater than or equal to a decode threshold number of encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

for each revision of the one or more revisions, facilitating storage of the revision in the selected primary storage target, where, for the data object, a first group of the encoded data slices of each set of encoded data slices of a plurality of sets of encoded data slices are stored in the selected primary storage target, where the first group of the encoded data slices includes at least the decode threshold number of encoded data slices; and

for each of the revisions, facilitating subsequent temporary storage of remaining encoded data slices of each set of encoded data slices that were not stored in the selected primary storage target in a memory of a dispersed storage (DS) processing unit, wherein the remaining encoded data slices include all encoded data slices from the set of encoded data slices that were not included in the first group of the encoded data slices; and

subsequently determining to store only a most recently stored version of the remaining encoded data slices temporarily stored in the memory of a dispersed storage processing unit in a secondary storage target, where a number of DSN storage units of the secondary storage target is greater than or equal to a decode threshold number of the encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

identifying a most recently stored revision of the data object; and

facilitating storage of the remaining encoded data slices of the most recently stored revision in the secondary storage target.

2. The method of claim 1 , wherein the receiving further includes receiving a revision identifier for each revision of the one or more revisions.

3. The method of claim 1 , wherein the selecting is based on identifying a storage target associated with a favorable performance level as the primary storage target.

4. The method of claim 3 , wherein the favorable performance level includes any of: best performance or performance greater than a minimum performance threshold level.

5. The method of claim 1 , wherein the facilitating storage of the revision in the selected primary storage target includes: disperse storage error encoding the revision of the data object to produce a plurality of sets of encoded data slices and for each set, identifying encoded data slices associated with the primary storage target, and sending the identified encoded data slices to DSN storage units of the primary storage target for storage.

6. The method of claim 1 , wherein the subsequent determining includes any of: indicating to store the remaining encoded data slices when a timeframe expires without receiving another revision of the data object; indicating to store the remaining encoded data slices in accordance with a schedule; or indicating to store the remaining encoded data slices when a number of temporarily stored revisions is substantially the same as a maximum number of stored revisions.

7. The method of claim 1 , wherein the determining to store the remaining encoded data slices and the secondary storage target further includes identifying the other storage target based on at least one of a lookup, performing a query, or interpreting a query response.

8. The method of claim 1 , wherein the identifying the secondary storage target is based on at least one of a lookup and performing a query and includes identifying the secondary storage target as a storage target associated with the selected primary storage target.

9. The method of claim 1 , wherein the identifying a most recently stored revision of the data object includes at least one of interpreting a lookup, issuing a list slice request to a DSN storage unit of the selected primary storage target, or interpreting a list slice response.

10. The method of claim 1 , wherein the facilitating storage of the remaining encoded data slices includes sending the remaining encoded data slices of each set of encoded data slices of the plurality of sets of encoded data slices associated with the most recently stored revision to DSN storage units of the secondary storage target.

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

receive one or more revisions of a data object for storage within a time frame;

select a primary storage target from a plurality of storage targets, where a number of DSN storage units of the primary storage target is greater than or equal to a decode threshold number of encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

for each revision of the one or more revisions, facilitate storage of the revision in the selected primary storage target, where, for the data object, a first group of the encoded data slices of each set of encoded data slices of a plurality of sets of encoded data slices are stored in the selected primary storage target, where the first group of the encoded data slices includes at least the decode threshold number of encoded data slices; and

for each of the revisions, facilitate subsequent temporary storage of remaining encoded data slices of each set of encoded data slices that were not stored in the selected primary storage target in a memory of a dispersed storage processing unit, wherein the remaining encoded data slices include all encoded data slices from the set of encoded data slices that were not included in the first group of the encoded data slices; and

subsequently determine to store only a most recently stored version of the remaining encoded data slices temporarily stored in the memory of a dispersed storage processing unit in a secondary storage target, where a number of DSN storage units of the secondary storage target is greater than or equal to a decode threshold number of the encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

identify a most recently stored revision of the data object; and

facilitate storage of the remaining encoded data slices of the most recently stored revision in the secondary storage target.

12. The computing device of claim 11 , wherein the selecting is based on identifying a storage target associated with a favorable performance level as the primary storage target.

13. The computing device of claim 11 , wherein the facilitate storage of the revision in the selected primary storage target includes: disperse storage error encoding the revision of the data object to produce a plurality of sets of encoded data slices and for each set, identifying encoded data slices associated with the primary storage target, and sending the identified encoded data slices to DSN storage units of the primary storage target for storage.

14. The computing device of claim 11 , wherein the subsequent determining includes any of: indicating to store the remaining encoded data slices when a timeframe expires without receiving another revision of the data object; indicating to store the remaining encoded data slices in accordance with a schedule; or indicating to store the remaining encoded data slices when a number of temporarily stored revisions is substantially the same as a maximum number of stored revisions.

15. The computing device of claim 11 , wherein the facilitating storage of the remaining encoded data slices includes sending the remaining encoded data slices of each set of encoded data slices of the plurality of sets of encoded data slices associated with the most recently stored revision to DSN storage units of the secondary storage target.

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

receive one or more revisions of a data object for storage within a time frame;

select a primary storage target from a plurality of storage targets, where a number of DSN storage units of the primary storage target is greater than or equal to a decode threshold number of encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

for each revision of the one or more revisions, facilitate storage of the revision in the selected primary storage target, where, for the data object, a first group of the encoded data slices of each set of encoded data slices of a plurality of sets of encoded data slices are stored in the selected primary storage target, where the first group of the encoded data slices includes at least the decode threshold number of encoded data slices; and

for each of the revisions, facilitate subsequent temporary storage of remaining encoded data slices of each set of encoded data slices that were not stored in the selected primary storage target in a memory of a dispersed storage processing unit, wherein the remaining encoded data slices include all encoded data slices from the set of encoded data slices that were not included in the first group of the encoded data slices; and

subsequently determine to store only a most recently stored version of the remaining encoded data slices temporarily stored in the memory of a dispersed storage processing unit in a secondary storage target, where a number of DSN storage units of the secondary storage target is greater than or equal to a decode threshold number of the encoded data slices associated with a dispersed storage error encoding of one or more portions of the data object;

identify a most recently stored revision of the data object; and

facilitate storage of the remaining encoded data slices of the most recently stored revision in the secondary storage target.

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 DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2018
From: RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 045019/0777 →
Continuity (3)
Continuation In Part 14847855 · Sep 8, 2015
Provisional Application 62072123 · Oct 29, 2014
Related Publication 20180189139A1 · Jul 5, 2018