IP Library Granted Patent US 8,874,868
Granted Patent B2
US 8,874,868 · App. 13/097,338 · Granted Oct 28, 2014

Memory utilization balancing 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 8,874,868
App. No.
13/097,338
Granted
Oct 28, 2014
Kind
B2
Abstract

A method begins by a processing module identifying a memory loading mismatch between a first memory device and a second memory device of a dispersed storage unit, wherein the first memory device is assigned a first range of slice names and the second memory device is assigned a second range of slice names. The method continues with the processing module determining an estimated impact to reduce the memory loading mismatch and when the estimated impact compares favorably to an impact threshold, modifying the first and second ranges of slices names to produce a first modified range of slice names for the first memory device and a second modified range of slice names for the second memory device based on the memory loading mismatch and transferring one or more encoded data slices between the first and second memory devices in accordance with the first and second modified ranges of slice names.

Claims (79)

1. A method comprises:

establishing, by a processing module of a dispersed storage unit, an address based memory balancing scheme that is based on allocating a set of unique address ranges to a set of memory devices of the dispersed storage unit, wherein a respective unique address range is allocated to a respective memory device of the set of memory devices, in which the respective unique address range corresponds to a slice name range, and wherein the slice name range pertains to slice names of a plurality of data slices that are created when encoding a plurality of data segments, in which for a respective data segment, n data slices are generated in accordance with an error coding function, and in which at least a threshold number k of the n data slices are needed to reconstruct the respective data segment, where k is less than n;

storing, in a first memory device of the set of memory devices, encoded data slices having slice name range in accordance with a first unique address range;

storing, in a second memory device of the set of memory devices, encoded data slices having slice name range in accordance with a second unique address range;

identifying a memory loading mismatch between the first memory device and the second memory device, wherein the memory loading mismatch occurs when more storage space is utilized in the first memory device than utilized in the second memory device for storing the encoded data slices;

determining an estimated impact to reduce the memory loading mismatch; and

when the estimated impact compares favorably to an impact threshold, modifying the first and second sets of unique address ranges based on the memory loading mismatch, by reducing the first unique address range corresponding to the first memory device and expanding the second unique address range corresponding to the second memory device, such that storage space utilization of the first and second memory devices is approximately balanced for the first and second unique address ranges.

2. The method of claim 1 , wherein the modifying the first and second sets of unique address ranges comprises:

de-assigning the first and second sets of unique address ranges from the first and second memory devices to create an unassigned range of slice names; and

partitioning the unassigned range of slices names to obtain the approximate balance of storage space utilization for the first and second memory devices.

3. The method of claim 1 , wherein the identifying the memory loading mismatch comprises at least one of:

determining a utilized amount of storage for the first and second memory devices;

determining an unutilized amount of storage for the first and second memory devices;

determining a utilization percentage of storage capacity for the first and second memory devices;

determining an unutilized percentage of storage capacity for the first and second memory devices; and

determining a storage balancing factor for a group of encoded data slices associated with at least one of a priority indicator, a security indicator, a performance indicator, a user identifier, and a vault identifier.

4. The method of claim 1 , wherein the determining the estimated impact comprises at least one of:

determining a financial impact based on one or more of:

a cost level; and

a revenue gain or loss level;

determining a processing resource impact based on one or more of:

a memory capacity extension time period;

a balancing execution time period;

a performance level;

a wide area network bandwidth utilization level to execute load balancing; and

a local area network bandwidth utilization level to execute the load balancing;

determining an accessibility impact based on one or more of:

a wide area network bandwidth availability level;

a local area network bandwidth availability level;

a memory unavailability time period; and

balancing execution time; and

determining a user impact based on one or more of:

a security level;

a priority level;

an associated user identifier (ID); and

an associated vault ID.

5. The method of claim 1 further comprises:

transferring one or more encoded data slices from the first memory device to the second memory device in accordance with the modifying of the first and second sets of unique address ranges.

6. A computer comprises:

an interface;

a set of memory devices; and

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

establish an address based memory balancing scheme that is based on allocating a set of unique address ranges to the set of memory devices, wherein a respective unique address range is allocated to a respective memory device of the set of memory devices, in which the respective unique address range corresponds to a slice name range, and wherein the slice name range pertains to slice names of a plurality of data slices that are created when encoding a plurality of data segments, in which for a respective data segment, n data slices are generated in accordance with an error coding function, and in which at least a threshold number k of the n data slices are needed to reconstruct the respective data segment, where k is less than n;

store, in a first memory device of the set of memory devices, encoded data slices having slice name range in accordance with a first unique address range;

store, in a second memory device of the set of memory devices, encoded data slices having slice name range in accordance with a second unique address range;

identify a memory loading mismatch between the first memory device and the second memory device, wherein the memory loading mismatch occurs when more storage space is utilized in the first memory device than utilized in the second memory device for storing the encoded data slices;

determine an estimated impact to reduce the memory loading mismatch; and

when the estimated impact compares favorably to an impact threshold, modify the first and second sets of unique address ranges based on the memory loading mismatch, by reducing the first unique address range corresponding to the first memory device and expanding the second unique address range corresponding to the second memory device, such that storage space utilization of the first and second memory devices is approximately balanced for the first and second unique address ranges.

7. The computer of claim 6 , wherein the processing module functions to modify the first and second sets of unique address ranges by:

de-assigning the first and second sets of unique address ranges from the first and second memory devices to create an unassigned range of slice names; and

partitioning the unassigned range of slices names to obtain the approximate balance of storage space utilization for the first and second memory devices.

8. The computer of claim 6 , wherein the processing module functions to identify the memory loading mismatch by at least one of:

determining a utilized amount of storage for the first and second memory devices;

determining an unutilized amount of storage for the first and second memory devices;

determining a utilization percentage of storage capacity for the first and second memory devices;

determining an unutilized percentage of storage capacity for the first and second memory devices; and

determining a storage balancing factor for a group of encoded data slices associated with at least one of a priority indicator, a security indicator, a performance indicator, a user identifier, and a vault identifier.

9. The computer of claim 6 , wherein the processing module functions to determine the estimated impact by at least one of:

determining a financial impact based on one or more of:

a cost level; and

a revenue gain or loss level;

determining a processing resource impact based on one or more of:

a memory capacity extension time period;

a balancing execution time period;

a performance level;

a wide area network bandwidth utilization level to execute load balancing; and

a local area network bandwidth utilization level to execute the load balancing;

determining an accessibility impact based on one or more of:

a wide area network bandwidth availability level;

a local area network bandwidth availability level;

a memory unavailability time period; and

balancing execution time; and

determining a user impact based on one or more of:

a security level;

a priority level;

an associated user identifier (ID); and

an associated vault ID.

10. The computer of claim 6 , wherein the processing module further functions to:

transfer one or more encoded data slices from the first memory device to the second memory device in accordance with modifying the first and second sets of unique address ranges.

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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2011
From: BAPTIST, ANDREW; DHUSE, GREG
To: CLEVERSAFE, INC.
Reel/Frame 026208/0251 →