IP Library Granted Patent US 8,275,744
Granted Patent B2
US 8,275,744 · App. 12/764,873 · Granted Sep 25, 2012

Dispersed storage network virtual address fields

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 8,275,744
App. No.
12/764,873
Granted
Sep 25, 2012
Kind
B2
Abstract

A dispersed storage network includes a dispersed storage device to store data. The dispersed storage device includes a processing module operable to slice a data segment of a data object into data slices, in which the number of data slices corresponds to a number of pillars for storing the data object. The processing module further creates a slice name for each of the data slices. The slice name includes routing information containing a vault identifier that identifies at least one user of the data object and a slice index based on the vault identifier and a pillar identifier that identifies a pillar associated with the data slice. In addition, the slice name includes a source data name containing an identifier of the data object.

Claims (56)

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

an interface; and

a processing module operable to:

slice a data segment of a data object into data slices, a number of the data slices corresponding to a number of pillars for storing the data object, each of the pillars corresponding to a particular data slice of each data segment of each data object written to a vault, the vault being associated with at least one user;

create a slice name for each of the data slices, the slice name including:

routing information containing:

a vault identifier that identifies the vault associated with the data object; and

a slice index based on the vault identifier and a pillar identifier that identifies a pillar associated with the data slice; and

a source data name containing an identifier of the data object; and

output, via the interface, a data slice of the data slices and the respective slice name to a corresponding storage unit for storage therein.

2. The dispersed storage device of claim 1 , wherein the routing information comprises a vault generation identifier that identifies a generation of the vault, the generation indicating a virtual address range assigned to the pillar.

3. The dispersed storage device of claim 2 , wherein the routing information comprises a reserved field, and wherein the slice index comprises two bytes, the vault identifier comprises sixteen bytes, the vault generation identifier comprises two bytes and the reserved field comprises four bytes.

4. The dispersed storage device of claim 1 , wherein the processing module comprises a gateway module operable to:

receive a user identity (ID) and object name associated with the data object;

determine the vault identifier and user information associated with the at least one user from the user ID; and

determine the source data name from the object name.

5. The dispersed storage device of claim 4 , wherein the source data name comprises the vault identifier, the vault generation identifier and a data name associated with the object name.

6. The dispersed storage device of claim 4 , wherein the user information comprises user attributes of the user and operational parameters, the operational parameters including one or more of an error coding algorithm, a read threshold of the error coding algorithm, the number of pillars for the vault, an encryption algorithm, a slicing parameter, a compression algorithm, an integrity check method, caching settings and parallelism settings.

7. The dispersed storage device of claim 4 , wherein the processing module further comprises an access module operable to:

receive the data object, the source data name and the user information from the gateway module; and

segment the data object into data segments based on the user information; and

a grid module operable to:

receive the data segments, the source data name and the user information from the access module;

slice each of the data segments into respective error coded data slices;

create the respective slice name for each of the error coded data slices; and

determine the corresponding storage unit for each of the error coded data slices.

8. The dispersed storage device of claim 7 , wherein the grid module further comprises:

a slice index generator for receiving the pillar identifier, reversing the pillar identifier to create a reversed pillar identifier and performing an XOR on the reversed pillar identifier and least significant bits of the vault identifier to generate the slice index.

9. The dispersed storage device of claim 4 , wherein the source data name comprises, in a first format, a type field indicating a file format of the data object, a file identifier that is linked to the object name and a segment identifier that identifies the data segment, and in a second format, a type field indicating a block format of the data object, a filler field and a block identifier that is linked to the object name.

10. The dispersed storage device of claim 1 , wherein the data object comprises at least one of a data file, a data block and a real time data stream.

11. A method for storage of a data object, comprising:

slicing a data segment of the data object into data slices a number of the data slices corresponding to a number of pillars for storing the data object, each of the pillars corresponding to a particular data slice of each data segment of each data object written to a vault, the vault being associated with at least one user;

creating a slice name for each of the data slices, the slice name including:

routing information containing:

a vault identifier that identifies the vault associated with the data object; and

a slice index based on the vault identifier and a pillar identifier that identifies a pillar associated with the data slice; and

a source data name containing an identifier of the data object; and

outputting, via the interface, a data slice of the data slices and the respective slice name to a corresponding storage unit for storage therein.

12. The method of claim 11 , wherein the routing information comprises a vault generation identifier that identifies a generation of the vault, the generation indicating a virtual address range assigned to the pillar.

13. The method of claim 12 , wherein the routing information comprises a reserved field, and wherein the slice index comprises two bytes, the vault identifier comprises sixteen bytes, the vault generation identifier comprises two bytes and the reserved field comprises four bytes.

14. The method of claim 11 , further comprising:

receiving a user identity (ID) and object name associated with the data object;

determining the vault identifier and user information associated with the at least one user from the user ID; and

determining the source data name from the object name.

15. The method of claim 14 , wherein the source data name comprises the vault identifier, the vault generation identifier and a data name associated with the object name.

16. The method of claim 14 , wherein the user information comprises user attributes of the user and operational parameters, the operational parameters including one or more of an error coding algorithm, a read threshold of the error coding algorithm, the number of pillars for the vault, an encryption algorithm, a slicing parameter, a compression algorithm, an integrity check method, caching settings and parallelism settings.

17. The method of claim 14 , wherein the slicing further comprises:

receiving the data object and the user information;

segmenting the data object into data segments based on the user information; and

slicing each of the data segments into respective error coded data slices.

18. The method of claim 17 , wherein the creating the slice name further comprises:

receiving the pillar identifier;

reversing the pillar identifier to create a reversed pillar identifier; and

performing an XOR on the reversed pillar identifier and least significant bits of the vault identifier to generate the slice index.

19. The method of claim 14 , wherein the source data name comprises, in a first format, a type field indicating a file format of the data object, a file identifier that is linked to the object name and a segment identifier that identifies the data segment, and in a second format, a type field indicating a block format of the data object, a filler field and a block identifier that is linked to the object name.

20. The method of claim 11 , wherein the data object comprises at least one of a data file, a data block and a real time data stream.

Assignments (8)
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 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Aug 20, 2013
From: SILICON VALLEY BANK
To: CLEVERSAFE, INC.
Reel/Frame 031058/0255 →
FIRST AMENDMENT TO IPSA Recorded Dec 31, 2012
From: CLEVERSAFE, INC.
To: SILICON VALLEY BANK
Reel/Frame 029555/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2010
From: BAPTIST, ANDREW; DHUSE, GREG
To: CLEVERSAFE, INC.
Reel/Frame 024268/0178 →