IP Library Granted Patent US 10,152,376
Granted Patent B2
US 10,152,376 · App. 15/398,826 · Granted Dec 11, 2018

Data object recovery for storage systems

Inventors: Mikhail Danilov (Saint Petersburg, RU); Konstantin Buinov (Kirovsk, RU); Andrey Fomin (Vesevolozhsk, RU); Andrey Kurilov (Saint Petersburg, RU); Maxim Trusov (Saint Petersbsurg, RU)
Assignee: EMC IP HOLDING COMPANY LLC
G06F11/1076H03M13/3761H03M13/1515
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,152,376
App. No.
15/398,826
Granted
Dec 11, 2018
Kind
B2
Abstract

A method comprising: receiving an I/O request for object data; determining one or more data fragments wherein the object data is stored; determining that one or more of the data fragments are unavailable; determining, from within the one or more unavailable data fragments, a set of slices storing the object data, each slice comprising k small data fragments and m coded fragments; for each slice, retrieving at least k small data and coded fragments within the slice from storage; and recovering a segment of the object data using the retrieved small data and coded fragments. A related system and computer program product are also described.

Claims (50)

1. A method for retrieving data in a storage system, the method comprising:

receiving, at the storage system, an I/O request for object data, the I/O request being received from a client device;

identifying one or more data fragments where the object data is stored;

determining, by the storage system, that a first one of the data fragments is unavailable due to a failure of a node in the storage system, the first data fragment containing a plurality of first small data fragments that constitute a first portion of the object data;

retrieving, a plurality of second small data fragments and a plurality of coded fragments, the plurality of second small data fragments being generated based on the plurality of second small data fragments and a coding matrix, the plurality of second small data fragments and the plurality of coded fragments being part of a slice that is associated with the first data fragment;

recovering, by the storage system, the first portion of the object data by using the plurality of second small data fragments and the plurality of coded fragments; and

completing, by the storage system, the I/O request for object data based on the recovered first portion of the object data.

2. The method of claim 1 , further comprising:

determining, that a second one of the data fragments is available;

retrieving the second data fragment; and

extracting a second portion of the object data from the second data fragment,

wherein the I/O request is completed further based on the extracted second portion of the object data.

3. The method of claim 1 , wherein recovering the first portion of the object data comprises performing erasure decoding on the slice.

4. The method of claim 1 , wherein the plurality of second small data fragments is retrieved from two or more different nodes within the storage system.

5. The method of claim 1 , wherein each of the data fragments is greater than 100 megabytes and each of the first small data fragments is less than 1 kilobyte.

6. The method of claim 5 , wherein each of the first small data fragments is a half-byte.

7. A storage system comprising:

one or more processors;

a volatile memory; and

a non-volatile memory storing computer program code that when executed on the processor causes execution across the one or more processors of a process for retrieving data comprising the operations of:

receiving an I/O request for object data, the I/O request being received from a client device;

identifying one or more data fragments where the object data is stored;

determining that a first one of the data fragments is unavailable due to a failure of a node in the storage system, the first data fragment containing a plurality of first small data fragments that constitute a first portion of the object data;

retrieving a plurality of second small data fragments and a plurality of coded fragments, the plurality of second small data fragments being generated based on the plurality of second small data fragments and a coding matrix, the plurality of second small data fragments and the plurality of coded fragments being part of a slice that is associated with the first data fragment;

recovering the first portion of the object data by using the plurality of second small data fragments and the plurality of coded fragments; and

completing the I/O request for object data based on the recovered first portion of the object data.

8. The storage system of claim 7 , wherein the computer program code causes execution across the one or more processors of the process further operable to perform the operations of:

determining that a second one of the data fragments is available;

retrieving the second data fragment; and

extracting a second portion of the object data from the retrieved second data fragment,

wherein the I/O request is completed further based on the extracted second portion of the object data.

9. The storage system of claim 7 , wherein recovering the first portion of the object data comprises performing erasure decoding on the slice.

10. The storage system of claim 7 , wherein each of the data fragments is greater than 100 megabytes and each of the first small data fragments is less than 1 kilobyte.

11. The storage system of claim 10 , wherein each of the first small data fragments is a half-byte.

12. A computer program product tangibly embodied in a non-transitory computer-readable medium, the computer-readable medium storing program instructions which when executed by at least one processor that is part of a storage system cause the at least one processor to:

receive an I/O request for object data that is transmitted to the storage system by a client device;

identify one or more data fragments where the object data is stored;

determine that a first one of the data fragments is unavailable due to a failure of a node in the storage system, the first data fragment containing a plurality of first small data fragments that constitute a first portion of the object data;

retrieving, a plurality of second small data fragments and a plurality of coded fragments, the plurality of second small data fragments being generated based on the plurality of second small data fragments and a coding matrix, the plurality of second small data fragments and the plurality of coded fragments being part of a slice that is associated with the first data fragment;

recover the first portion of the object data by using the plurality of second small data fragments and the plurality of coded fragments; and

complete the I/O request for object data based on the recovered first portion of the object data.

13. The computer program product of claim 12 , wherein the program instructions are further executable to:

determine that a second one of the data fragments is available;

retrieve the second data fragment; and

extract a second portion of the object data from the retrieved second data fragment,

wherein the I/O request is completed further based on the extracted second portion of the object data.

14. The computer program product of claim 12 wherein recovering the first portion of the object data comprises performing erasure decoding on the retrieved slices.

15. The computer program product of claim 12 , wherein the plurality of second small data fragments is retrieved from two or more different nodes within the storage system.

16. The computer program product of claim 12 , wherein each of the data fragments is greater than 100 megabytes and each of the first small data fragments is less than 1 kilobyte.

17. The computer program product of claim 16 , wherein each of the first small data fragments is a half-byte.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045482/0131) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2017
From: DANILOV, MIKHAIL; BUINOV, KONSTANTIN; FOMIN, ANDREY; KURILOV, ANDREY; TRUSOV, MAXIM
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040899/0928 →
Priority Claims (1)
RU 2016125855 · Jun 29, 2016 · national
Continuity (1)
Related Publication 20180004600A1 · Jan 4, 2018
Cited By (3)
US 12,229,055 US 12,235,772 US 12,470,567