IP Library Granted Patent US 9,588,862
Granted Patent B2
US 9,588,862 · App. 13/909,337 · Granted Mar 7, 2017

Distributed object storage system

Inventors: Koen De Keyser (Sint-Denijs Westrem, BE); Frederik De Schrijver (Wenduine, BE); Bastiaan Stougie (Melle, BE)
Assignee: Amplidata NV
G06F11/30G06F11/1088G06F11/1662G06F11/2094G06F11/3034G06F11/3055
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,588,862
App. No.
13/909,337
Granted
Mar 7, 2017
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 (48)

1. A distributed object storage system, comprising:

a plurality of redundant storage elements operable to store and retrieve a plurality of data objects including a respective data object identifier, each of said plurality of data objects respectively being stored or retrieved in the form of a predetermined number of redundant sub blocks, said predetermined number corresponding to a predetermined multiple of a desired spreading width, wherein said desired spreading width equals the sum of: a minimal spreading requirement, corresponding to the minimal number of storage elements that must store said redundant sub blocks of said data object and are not allowed to fail, and a desired concurrent failure tolerance, corresponding to the number of storage elements that must store said redundant sub blocks of said data object and are allowed to fail concurrently;

each one of said redundant sub blocks including:

said data object identifier;

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

decoding data, such that said data object can be decoded from any combination of said redundant sub blocks of which the number corresponds to said predetermined multiple of said minimal spreading requirement;

a plurality of storage nodes each comprising a share of said plurality of redundant storage elements; and

at least one controller node operably connected to or comprised within said storage nodes when storing or retrieving each of said data objects, including:

an encoding module operable to disassemble said data object into said predetermined number of redundant sub blocks;

a spreading module operable to store said predetermined number of said redundant sub blocks on a number of said storage elements larger than or equal to said desired spreading width;

a clustering module operable to retrieve at least said predetermined multiple of said minimal spreading requirement of said redundant sub blocks from a plurality of said storage elements; and

a decoding module operable to assemble said data object from any combination of said redundant sub blocks of which the number corresponds to said predetermined multiple of said minimal spreading requirement;

at least one monitoring agent operably connected to said storage elements when monitoring said plurality of data objects, and operable to aggregate a repair task list comprising a plurality of repair tasks associated with a corresponding plurality of repair data object identifiers of corresponding repair data objects, which are data objects that are not correctly stored in said distributed object storage system; and

at least one maintenance agent operably connected to said storage nodes when executing said plurality of repair tasks from said repair task list and operable to execute said repair task by:

instructing said clustering module to retrieve said predetermined number of sub blocks comprising said repair data object identifier, said clustering module subsequently retrieving a number of collected sub blocks equal to or greater than said predetermined multiple of said minimal spreading requirement;

determining a number of missing sub blocks which corresponds to the number of sub blocks said clustering module is not able to collect;

instructing said decoding module to assemble said repair data object from said number of collected sub blocks;

instructing said encoding module to disassemble said repair data object into a specific number of repair sub blocks, this specific number being equal to or greater than said number of missing sub blocks and less then said predetermined number of sub blocks; and

instructing said spreading module to store said number of repair sub blocks, said spreading module subsequently storing said number of repair sub blocks, such that the collection of said repair sub blocks and said collected sub blocks are stored on a number of said storage elements that is larger than or equal to said desired spreading width;

wherein said monitoring agent is configured to determine the actual concurrent failure tolerance of said repair data object, said actual concurrent failure tolerance corresponding to the number of storage elements that actually store sub blocks of said repair data object and are allowed to fail concurrently.

2. The distributed object storage system according to claim 1 , wherein said monitoring agent is operable to aggregate repair tasks in said repair task list only if the actual concurrent failure tolerance of the corresponding repair data object is smaller than or equal to a first predetermined threshold.

3. The distributed object storage system according to claim 2 , wherein said monitoring agent is further operable to:

aggregate an actual concurrent failure tolerance list comprising the count of repair data objects for each instance of said actual concurrent failure tolerance; and

determine the first predetermined threshold as a function of at least the lowest actual concurrent failure tolerance for which the corresponding count of repair data objects is larger than zero.

4. The distributed object storage system according to claim 1 , wherein said maintenance agent is further operable, when executing said plurality of repair tasks from said repair task list, to execute first said repair tasks of which said actual concurrent failure tolerance of the corresponding repair data object is the lowest.

5. The distributed object storage system according to claim 1 , wherein said monitoring agent is further configured to determine the difference between said actual concurrent failure tolerance and said desired concurrent failure tolerance of said corresponding repair data object.

6. The distributed object storage system according to claim 1 wherein said monitoring agent is operable to aggregate repair tasks in said repair task list only if the difference of the corresponding repair data object is larger than or equal to a second predetermined threshold.

7. The distributed object storage system according to claim 6 , wherein said monitoring agent is further operable to:

aggregate an actual concurrent failure tolerance list including the count of repair data objects for each instance of said difference; and

determine the second predetermined threshold as a function of at least the highest difference for which the corresponding count of repair data objects is larger than zero.

8. The distributed object storage system according to claim 1 , wherein said maintenance agent is further operable, when executing said plurality of repair tasks from said repair task list, to execute first said repair tasks of which said difference between said actual concurrent failure tolerance and said desired concurrent failure tolerance of the corresponding repair data object is the highest.

9. A distributed object storage system according to claim 1 , wherein said specific number is equal to said number of missing sub blocks augmented by a safety margin.

10. A distributed object storage system according to claim 1 , further comprising a metadata storage, said encoding module and said spreading module adding metadata to said metadata storage during a storage or retrieval operation and wherein said metadata for said data object comprises:

said data object identifier;

a list of identifiers of the storage elements on which said predetermined number of redundant sub blocks of said data object are stored;

an identifier for the type of encoding that was used to disassemble said data object into said predetermined number of redundant sub blocks, said identifier comprising an identifier for the desired concurrent failure tolerance and the of said data object;

an identifier for the actual concurrent failure tolerance of said data object; and

an identifier for the difference between the actual concurrent failure tolerance and the desired concurrent failure tolerance of said data object.

11. A distributed object storage system according to claim 10 , wherein said monitoring agent is operable to monitor availability of said data object by:

checking the status of said storage elements;

storing the status of said storage elements in an infrastructure metadata storage comprising infrastructure metadata, said infrastructure metadata including:

an identifier of each said storage elements; and

the status of each said storage elements;

providing said repair data object if at least one of said redundant sub blocks is stored on a storage element that the infrastructure metadata indicates is unavailable;

wherein said monitoring agent is configured to determine the actual concurrent failure tolerance of said repair data object as a function of:

the number of the storage elements listed in the metadata for said corresponding repair data object which comprise infrastructure metadata comprising a status that indicates said storage element is unavailable; and

the desired concurrent failure tolerance as identified in the metadata for said corresponding repair data object by said identifier for the type of encoding.

12. A distributed object storage system according to claim 11 , wherein said monitoring agent is further configured to determine the difference between said desired concurrent failure tolerance as identified in the metadata and said actual concurrent failure tolerance of said corresponding repair data object as determined from said metadata and said infrastructure metadata.

Assignments (8)
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 →
RELEASE OF SECURITY INTEREST Recorded Oct 3, 2014
From: HUMMINGBIRD ARKIV NV; MIDDLEFIELD VENTURES INC.; ENDEAVOR II, LP; QUANTUM CORPORATION; SWISSCOM
To: AMPLIDATA NV
Reel/Frame 033879/0562 →
SECURITY AGREEMENT Recorded Sep 4, 2013
From: AMPLIDATA NV
To: HUMMINGBIRD ARKIV NV; MIDDLEFIELD VENTURES INC.; ENDEAVOR II, LP; QUANTUM CORPORATION; SWISSCOM
Reel/Frame 031156/0447 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2013
From: DE KEYSER, KOEN; DE SCHRIJVER, FREDERIK; STOUGIE, BASTIAAN
To: AMPLIDATA NV
Reel/Frame 030804/0133 →
Priority Claims (1)
EP 12170698 · Jun 4, 2012 · regional
Continuity (2)
Related Publication 20130275815A1 · Oct 17, 2013
Related Publication 20150370677A9 · Dec 24, 2015