IP Library Granted Patent US 8,688,949
Granted Patent B2
US 8,688,949 · App. 13/343,405 · Granted Apr 1, 2014

Modifying data storage in response to detection of a memory system imbalance

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,688,949
App. No.
13/343,405
Granted
Apr 1, 2014
Kind
B2
Abstract

A method begins by a processing module determining an imbalance between inode memory utilization and data storage memory utilization. When the imbalance compares unfavorably to an imbalance threshold, the method continues with the processing module determining whether the inode memory utilization is out of balance with respect to the data storage memory utilization or whether the data storage memory utilization is out of balance with respect to the inode memory utilization. When the inode memory utilization is out of balance with respect to the data storage memory utilization, the method continues with the processing module transferring a set of data objects from a data object section to a data block section and transferring object mapping information of the set of data objects into block mapping information for the set of data objects.

Claims (62)

1. A method for execution by a dispersed storage (DS) unit, the method comprises:

determining an imbalance between inode memory utilization of an inode memory and data storage memory utilization of a data storage memory, wherein the data storage memory stores data objects in a data object section and stores data blocks in a data block section, and wherein the inode memory stores object mapping information that associates object directory information of the data objects with object storage location information of the data objects and stores block mapping information that associates block directory information of the data objects with block storage location information of the data blocks;

when the imbalance between the inode memory utilization and the data storage memory utilization compares unfavorably to an imbalance threshold, determining whether the inode memory utilization is out of balance with respect to the data storage memory utilization or whether the data storage memory utilization is out of balance with respect to the inode memory utilization; and

when the inode memory utilization is out of balance with respect to the data storage memory utilization:

transferring a set of data objects from the data object section to the data block section; and

transferring object mapping information of the set of data objects into block mapping information for the set of data objects.

2. The method of claim 1 , wherein the transferring the set of data objects comprises:

identifying one or more of the data objects that are associated with a common pillar number as the set of data objects;

determining an address offset value between data objects of the set of data objects based on the common pillar and size of the data objects of the set of data objects;

aggregating the set of data objects into an aggregated data block in accordance with the address offset value; and

storing the aggregated data block as the set of data objects in the data block section.

3. The method of claim 2 , wherein the transferring the object mapping information of the set of data objects comprises:

converting data object addresses of the set of data objects into a data block address based on the address offset value; and

replacing the data object addresses of the set of data objects with the data block address.

4. The method of claim 2 , wherein the determining the address offset value comprises:

obtaining different sizes for data objects of the set of data objects;

determining a maximum size from the difference sizes; and

generating the address offset value based on the maximum size.

5. The method of claim 1 further comprises:

when the data storage memory utilization is out of balance with respect to the inode memory utilization:

transferring a data block of the data blocks from the data block section to the data object section; and

transferring block mapping information of the data block into object mapping information for the data block.

6. The method of claim 5 , wherein the transferring the data block comprises:

dividing the data block into a set of transfer data objects;

generating data object addresses for the set of transfer data objects based on a data block address of the data block and a size of transfer data objects of the set of transfer data objects; and

storing the set of transfer data objects in the data object section.

7. The method of claim 6 , wherein the transferring the block mapping information of the set of data objects comprises:

converting a data block address of the data block into a set of data object addresses based on the address offset value and the data block address; and

replacing the data block address of the data block with the set of data object addresses.

8. The method of claim 1 , wherein a data object of the data objects comprises:

an encoded data slice, wherein a data segment is encoded into a plurality of encoded data slices in accordance with a dispersed storage error coding function, and wherein the encoded data slice is one of the plurality of encoded data slices.

9. A dispersed storage (DS) module comprises:

a first module operable to determine an imbalance between inode memory utilization of an inode memory and data storage memory utilization of a data storage memory, wherein the data storage memory stores data objects in a data object section and stores data blocks in a data block section, and wherein the inode memory stores object mapping information that associates object directory information of the data objects with object storage location information of the data objects and stores block mapping information that associates block directory information of the data objects with block storage location information of the data blocks;

when the imbalance between the inode memory utilization and the data storage memory utilization compares unfavorably to an imbalance threshold, a second module operable to determine whether the inode memory utilization is out of balance with respect to the data storage memory utilization or whether the data storage memory utilization is out of balance with respect to the inode memory utilization; and

when the inode memory utilization is out of balance with respect to the data storage memory utilization:

a third module operable to transfer a set of data objects from the data object section to the data block section; and

a fourth module operable to transfer object mapping information of the set of data objects into block mapping information for the set of data objects.

10. The DS module of claim 9 , wherein the third module is further operable to transfer the set of data objects by:

identifying one or more of the data objects that are associated with a common pillar number as the set of data objects;

determining an address offset value between data objects of the set of data objects based on the common pillar number and size of the data objects of the set of data objects;

aggregating the set of data objects into an aggregated data block in accordance with the address offset value; and

storing the aggregated data block as the set of data objects in the data block section.

11. The DS module of claim 10 , wherein the fourth module is further operable to transfer the object mapping information of the set of data objects by:

converting data object addresses of the set of data objects into a data block address based on the address offset value; and

replacing the data object addresses of the set of data objects with the data block address.

12. The DS module of claim 10 , wherein the third module is further operable to determine the address offset value by:

obtaining different sizes for data objects of the set of data objects;

determining a maximum size from the difference sizes; and

generating the address offset value based on the maximum size.

13. The DS module of claim 9 further comprises:

when the data storage memory utilization is out of balance with respect to the inode memory utilization:

a fifth module operable to transfer a data block of the data blocks from the data block section to the data object section; and

a sixth module operable to transfer block mapping information of the data block into object mapping information for the data block.

14. The DS module of claim 13 , wherein the fifth module is further operable to transfer the data block by:

dividing the data block into a set of transfer data objects;

generating data object addresses for the set of transfer data objects based on a data block address of the data block and a size of transfer data objects of the set of transfer data objects; and

storing the set of transfer data objects in the data object section.

15. The DS module of claim 14 , wherein the sixth module is further operable to transfer the block mapping information of the set of data objects by:

converting a data block address of the data block into a set of data object addresses based on the address offset value and the data block address; and

replacing the data block address of the data block with the set of data object addresses.

16. The DS module of claim 9 , wherein a data object of the data objects comprises:

an encoded data slice, wherein a data segment is encoded into a plurality of encoded data slices in accordance with a dispersed storage error coding function, and wherein the encoded data slice is one of the plurality of encoded data slices.

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 Jan 4, 2012
From: RESCH, JASON K.; GRUBE, GARY W.; GLADWIN, S. CHRISTOPHER
To: CLEVERSAFE, INC.
Reel/Frame 027479/0396 →