IP Library Granted Patent US 10,725,884
Granted Patent B2
US 10,725,884 · App. 15/841,116 · Granted Jul 28, 2020

Object storage system for an unreliable storage medium

Inventors: Frederik De Schrijver (Wenduine, BE); Romain Raymond Agnes Slootmaekers (Heverlee, BE); Bastiaan Stougie (Melle, BE); Joost Yervante Damad (Hulshout, BE); Wim De Wispelaere (Ghent, BE); Wouter Van Eetvelde (Sint-Amandsberg, BE); Bart De Vylder (Sinaai, BE)
Assignee: Western Digital Technologies, Inc.
G06F11/3409G06F3/0614G06F11/1076G06F16/27H04L67/1097G06F11/2094G06F2211/1028
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,725,884
App. No.
15/841,116
Granted
Jul 28, 2020
Kind
B2
Abstract

A method and computer device for storage and retrieval of a data object on a storage medium. The method includes steps of disassembling the data object into a predetermined number of redundant sub blocks, storing the redundant sub blocks on the storage medium, retrieving at least a predetermined multiple of a minimal spreading requirement of the redundant sub blocks from the storage medium, and assembling the data object from any combination of a particular number of the redundant sub blocks, the particular number corresponding to a predetermined multiple of a minimal spreading requirement. The computer device includes modules for performing the steps.

Claims (69)

1. A distributed storage system, comprising:

a plurality of storage elements; and

control circuitry configured to:

receive a data item, via a communication network, from a device that requests storage of the data item;

determine a size of the data item;

generate redundant data elements by:

in response to determining that the size of the data item is less than a first predetermined threshold:

generating replicas of the data item in accordance with a spreading parameter;

in response to determining that the size of the data item is greater than or equal to the first predetermined threshold and less than a second predetermined threshold:

dividing the data item into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm;

in response to determining that the size of the data item is greater than or equal to the second predetermined threshold:

dividing the data item into a plurality of sections of predetermined length;

dividing each section into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm; and

store the redundant data elements among the plurality of storage elements.

2. The distributed storage system of claim 1 , wherein the control circuitry is further configured, in response to determining that the size of the data item is greater than or equal to the second predetermined threshold, append a unique identifier of the data item and an identifier offset to each of the plurality of sections to identify each of the plurality of sections as corresponding to the data item.

3. The distributed storage system of claim 2 , wherein the control circuitry is further configured to retrieve one of the plurality of sections that has a unique identifier and an identifier offset matching a unique identifier and an identifier offset included in a retrieval request from the device.

4. The distributed storage system of claim 1 , wherein the control circuitry is further configured to, in response to determining that the size of the data item is greater than or equal to the second predetermined threshold, pad a last section of the plurality of sections when a length of the last section is less than the predetermined length.

5. The distributed storage system of claim 1 , wherein the control circuitry is further configured to append a cyclic redundancy check (CRC) code to each of the redundant data elements prior to storing the redundant data elements among the plurality of storage elements.

6. The distributed storage system of claim 5 , wherein the control circuitry is further configured to generate the CRC code by:

dividing the data item into intermediate blocks; and

performing exclusive-OR operations on the intermediate blocks.

7. The distributed storage system of claim 1 , wherein:

the control circuitry is further configured to generate a distributed key for each of the plurality of storage elements;

the distributed key identifies redundant data elements stored in the plurality of storage elements; and

the distributed key is distributed among the plurality of storage elements.

8. The distributed storage system of claim 1 , wherein the control circuitry is further configured to retrieve at least one replica of the data item from the plurality of storage elements upon receipt of a retrieval request from the device.

9. The distributed storage system of claim 8 , wherein:

at least a portion of the plurality of storage elements are distributed in different geographical areas; and

the control circuitry is further configured to retrieve the at least one replica from a storage element geographically located closest to the device.

10. The distributed storage system of claim 1 , wherein:

the control circuitry is further configured to retrieve a minimum number of redundant data elements from at least a subset of the plurality of storage elements based on receipt of a retrieval request from the device; and

the minimum number corresponds to a minimum number of redundant data elements required for reconstruction of the data item and is a multiple of the spreading parameter.

11. The distributed storage system of claim 10 , wherein the communication network is a wireless communication network.

12. The distributed storage system of claim 10 , wherein the device is a wireless telephone, a computer or a personal digital assistant, and the device executes an application to communicate with the distributed storage system.

13. The distributed storage system of claim 1 , wherein the plurality of storage elements includes partitions in a single storage device.

14. The distributed storage system of claim 13 , wherein the single storage device includes a solid-state drive.

15. A method of storing a data item in a distributed storage system, comprising:

receiving, with control circuitry, the data item from a device via a communication network, the device requesting storage of the data item;

determining, with the control circuitry, a size of the data item;

generating redundant data elements by:

in response to determining that the size of the data item is less than a first predetermined threshold:

generating replicas of the data item in accordance with a spreading parameter;

in response to determining that the size of the data item is greater than or equal to the first predetermined threshold and less than a second predetermined threshold:

dividing the data item into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm;

in response to determining that the size of the data item is greater than or equal to the second predetermined threshold:

dividing the data item into a plurality of sections of predetermined length;

dividing each section into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm; and

storing, by the control circuitry, the redundant data elements among a plurality of storage elements.

16. The method of claim 15 , further comprising generating a distributed key for each of the plurality of storage elements, the distributed key identifying redundant data elements stored in the plurality of storage elements, the distributed key being distributed among the plurality of storage elements.

17. The method of claim 15 , further comprising appending a unique identifier of the data item and an identifier offset to each of the plurality of sections to identify each of the plurality of sections as corresponding to the data item.

18. A distributed storage system, comprising:

means for receiving a data item from a device that requests storage of the data item;

means for generating redundant data elements by:

in response to a size of the data item being less than a first predetermined threshold:

generating replicas of the data item in accordance with a spreading parameter;

in response to the size of the data item being greater than or equal to the first predetermined threshold and less than a second predetermined threshold:

dividing the data item into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm;

in response to the size of the data item being greater than or equal to the second predetermined threshold:

dividing the data item into a plurality of sections of predetermined length;

dividing each section into data blocks based on the spreading parameter; and

processing the data blocks with an erasure coding algorithm; and

means for storing the redundant data elements in a plurality of storage elements.

19. The distributed storage system of claim 18 , further comprising means for generating a distributed key for each of the plurality of storage elements, the distributed key identifying redundant data elements stored in the plurality of storage elements, the distributed key being distributed among the plurality of storage elements.

20. The distributed storage system of claim 18 , further comprising means for appending a unique identifier of the data item and an identifier offset to each of the plurality of sections to identify each of the plurality of sections as corresponding to the data item.

Assignments (6)
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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2020
From: DE SCHRIJVER, FREDERIK; SLOOTMAEKERS, ROMAIN RAYMOND AGNES; STOUGIE, BASTIAAN; DAMAD, JOOST YERVANTE; DE WISPELAERE, WIM; VAN EETVELDE, WOUTER; DE VYLDER, BART
To: AMPLIDATA NV
Reel/Frame 052090/0891 →
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 →
Continuity (6)
Continuation 14811690 · Jul 28, 2015
Continuation 14154442 · Jan 14, 2014
Continuation 13976061
Provisional Application 61427377 · Dec 27, 2010
Provisional Application 61427330 · Dec 27, 2010
Related Publication 20180101462A1 · Apr 12, 2018
Cited By (1)
US 12,199,637