IP Library Patent Application 18401819
Patent Application
App. No. 18/401,819

Selecting Storage Targets in a Distributed Storage System

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 None
App. No.
18/401,819
Abstract

A method for execution in a storage network begins by receiving a request to store a data object in a plurality of storage units and continues by determining preferred storage requirements for storing the data object. The method then continues by determining minimum storage requirements for storing the data object, determining a first set of operational parameters for storing the data object and identifying a first set of storage units for storing the data object. The method continues by determining storage metrics for the first set of storage units and determining whether the storage metrics for the first set of storage units compare favorably to the preferred storage requirements, When the first set of storage units do not compare favorably to the preferred storage requirements the method continues by determining a second set of operational parameters and a second set of storage units for storing the data object and by determining whether the storage metrics for the second set of storage units compare favorably to the minimum storage requirements. When the storage metrics for the second set of storage units compare favorably to the minimum storage requirements the method continues by segmenting the data object into a plurality data segments and dispersed error encoding a segment to produce a set of encoded data slices, where a decode threshold number of encoded data slices are needed to recover the data segment. Finally, the method includes storing the set of encoded data slices among the second set of storage units.

Claims (141)

1 . A method for execution by one or more processing modules of one or more computing devices of a storage network, the method comprises:

receiving a request to store a data object in the storage network, wherein the storage network includes a plurality of storage units;

determining preferred storage requirements for storing the data object;

determining minimum storage requirements for storing the data object;

determining a first set of operational parameters for storing the data object;

identifying a first set of storage units of the plurality of storage units for storing the data object;

determining storage metrics for the first set of storage units;

determining whether the storage metrics for the first set of storage units compare favorably to the preferred storage requirements;

in response to a determination that the storage metrics for the first set of storage units do not compare favorably to the preferred storage requirements, determining a second set of operational parameters and a second set of storage units of the plurality of storage units for storing the data object;

determining whether the storage metrics for the second set of storage units compare favorably to the minimum storage requirements;

in response to a determination that the storage metrics for the second set of storage units compare favorably to the minimum storage requirements, segmenting the data object into a plurality data segments, dispersed error encoding a segment of the plurality data segments to produce a set of encoded data slices, wherein a decode threshold number of encoded data slices are needed to recover the data segment; and

distributedly storing the set of encoded data slices among the second set of storage units.

2 . The method of claim 1 , wherein the first set of operational parameters comprise at least one of:

an error coding algorithm;

a number of slices per segment for a vault;

a read threshold T;

a write threshold;

an encryption algorithm;

a slicing parameter;

a compression algorithm;

an integrity check method;

caching settings; and

parallelism settings.

3 . The method of claim 1 , wherein the identifying a first set of storage units of the plurality of storage units for storing the data object comprises:

accessing a directory to identify storage units associated with the storage network.

4 . The method of claim 3 further comprises:

updating the directory to include an identity of each storage unit of the first set of storage units and an identity of the set of encoded data slices.

5 . The method of claim 4 , wherein the updating the directory comprises:

creating a file name associated with the set of encoded data slices;

linking the file name to one or more intermediate file directory folders;

linking the one or more intermediate file directory folders to a root directory folder;

linking the file name to slice names of the set of encoded data slices; and

linking the slice names to storage unit identifiers of the first set of storage units.

6 . The method of claim 5 further comprises:

creating at least one intermediate file directory folder.

7 . The method of claim 1 , further comprising:

receiving historical metadata for at least some of the plurality of storage units, wherein the historical metadata includes at least one of,

a history of uptime;

a storage bandwidth;

a retrieval bandwidth;

a storage latency;

a retrieval latency;

a memory capacity;

an available memory;

a storage cost;

a rebuild time;

a location; and

one or more security factors.

8 . The method of claim 1 , further comprising:

determining a desired dispersed error coding performance level for the first set of storage units, wherein the desired dispersed error coding performance level comprises at least one of:

an indication of dispersed error coding storage requirements;

an indication of historical dispersed error coding storage performance;

an indication of available storage;

an indication of processing capabilities;

an indication of latency performance; and

an indication of bandwidth performance.

9 . The method of claim 1 , wherein the data object comprises at least one of:

a user identification field;

an object name field; and

a data field.

10 . The method of claim 1 , further comprises receiving at least one of:

a process identifier;

metadata;

a file system directory;

a block number;

a transaction message;

a user device identity;

a data object identifier;

a source name;

and user information.

11 . A storage processing unit of a storage network, the storage processing unit 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 a request to store a data object in the storage unit, wherein the storage unit includes a plurality of storage units;

determine preferred storage requirements for storing the data object;

determine minimum storage requirements for storing the data object;

determine a first set of operational parameters for storing the data object;

identify a first set of storage units of the plurality of storage units for storing the data object;

determine storage metrics for the first set of storage units;

determine whether the storage metrics for the first set of storage units compare favorably to the preferred storage requirements;

in response to a determination that the storage metrics for the first set of storage units do not compare favorably to the preferred storage requirements, determine a second set of operational parameters and a second set of storage units of the plurality of storage units for storing the data object;

determine whether the storage metrics for the second set of storage units compare favorably to the minimum storage requirements;

in response to a determination that the storage metrics for the second set of storage units compare favorably to the minimum storage requirements, segment the data object into a plurality data segments, dispersed error encoding a segment of the plurality data segments to produce a set of encoded data slices, wherein a decode threshold number of encoded data slices are needed to recover the data segment; and

distributedly store the set of encoded data slices among the second set of storage units.

12 . The storage processing unit of claim 11 , wherein the operational parameters comprise at least one of:

an error coding algorithm;

a number of slices per segment for a vault;

a read threshold T;

a write threshold;

an encryption algorithm;

a slicing parameter;

a compression algorithm;

an integrity check method;

caching settings; and

parallelism settings.

13 . The storage processing unit of claim 11 , wherein the first set of storage units of the plurality of storage units for storing the data object are identified by accessing a directory to identify storage units associated with the storage network.

14 . The storage processing unit of claim 13 , wherein the processing module further functions to:

update the directory to include an identity of each storage unit of the first set of storage units and an identity of the set of encoded data slices.

15 . The storage processing unit of claim 14 , wherein the directory is updated by:

creating a file name associated with the set of encoded data slices, linking the file name to one or more intermediate file directory folders;

linking the one or more intermediate file directory folders to a root directory folder;

linking the file name to slice names of the set of encoded data slices; and

linking the slice names to storage unit identifiers of the first set of storage units.

16 . The storage processing unit of claim 15 , wherein the directory is further updated by:

creating at least one intermediate file directory folder.

17 . The storage processing unit of claim 11 , wherein the processing module functions to:

receive historical metadata for at least some of the plurality of storage units, wherein the historical metadata includes at least one of,

a history of uptime;

a storage bandwidth;

a retrieval bandwidth;

a storage latency;

a retrieval latency;

a memory capacity;

an available memory;

a storage cost;

a rebuild time;

a location; and

one or more security factors.

18 . The storage processing unit of claim 11 , wherein the processing module functions to:

determine a desired dispersed error coding performance level for the first set of storage units, wherein the desired dispersed error coding performance level comprises at least one of:

an indication of dispersed error coding storage requirements;

an indication of historical dispersed error coding storage performance;

an indication of available storage;

an indication of processing capabilities;

an indication of latency performance; and

an indication of bandwidth performance.

19 . The storage processing unit of claim 11 , wherein the data object comprises at least one of:

a user identification field;

an object name field; and

a data field.

20 . The storage processing unit of claim 11 , wherein the processing module functions to receive at least one of:

a process identifier;

metadata;

a file system directory;

a block number;

a transaction message;

a user device identity;

a data object identifier;

a source name;

and user information.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2024
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 066358/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2024
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 066353/0279 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2024
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 066109/0952 →