IP Library Granted Patent US 11,327,674
Granted Patent B2
US 11,327,674 · App. 15/819,810 · Granted May 10, 2022

Storage vault tiering and data migration in a distributed storage network

Inventors: Jason K. Resch (Chicago, IL); Wesley B. Leggette (Chicago, IL)
Assignee: Pure Storage, Inc.
G06F3/0647G06F3/061G06F3/067G06F3/0619G06F11/1076G06F16/119G06F16/1873G06F21/33G06F21/57G06F21/604H04L63/0823H04L63/101G06F3/0608G06F3/0611
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 11,327,674
App. No.
15/819,810
Granted
May 10, 2022
Kind
B2
Abstract

Methods for use in a dispersed storage network (DS) to determine appropriate resources for storing data. An example method, implemented by one or more devices of a dispersed storage network (DSN), includes obtaining storage characteristics relating to data stored in a first pool of storage units associated with a first storage tier, the data stored as a set of encoded data slices. Based on the storage characteristics, the method determines to move the data to a target storage pool of storage units associated with a second storage tier. The method also determines whether to re-encode the data for storage in the target storage pool of storage units. When not re-encoding the data, the method includes retrieving the set of encoded data slices, translating associated slice names into translated slice names, and facilitating storage of the encoded data slices in the target storage pool utilizing the translated slice names.

Claims (62)

1. A method for execution by a storage network, the method comprises:

obtaining first storage characteristics relating to data stored in a first pool of storage units, the data stored as a set of encoded data slices and the first pool of storage units associated with a first storage tier;

determining, based on the first storage characteristics, to move the data to a second storage tier;

determining second storage characteristics relating to a target storage pool of storage units associated with a second storage tier;

determining, based on the second storage characteristics, whether to re-encode the data for storage in the target storage pool of storage units;

in response to determining not to re-encode the data:

retrieving the set of encoded data slices;

translating slice identifiers of the set of encoded data slices to translated slice identifiers; and

generating a set of write requests, including the translated slice identifiers and the set of encoded data slices, for receipt by the target storage pool; and

in response to determining to re-encode the data for storage in the target storage pool of storage units:

retrieving at least a decode threshold number of encoded data slices of the set of encoded data slices;

decoding, using first dispersed storage error coding function parameters, the decode threshold number of encoded data slices to produce a data segment;

encoding, using second dispersed storage error coding function parameters, the data segment to produce a set of target slices;

generating target slice identifiers; and

generating a set of write requests, including the target slice identifiers and the set of target slices, for receipt by the target storage pool.

2. The method of claim 1 , wherein the decode threshold number of encoded data slices to produce a data segment differs between the first dispersed storage error coding function parameters and the second dispersed storage error coding function parameters.

3. The method of claim 1 , wherein the first storage characteristics include a delivered performance level associated with the first storage tier and a required performance level associated with the data, and wherein determining, based on the first storage characteristics, to move the data to a second storage tier includes indicating to move the data when the delivered performance level associated with the first storage tier compares unfavorably to the required performance level associated with the data.

4. The method of claim 3 , wherein selecting a target storage pool of storage units includes determining that a delivered performance level associated with the second storage tier compares favorably to the required performance level associated with the data.

5. The method of claim 4 , wherein the delivered performance level includes an access latency level.

6. The method of claim 1 , wherein determining to move the data to a second storage tier comprises detecting a change in a required performance level associated with the data.

7. The method of claim 6 , wherein detecting a change in a required performance level associated with the data is based on an estimated access frequency level relating to the data.

8. The method of claim 7 , wherein detecting a change in a required performance level associated with the data is based on detecting data access activity.

9. A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by one or more processing modules to cause the one or more processing modules to:

obtain first storage characteristics relating to data stored in a first pool of storage units, the data stored as a set of encoded data slices and the first pool of storage units associated with a first storage tier;

determine, based on the first storage characteristics, to move the data to a second storage tier;

determine second storage characteristics relating to a target storage pool of storage units associated with a second storage tier;

determine, based on the second storage characteristics, whether to re-encode the data for storage in the target storage pool of storage units;

in response to determining not to re-encode the data:

retrieve the set of encoded data slices;

translate slice identifiers of the set of encoded data slices to translated slice identifiers; and

generate a set of write requests, including the translated slice identifiers and the set of encoded data slices, for receipt by the target storage pool; and

in response to determining to re-encode the data for storage in the target storage pool of storage units:

retrieve at least a decode threshold number of encoded data slices of the set of encoded data slices;

decode, using first dispersed storage error coding function parameters, the decode threshold number of encoded data slices to produce a data segment;

encode, using second dispersed storage error coding function parameters, the data segment to produce a set of target slices;

generate target slice identifiers; and

generate a set of write requests, including the target slice identifiers and the set of target slices, for receipt by the target storage pool.

10. The computer program product of claim 9 , wherein the decode threshold number of encoded data slices to produce a data segment differs between the first dispersed storage error coding function parameters and the second dispersed storage error coding function parameters.

11. The computer program product of claim 9 , wherein the first storage characteristics include a delivered performance level associated with the first storage tier and a required performance level associated with the data, and wherein determining, based on the first storage characteristics, to move the data to a second storage tier includes indicating to move the data when the delivered performance level associated with the first storage tier compares unfavorably to the required performance level associated with the data.

12. The computer program product of claim 11 , wherein selecting a target storage pool of storage units includes determining that a delivered performance level associated with the second storage tier compares favorably to the required performance level associated with the data.

13. The computer program product of claim 9 , wherein determining to move the data to a second storage tier comprises detecting a change in a performance level associated with the data.

14. A computing device comprises:

a network interface;

memory comprising instructions; and

a processing module in communication with the memory, wherein the processing module executes the instructions to:

obtain first storage characteristics relating to data stored in a first pool of storage units, the data stored as a set of encoded data slices and the first pool of storage units associated with a first storage tier;

determine, based on the first storage characteristics, to move the data to a second storage tier;

determine second storage characteristics relating to a target storage pool of storage units associated with a second storage tier;

determine, based on the second storage characteristics, whether to re-encode the data for storage in the target storage pool of storage units;

in response to determining not to re-encode the data:

retrieve the set of encoded data slices;

translate slice identifiers of the set of encoded data slices to translated slice identifiers; and

generate a set of write requests, including the translated slice identifiers and the set of encoded data slices, for receipt by the target storage pool; and

in response to determining to re-encode the data for storage in the target storage pool of storage units:

retrieve at least a decode threshold number of encoded data slices of the set of encoded data slices;

decode, using first dispersed storage error coding function parameters, the decode threshold number of encoded data slices to produce a data segment;

encode, using second dispersed storage error coding function parameters, the data segment to produce a set of target slices;

generate target slice identifiers; and

generate a set of write requests, including the target slice identifiers and the set of target slices, for receipt by the target storage pool.

15. The computing device of claim 14 , wherein the decode threshold number of encoded data slices to produce a data segment differs between the first dispersed storage error coding function parameters and the second dispersed storage error coding function parameters.

16. The computing device of claim 14 , wherein the first storage characteristics include a delivered performance level associated with the first storage tier and a required performance level associated with the data, and wherein determining, based on the first storage characteristics, to move the data to a second storage tier includes indicating to move the data when the delivered performance level associated with the first storage tier compares unfavorably to the required performance level associated with the data.

17. The computing device of claim 16 , wherein selecting a target storage pool of storage units includes determining that a delivered performance level associated with the second storage tier compares favorably to the required performance level associated with the data.

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 Nov 22, 2017
From: RESCH, JASON K.; LEGGETTE, WESLEY B.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044198/0654 →
Continuity (3)
Continuation In Part 13869655 · Apr 24, 2013
Provisional Application 61655736 · Jun 5, 2012
Related Publication 20180095696A1 · Apr 5, 2018