IP Library Granted Patent US 9,734,014
Granted Patent B2
US 9,734,014 · App. 14/930,128 · Granted Aug 15, 2017

Virtual memory mapping in a dispersed storage network

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 9,734,014
App. No.
14/930,128
Granted
Aug 15, 2017
Kind
B2
Abstract

A method for generating virtual dispersed storage network (DSN) addresses includes dispersed storage error encoding a data segment of a data object to produce a set of encoded data slices of a plurality of sets of encoded data slices of the pluralities of sets of encoded data slices. The method further includes generating, for each encoded data slice of the set of encoded data slices, a virtual DSN address having a slice name that includes a vault identifier, a slice index, a data object identifier, and a data segment identifier. The method further includes obtaining a mapping of a vault to a set of storage units of the DSN, wherein the mapping indicates how the set of encoded data slices are to be stored. The method further includes outputting the set of encoded data slices to the set of storage units in accordance with the mapping.

Claims (67)

1. A method for generating virtual dispersed storage network (DSN) addresses for pluralities of sets of encoded data slices in a DSN, the method comprises:

dispersed storage error encoding a data segment of a data object to produce a set of encoded data slices of a plurality of sets of encoded data slices of the pluralities of sets of encoded data slices;

generating, for each encoded data slice of the set of encoded data slices, a virtual DSN address having a slice name that includes a vault identifier, a slice index, a data object identifier, and a data segment identifier thereby producing a set of DSN addresses for the set of encoded data slices;

obtaining a mapping of a vault to a set of storage units of the DSN, wherein the vault is associated with the vault identifier and is a virtual memory space that is supported by the set of storage units and wherein the mapping indicates how the set of encoded data slices are to be stored by the set of storage units; and

outputting the set of encoded data slices to the set of storage units in accordance with the mapping for the set of storage units therein.

2. The method of claim 1 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on the slice index such that a first storage unit of the set of storage units stores encoded data slices of the pluralities of sets of encoded data slices having a first slice index, wherein, when the set of encoded data slices includes “N” encoded data slices, each encoded data slice of the set of encoded data slices has a unique slice index in a range of 1 to N.

3. The method of claim 1 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data object identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data object identifier are stored in a first virtual DSN address range of the virtual DSN address space.

4. The method of claim 1 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data segment identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data segment identifier are stored in a first virtual DSN address range of the virtual DSN address space.

5. The method of claim 1 further comprises:

generating, for each encoded data slice of the set of encoded data slices, the virtual DSN address having the slice name to further include a generation identifier; and

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the generation identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first generation identifier are stored in a first virtual DSN address range of the virtual DSN address space.

6. The method of claim 1 further comprises:

dispersed storage error encoding a first data segment of another data object to produce another set of encoded data slices of another plurality of sets of encoded data slices of the pluralities of sets of encoded data slices;

generating, for each encoded data slice of the other set of encoded data slices, a second virtual DSN address having a second slice name that includes a second vault identifier, the slice index, the data object identifier, and the data segment identifier thereby producing a second set of DSN addresses for the set of encoded data slices;

obtaining a second mapping of a second vault to the set of storage units of the DSN, wherein the second vault is associated with the second vault identifier and is a second virtual memory space that is supported by the set of storage units and wherein the second mapping indicates how the other set of encoded data slices are to be stored by the set of storage units; and

outputting the other set of encoded data slices to the set of storage units in accordance with the second mapping for storage therein.

7. A non-transitory computer readable storage device comprises:

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

dispersed storage error encode a data segment of a data object to produce a set of encoded data slices of a plurality of sets of encoded data slices of pluralities of sets of encoded data slices;

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

generate, for each encoded data slice of the set of encoded data slices, a virtual dispersed storage network (DSN) address having a slice name that includes a vault identifier, a slice index, a data object identifier, and a data segment identifier thereby producing a set of DSN addresses for the set of encoded data slices; and

obtain a mapping of a vault to a set of storage units of the DSN, wherein the vault is associated with the vault identifier and is a virtual memory space that is supported by the set of storage units and wherein the mapping indicates how the set of encoded data slices are to be stored by the set of storage units; and

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

output the set of encoded data slices to the set of storage units in accordance with the mapping for the set of storage units therein.

8. The non-transitory computer readable storage device of claim 7 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on the slice index such that a first storage unit of the set of storage units stores encoded data slices of the pluralities of sets of encoded data slices having a first slice index, wherein, when the set of encoded data slices includes “N” encoded data slices, each encoded data slice of the set of encoded data slices has a unique slice index in a range of 1 to N.

9. The non-transitory computer readable storage device of claim 7 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data object identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data object identifier are stored in a first virtual DSN address range of the virtual DSN address space.

10. The non-transitory computer readable storage device of claim 7 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data segment identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data segment identifier are stored in a first virtual DSN address range of the virtual DSN address space.

11. The non-transitory computer readable storage device of claim 7 further comprises:

the second storage section further storing operational instructions that, when executed by the computing device, causes the computing device to:

generate, for each encoded data slice of the set of encoded data slices, the virtual DSN address having the slice name to further include a generation identifier; and

the mapping including distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the generation identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first generation identifier are stored in a first virtual DSN address range of the virtual DSN address space.

12. The non-transitory computer readable storage device of claim 7 further comprises:

the first storage section further storing operational instructions that, when executed by the computing device, causes the computing device to:

dispersed storage error encode a first data segment of another data object to produce another set of encoded data slices of another plurality of sets of encoded data slices of the pluralities of sets of encoded data slices;

the second storage section further storing operational instructions that, when executed by the computing device, causes the computing device to:

generate, for each encoded data slice of the other set of encoded data slices, a second virtual DSN address having a second slice name that includes a second vault identifier, the slice index, the data object identifier, and the data segment identifier thereby producing a second set of DSN addresses for the set of encoded data slices;

obtain a second mapping of a second vault to the set of storage units of the DSN, wherein the second vault is associated with the second vault identifier and is a second virtual memory space that is supported by the set of storage units and wherein the second mapping indicates how the other set of encoded data slices are to be stored by the set of storage units; and

the third storage section further storing operational instructions that, when executed by the computing device, causes the computing device to:

output the other set of encoded data slices to the set of storage units in accordance with the second mapping for storage therein.

13. A computing device comprises:

an interface;

memory; and

a processing module operably coupled to the interface and to the memory, wherein the processing module is operable to:

dispersed storage error encode a data segment of a data object to produce a set of encoded data slices of a plurality of sets of encoded data slices of pluralities of sets of encoded data slices;

generate, for each encoded data slice of the set of encoded data slices, a virtual dispersed storage network (DSN) address having a slice name that includes a vault identifier, a slice index, a data object identifier, and a data segment identifier thereby producing a set of DSN addresses for the set of encoded data slices;

obtain a mapping of a vault to a set of storage units of the DSN, wherein the vault is associated with the vault identifier and is a virtual memory space that is supported by the set of storage units and wherein the mapping indicates how the set of encoded data slices are to be stored by the set of storage units; and

output, via the interface, the set of encoded data slices to the set of storage units in accordance with the mapping for the set of storage units therein.

14. The computing device of claim 13 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on the slice index such that a first storage unit of the set of storage units stores encoded data slices of the pluralities of sets of encoded data slices having a first slice index, wherein, when the set of encoded data slices includes “N” encoded data slices, each encoded data slice of the set of encoded data slices has a unique slice index in a range of 1 to N.

15. The computing device of claim 13 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data object identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data object identifier are stored in a first virtual DSN address range of the virtual DSN address space.

16. The computing device of claim 13 , wherein the mapping comprises:

distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the data segment identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first data segment identifier are stored in a first virtual DSN address range of the virtual DSN address space.

17. The computing device of claim 13 further comprises:

the processing module is further operable to generate, for each encoded data slice of the set of encoded data slices, the virtual DSN address having the slice name to further include a generation identifier; and

the mapping including distributing the set of encoded data slices to the set of storage units based on virtual DSN boundaries that partition a virtual DSN address space of the vault in accordance with the generation identifier, such that encoded data slices of the pluralities of sets of encoded data slices having a first generation identifier are stored in a first virtual DSN address range of the virtual DSN address space.

18. The computing device of claim 13 , wherein the processing module is further operable to:

dispersed storage error encode a first data segment of another data object to produce another set of encoded data slices of another plurality of sets of encoded data slices of the pluralities of sets of encoded data slices;

generate, for each encoded data slice of the other set of encoded data slices, a second virtual DSN address having a second slice name that includes a second vault identifier, the slice index, the data object identifier, and the data segment identifier thereby producing a second set of DSN addresses for the set of encoded data slices;

obtain a second mapping of a second vault to the set of storage units of the DSN, wherein the second vault is associated with the second vault identifier and is a second virtual memory space that is supported by the set of storage units and wherein the second mapping indicates how the other set of encoded data slices are to be stored by the set of storage units; and

output, via the interface, the other set of encoded data slices to the set of storage units in accordance with the second mapping for storage therein.

Assignments (6)
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 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: DHUSE, GREG; BAPTIST, ANDREW
To: CLEVERSAFE, INC.
Reel/Frame 038267/0830 →