IP Library Granted Patent US 10,379,953
Granted Patent B2
US 10,379,953 · App. 15/451,019 · Granted Aug 13, 2019

Distributed object storage system

Inventors: Koen De Keyser (Sint-Denijs Westrem, BE); Frederik De Schrijver (Wenduine, BE); Bastiaan Stougie (Melle, BE)
Assignee: Western Digital Technologies, Inc.
G06F11/1092G06F3/064G06F3/067G06F3/0619G06F3/0653G06F11/1088G06F11/1662G06F11/2094G06F11/30G06F11/3034G06F11/3055H03M13/154H03M13/6502
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 10,379,953
App. No.
15/451,019
Granted
Aug 13, 2019
Kind
B2
Abstract

A distributed object storage system has a monitoring agent and/or a maintenance agent configured to determine for each of a plurality of repair tasks the actual concurrent failure tolerance of a corresponding repair data object. The actual concurrent failure tolerance corresponds to the number of storage elements that store sub blocks of the repair data object and are allowed to fail concurrently.

Claims (70)

1. A distributed object storage system, comprising:

a plurality of storage elements configured to store and retrieve a data object, the data object stored as a first number of redundant sub blocks; and

a controller node coupled with the plurality of storage elements, the controller node including:

a processor;

a memory;

a maintenance agent stored in the memory and executable by the processor to execute a repair task;

a clustering module stored in the memory and executable by the processor to retrieve remaining redundant sub blocks of the data object and determine a number of missing redundant sub blocks of the data object;

a decoding module stored in the memory and executable by the processor to assemble a repair data object from the remaining redundant sub blocks of the data object;

an encoding module stored in the memory and executable by the processor to disassemble the repair data object into a second number of redundant sub blocks, the second number of redundant sub blocks being greater than or equal to the number of missing redundant sub blocks of the data object;

a spreading module stored in the memory and executable by the processor to store the second number of redundant sub blocks to the plurality of storage elements such that a sum of the second number of redundant sub blocks and a number of the remaining redundant sub blocks is greater than or equal to a desired spreading width for the data object; and

a monitoring agent stored in the memory and executable by the processor to:

determine an actual concurrent failure tolerance of the data object, wherein the actual concurrent failure tolerance corresponds to an actual number of storage elements that store the remaining redundant sub blocks of the data object and are allowed to fail concurrently;

determine a difference between the actual concurrent failure tolerance of the data object and a desired concurrent failure tolerance of the data object, wherein the desired concurrent failure tolerance corresponds to a maximum number of storage elements that store the first number of redundant sub blocks that are allowed to fail concurrently; and

generate the repair task in response to determining that the difference between the actual concurrent failure tolerance of the data object and the desired concurrent failure tolerance of the data object satisfies a first threshold.

2. The distributed object storage system of claim 1 , wherein:

the first number of redundant sub blocks corresponds to a predetermined multiple of the desired spreading width; and

the desired spreading width equals a sum of: a minimal spreading requirement, corresponding to a minimal number of storage elements that store the first number of redundant sub blocks that are not allowed to fail, and the desired concurrent failure tolerance.

3. The distributed object storage system of claim 2 , wherein a redundant sub block of the first number of redundant sub blocks comprises:

a data object identifier;

encoded data of a size of the data object divided by a factor equal to a predetermined multiple of the minimal spreading requirement; and

decoding data, such that the data object can be decoded from a subset of the first number of redundant sub blocks, wherein the subset includes any combination of a number of the first number of redundant sub blocks equal to the minimal spreading requirement.

4. The distributed object storage system of claim 1 , wherein the monitoring agent is further executable by the processor to generate the repair task in response to determining that the actual concurrent failure tolerance of the data object satisfies a second threshold.

5. The distributed object storage system of claim 4 , wherein the monitoring agent is further executable by the processor to:

aggregate a repair task list comprising a plurality of repair tasks associated with a corresponding plurality of data objects that are not correctly stored in the distributed object storage system; and

determine the second threshold as a function of the lowest actual concurrent failure tolerance of the plurality of data objects associated with the plurality of repair tasks.

6. A method, comprising:

identifying that a data object stored as a first number of redundant sub blocks on a plurality of storage elements in a distributed object storage system is not correctly stored in the distributed object storage system;

determining an actual concurrent failure tolerance of the data object, wherein the actual concurrent failure tolerance corresponds to an actual number of storage elements that store remaining redundant sub blocks of the data object and are allowed to fail concurrently;

determining a difference between the actual concurrent failure tolerance of the data object and a desired concurrent failure tolerance of the data object, wherein the desired concurrent failure tolerance corresponds to a maximum number of storage elements that store the first number of redundant sub blocks that are allowed to fail concurrently;

generating, in response to determining that the difference between the actual concurrent failure tolerance of the data object and the desired concurrent failure tolerance of the data object satisfies a first threshold, a repair task for the data object; and

executing the repair task, including:

retrieving remaining redundant sub blocks of the data object;

determining a number of missing redundant sub blocks of the data object;

assembling a repair data object from the remaining redundant sub blocks of the data object;

disassembling the repair data object into a second number of redundant sub blocks, the second number of redundant sub blocks being greater than or equal to the number of missing redundant sub blocks of the data object; and

storing the second number of redundant sub blocks to the plurality of storage elements such that a sum of the second number of redundant sub blocks and a number of the remaining redundant sub blocks is greater than or equal to a desired spreading width for the data object.

7. The method of claim 6 , wherein:

the first number of redundant sub blocks corresponds to a predetermined multiple of the desired spreading width; and

the desired spreading width equals a sum of: a minimal spreading requirement, corresponding to a minimal number of storage elements that store the first number of redundant sub blocks that are not allowed to fail, and the desired concurrent failure tolerance.

8. The method of claim 7 , wherein a redundant sub block of the first number of redundant sub blocks comprises:

a data object identifier;

encoded data of a size of the data object divided by a factor equal to a predetermined multiple of the minimal spreading requirement; and

decoding data, such that the data object can be decoded from a subset of the first number of redundant sub blocks, wherein the subset includes any combination of a number of the first number of redundant sub blocks equal to the minimal spreading requirement.

9. The method of claim 6 , further comprising generating the repair task in response to determining that the actual concurrent failure tolerance of the data object satisfies a second threshold.

10. The method of claim 9 , further comprising:

aggregating a repair task list comprising a plurality of repair tasks associated with a corresponding plurality of data objects that are not correctly stored in the distributed object storage system; and

determining the second threshold as a function of the lowest actual concurrent failure tolerance of the plurality of data objects associated with the plurality of repair tasks.

11. A distributed object storage system, comprising:

means for storing and retrieving a data object, the data object stored as a first number of redundant sub blocks;

a processor;

a memory;

means, stored in the memory and executable by the processor, for executing a repair task;

means, stored in the memory and executable by the processor, for retrieving remaining redundant sub blocks of the data object and determining a number of missing redundant sub blocks of the data object;

means, stored in the memory and executable by the processor, for assembling a repair data object from the remaining redundant sub blocks of the data object;

means, stored in the memory and executable by the processor, for disassembling the repair data object into a second number of redundant sub blocks, the second number of redundant sub blocks being greater than or equal to the number of missing redundant sub blocks of the data object;

means, stored in the memory and executable by the processor, for storing the second number of redundant sub blocks such that a sum of the second number of redundant sub blocks and a number of the remaining redundant sub blocks is greater than or equal to a desired spreading width for the data object;

means, stored in the memory and executable by the processor, for determining an actual concurrent failure tolerance of the data object, wherein the actual concurrent failure tolerance corresponds to an actual number of storage elements that store the remaining redundant sub blocks of the data object and are allowed to fail concurrently;

means, stored in the memory and executable by the processor, for determining a difference between the actual concurrent failure tolerance of the data object and a desired concurrent failure tolerance of the data object, wherein the desired concurrent failure tolerance corresponds to a maximum number of storage elements that store the first number of redundant sub blocks that are allowed to fail concurrently; and

means, stored in the memory and executable by the processor, for generating the repair task in response to determining that the difference between the actual concurrent failure tolerance of the data object and the desired concurrent failure tolerance of the data object satisfies a first threshold.

12. The distributed object storage system of claim 11 , wherein:

the first number of redundant sub blocks corresponds to a predetermined multiple of the desired spreading width; and

the desired spreading width equals a sum of: a minimal spreading requirement, corresponding to a minimal number of storage elements that store the first number of redundant sub blocks that are not allowed to fail, and the desired concurrent failure tolerance.

13. The distributed object storage system of claim 11 , further comprising means for generating the repair task in response to determining that the actual concurrent failure tolerance of the data object satisfies a second threshold.

14. The distributed object storage system of claim 13 , further comprising:

means for aggregating a repair task list comprising a plurality of repair tasks associated with a corresponding plurality of data objects that are not correctly stored in the distributed object storage system; and

means for determining the second threshold as a function of the lowest actual concurrent failure tolerance of the plurality of data objects associated with the plurality of repair tasks.

15. The distributed object storage system of claim 12 , wherein a redundant sub block of the first number of redundant sub blocks comprises:

a data object identifier;

encoded data of a size of the data object divided by a factor equal to a predetermined multiple of the minimal spreading requirement; and

decoding data, such that the data object can be decoded from a subset of the first number of redundant sub blocks, wherein the subset includes any combination of a number of the first number of redundant sub blocks equal to the minimal spreading requirement.

Assignments (6)
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2018
From: AMPLIDATA NV
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046739/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2017
From: DE KEYSER, KOEN; DE SCHRIJVER, FREDERIK; STOUGIE, BASTIAAN
To: AMPLIDATA N.V.
Reel/Frame 041478/0419 →
Priority Claims (1)
EP 12170698 · Jun 4, 2012 · regional
Continuity (2)
Continuation 13909337 · Jun 4, 2013
Related Publication 20170177440A1 · Jun 22, 2017