IP Library Granted Patent US 10,230,692
Granted Patent B2
US 10,230,692 · App. 12/775,299 · Granted Mar 12, 2019

Distributed storage processing module

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,230,692
App. No.
12/775,299
Granted
Mar 12, 2019
Kind
B2
Abstract

A dispersed storage (DS) processing module may include a gateway module operable to communicate data and/or corresponding information with a user device and may include an access module operable to segment outbound data of the data into one or more outbound data segments and aggregate one or more inbound data segments into inbound data of the data. The DS processing module may include a grid module operable to encode an outbound data segment of the one or more outbound data segments into a plurality of outbound encoded data slices and decode a plurality of inbound encoded data slices into an inbound data segment of the one or more inbound data segments. The DS processing module may include a storage module operable to output the plurality of outbound encoded data slices to a plurality of DS storage units and receive the plurality of inbound encoded data slices from the plurality of DS storage units.

Claims (107)

1. A dispersed storage (DS) processing module comprises:

a gateway module operable to:

receive an incoming data object, wherein the incoming data object includes identifying information;

verify the incoming data object based on the identifying information;

when the incoming data object has been verified:

receive user information associated with the incoming data object; and

assign a source name to the incoming data object based on the user information,

wherein the source name includes a file identifier and a vault identifier; and

when the incoming data object has not been verified:

reject the incoming data object; and

notify a sender that the incoming data object has not been verified;

an access module operable to:

segment outbound data of the incoming data object into Y number of outbound data segments in accordance with a data storage protocol; and

aggregate one or more inbound data segments into inbound data in accordance with the data storage protocol;

a grid module operable to:

encode the Y number of outbound data segments into a plurality of sets of outbound encoded data slices in accordance with an error coding dispersal storage function wherein each corresponding one of the outbound data segments is encoded via the error coding dispersal storage function into one of the plurality of sets of outbound encoded data slices containing n encoded data slices that require a threshold number k outbound encoded data slices for complete decoding of the corresponding one of the outbound data segments, and wherein k is less than n;

generate a plurality of sets of slice names for the plurality of sets of outbound encoded data slices, wherein a slice name of the plurality of sets of slice names includes the source name, a segment number, and a slice number of an outbound encoded data slice of the plurality of sets of outbound encoded data slices, and wherein the slice name is used as a dispersed storage network (DSN) address for the outbound encoded data slice; and

decode a plurality of inbound encoded data slices into the one or more inbound data segments in accordance with the error coding dispersal storage function; and

a storage module operable to:

output the plurality of sets of outbound encoded data slices based on the plurality of sets of slice names to a plurality of DS storage units for storage therein, wherein a first encoded data slice of each of a first and second set of encoded data slices is stored in a first DS storage unit of the plurality of DS storage units; and

receive the plurality of inbound encoded data slices from the plurality of DS storage units.

2. The DS processing module of claim 1 , wherein the data storage protocol comprises at least one of:

a file storage system;

a block storage system; and

an aggregated block storage system.

3. The DS processing module of claim 1 , wherein the identifying information comprises at least one of:

metadata;

a file system directory;

a block number;

a transaction message;

a user device identity (ID); and

a data object identifier.

4. The DS processing module of claim 3 further comprises:

the access module further operable to:

segment the identifying information into outbound information segments in accordance with the data storage protocol; and

aggregate one or more inbound information segments into inbound identifying information in accordance with the data storage protocol;

the grid module further operable to:

encode the outbound information segments into a plurality of outbound encoded information slices in accordance with the error coding dispersal storage function; and

decode a plurality of inbound encoded information slices into the one or more inbound information segments in accordance with the error coding dispersal storage function; and

the storage module further operable to:

output the plurality of outbound encoded information slices to the plurality of DS storage units corresponding to a pillar of stored slices; and

receive the plurality of inbound encoded information slices from the plurality of DS storage units.

5. The DS processing module of claim 1 further comprises:

the gateway module operable to communicate second data and second identifying information with a user device, wherein at least a portion of the second identifying information is substantially identical to at least a portion of the identifying information;

the access module operable to:

segment outbound second data into one or more outbound second data segments in accordance with the data storage protocol; and

aggregate one or more inbound second data segments into inbound second data in accordance with the data storage protocol;

the grid module operable to:

encode the one or more outbound second data segments into a plurality of outbound encoded second data slices in accordance with the error coding dispersal storage function; and

decode a plurality of inbound encoded second data slices into the one or more inbound second data segments in accordance with the error coding dispersal storage function; and

the storage module operable to:

output the plurality of outbound encoded second data slices to the plurality of DS storage units; and

receive the plurality of inbound encoded second data slices from the plurality of DS storage units.

6. A dispersed storage (DS) processing module comprises:

a gateway module operable to:

receive an incoming data object, wherein the incoming data object includes identifying information;

verify the incoming data object based on the identifying information;

when the incoming data object has been verified, receive user information associated with the incoming data object; and

assign a source name to the incoming data object based on the user information, wherein the source name includes a file identifier and a vault identifier; and

an access module operable to:

segment the incoming data object into Y number of outbound data segments in accordance with a data storage protocol; and

aggregate one or more inbound data segments into inbound data in accordance with the data storage protocol

a grid module operable to:

encode the Y number of outbound data segments into a plurality of sets of outbound encoded data slices in accordance with an error coding dispersal storage function, wherein each corresponding one of the outbound data segments is encoded via the error coding dispersal storage function into one of the plurality of sets of outbound encoded data slices containing n encoded data slices that require a threshold number k outbound encoded data slices for complete decoding of the corresponding one of the outbound data segments, and wherein k is less than n;

generate a plurality of sets of slice names for the plurality of sets of outbound encoded data slices, wherein a slice name of the plurality of sets of slice names includes the source name, a segment number, and a slice number of an outbound encoded data slice of the plurality of sets of outbound encoded data slices, and wherein the slice name is used as a dispersed storage network (DSN) address for the outbound encoded data slice; and

decode a plurality of inbound encoded data slices received from a plurality of DS storage units into the one or more inbound data segments in accordance with the error coding dispersal storage function.

7. The DS processing module of claim 6 , wherein the data storage protocol comprises at least one of:

a file storage system;

a block storage system; and

an aggregated block storage system.

8. The DS processing module of claim 6 , wherein the identifying information comprises at least one of:

a process identifier (ID);

metadata;

a file system directory;

a block number;

a transaction message;

a user device identity (ID); and

a data object identifier.

9. The DS processing module of claim 6 further comprises:

the gateway module operable to communicate second data and second identifying information, wherein at least a portion of the second identifying information is substantially identical to at least a portion of the identifying information; and

the access module operable to:

segment outbound second data into one or more outbound second data segments in accordance with the data storage protocol; and

aggregate one or more inbound second data segments into inbound second data in accordance with the data storage protocol.

10. A computer readable memory device comprises:

a first storage module that stores operational instructions that, when executed by a computing device, causes the computing device to:

receive an incoming data object, wherein the incoming data object includes identifying information;

verify the incoming data object based on the identifying information;

when the incoming data object has been verified:

receive user information associated with the incoming data object; and

assign a source name to the incoming data object based on the user information; and

when the incoming data object has not been verified:

reject the incoming data object; and

notify a sender that the incoming data object has not been verified;

a second storage module that stores operational instructions that, when executed by the computing device, causes the computing device to:

encode Y number of outbound data segments generated from the data object into a plurality of sets of outbound encoded data slices in accordance with an error coding dispersal storage function, wherein each corresponding one of the outbound data segments is encoded via the error coding dispersal storage function into one of the plurality of sets of outbound encoded data slices containing n encoded data slices that require a threshold number k outbound encoded data slices for complete decoding of the corresponding one of the outbound data segments, and wherein k is less than n; generate a plurality of sets of slice names for the plurality of sets of outbound encoded data slices, wherein a slice name of the plurality of sets of slice names includes the source name, a segment number, and a slice number of an outbound encoded data slice of the plurality of sets of outbound encoded data slices, and wherein the slice name is used as a dispersed storage network (DSN) address for the outbound encoded data slice; and

decode a plurality of inbound encoded data slices into one or more inbound data segments in accordance with the error coding dispersal storage function; and

a third storage module that stores operational instructions that, when executed by the computing device, causes the computing device to:

output the plurality of sets of outbound encoded data slices based on the plurality of slice names to a plurality of DS storage units for storage therein, wherein a first encoded data slice of each of a first and second set of encoded data slices is stored in a first DS storage unit of the plurality of DS storage units; and

receive the plurality of inbound encoded data slices from the plurality of DS storage units.

11. The computer readable memory device of claim 10 further comprises:

a fourth storage module that stores operational instructions that, when executed by the computing device, causes the computing device to segment incoming data object into Y number of outbound data segments.

12. The DS processing module of claim 1 , wherein the data object is a data file.

13. The DS processing module of claim 1 , wherein the data object is a data block.

14. The DS processing module of claim 1 , wherein the data object is an aggregate block of data blocks.

15. The DS processing module of claim 6 , wherein the data object is a data file.

16. The DS processing module of claim 6 , wherein the data object is a data block.

17. The DS processing module of claim 6 , wherein the data object is an aggregate block of data blocks.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 20, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 050451/0549 →
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 May 6, 2010
From: QUIGLEY, JOHN; DHUSE, GREG
To: CLEVERSAFE, INC.
Reel/Frame 024348/0843 →