IP Library Granted Patent US 10,042,577
Granted Patent B2
US 10,042,577 · App. 15/342,238 · Granted Aug 7, 2018

Storing and retrieving mutable objects

Inventors: Wesley B. Leggette (Chicago, IL); Jason K. Resch (Chicago, IL); Eric G. Smith (Chicago, IL); Sebastien Vas (Sunnyvale, CA); Yogesh R. Vedpathak (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F3/0644G06F3/0604G06F3/064G06F3/067G06F3/0619G06F11/1068G06F11/1076G06F11/1092G06F11/1008G06F11/1044G06F2211/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 10,042,577
App. No.
15/342,238
Granted
Aug 7, 2018
Kind
B2
Abstract

A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method begins by identifying a data object to access within a DSN. The method continues by identifying a vault ID based on the data object. The method continues by obtaining an object ID based on the data object. The method continues by selecting at least one generation ID based on generation status. The method continues, for each generation ID, by generating at least one set of slice names using the vault ID, the generation ID, and the object ID. The method continues, for each set of slice names, by generating a set of slice access requests that includes the set of slice names and accessing the DSN utilizing the set of slice access requests.

Claims (45)

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:

identifying, by a dispersed storage module, a data object to access within a DSN vault, where the DSN vault includes a virtual memory block associated with a portion of an overall namespace of the DSN;

identifying, by a dispersed storage module, a vault ID based on the data object and the DSN vault, where the vault ID identifies a vault of the DSN associated with a data object requesting entity;

obtaining, by a dispersed storage module, an object ID based on the data object, where the object ID is retrieved from a DSN index lookup based on a data name and performing a deterministic function on the data name;

selecting, by a dispersed storage module, one or more generation IDs based on generation status, where the generation status is at least based on accessing a generation utilization list of a registry to identify a fullness level associated with each potential one of the one or more generation IDs for the DSN vault;

for each of the one or more generation IDs, generating, by a dispersed storage module, at least one set of slice names using the vault ID, the generation ID, and the object ID; and

for each set of slice names, generating, by a dispersed storage module, a set of slice access requests that includes the set of slice names; and

accessing, by a dispersed storage module, DSN storage units utilizing the set of slice access requests; and

wherein the accessing may further be based on a request type wherein, for a read request type, slice access responses are received, and favorable slice access responses decoded using a dispersed storage error coding function to reproduce one or more data segments of data and, for a write request type, storage of the data object is confirmed when receiving a write threshold number of favorable slice access responses from the DSN for each data segment of a plurality of data segments of the data.

2. The method of claim 1 , wherein the dispersed storage module identifies a data object access request within a dispersed storage network (DSN).

3. The method of claim 2 wherein the identifying a data object to access within a DSN is based on receiving the data object access request that includes one or more of: a data name, a requester identifier (ID), a vault ID, an object ID, a source name, or data.

4. The method of claim 1 , wherein the identifying a vault ID is based on an ID lookup based on a data name.

5. The method of claim 1 , wherein the identifying a vault ID is based on a data object requester ID.

6. The method of claim 1 , wherein the obtaining further includes obtaining the object ID based on one or more of: a request type, data, receiving the object ID, or a data name.

7. The method of claim 1 , wherein the generation status further indicates availability of one or more generation IDs.

8. The method of claim 1 , wherein the fullness level indicates full or not full.

9. The method of claim 1 , wherein the selecting further includes selecting the generation IDs based on one or more of: a request type and the generation status.

10. The method of claim 1 , wherein the selecting, for a read request, includes selecting each of the generation IDs associated with a generation status that indicates that a generation is full and selects a generation ID that is one greater than a largest generation ID of one or more generation IDs that are full, if any.

11. The method of claim 1 , wherein the selecting, for a write request, selecting a lowest generation ID associated with a generation that is not full.

12. The method of claim 1 , wherein the generating, for a write request, includes a set of slice names and includes a set of encoded data slices that are encoded, using a dispersed storage error coding function, from a corresponding data segment of the data.

13. The method of claim 1 , wherein the generating, for a read request, the processing module includes a set of slice names.

14. The method of claim 1 , wherein the accessing includes outputting the set of slice access requests to the DSN.

15. 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 dispersed storage module operably coupled to the interface and the local memory, wherein the processing module functions to:

identify a data object to access within a DSN vault, where the DSN vault includes a virtual memory block associated with a portion of an overall namespace of the DSN;

identify a vault ID based on the data object and the DSN vault, where the vault ID identifies a vault of the DSN associated with a data object requesting entity;

obtain an object ID based on the data object, where the object ID is retrieved from a DSN index lookup based on a data name and performing a deterministic function on the data name;

select at least one or more generation IDs based on generation status, where the generation status is at least based on accessing a generation utilization list of a registry to identify a fullness level associated with each potential one of the one or more generation IDs for the DSN vault;

for each of the one or more generation IDs, generate at least one set of slice names using the vault ID, the generation ID, and the object ID; and

for each set of slice names, generate a set of slice access requests that includes the set of slice names; and

access DSN storage units utilizing the set of slice access requests, and

wherein the access may further be based on a request type wherein, for a read request type, slice access responses are received, and favorable slice access responses decoded using a dispersed storage error coding function to reproduce one or more data segments of the data and, for a write request type, storage of the data object is confirmed when receiving a write threshold number of favorable slice access responses from the DSN for each data segment of a plurality of data segments of the data.

16. 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, by a dispersed storage module, a data name for retrieval from DSN storage units;

identifying, by a dispersed storage module, a data object based on the data name to access within a DSN vault, where the DSN vault includes a virtual memory block associated with a portion of an overall namespace of the DSN;

identifying, by a dispersed storage module, a vault ID based on the data object and the DSN vault, where the vault ID identifies a vault of the DSN associated with a data object requesting entity;

obtaining, by a dispersed storage module, an object ID based on the data object, where the object ID is retrieved from a DSN index lookup based on a data name and performing a deterministic function on the data name;

selecting, by a dispersed storage module, each generation of the DSN vault that is full for a corresponding source name and a next generation of the DSN vault after a last full generation, where a DSN vault is full at least based on accessing a generation utilization list of a registry to identify a fullness level associated with each potential generation IDs for the DSN vault;

for each generation of the DSN vault selected, generating, by a dispersed storage module, at least one set of slice names using the vault ID, a generation ID, and the object ID; and

for each set of slice names, generating, by a dispersed storage module, a set of slice access requests to read slices that includes the set of slice names; and

outputting, by a dispersed storage module, the slice access requests to a DS (dispersed storage) unit set;

receiving, by a dispersed storage module, at least a decode threshold of the set of slices; and

decoding, by a dispersed storage module, the received slices to produce the data object.

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 Nov 3, 2016
From: LEGGETTE, WESLEY B.; RESCH, JASON K.; SMITH, ERIC G.; VAS, SEBASTIEN; VEDPATHAK, YOGESH R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 040211/0890 →
Continuity (4)
Continuation In Part 15095558 · Apr 11, 2016
Continuation In Part 14088794 · Nov 25, 2013
Provisional Application 61748891 · Jan 4, 2013
Related Publication 20170052733A1 · Feb 23, 2017