Data object recovery for storage systems

US10152376B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10152376-B2
Application numberUS-201715398826-A
CountryUS
Kind codeB2
Filing dateJan 5, 2017
Priority dateJun 29, 2016
Publication dateDec 11, 2018
Grant dateDec 11, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 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.

Assignees

Inventors

Classifications

  • Reed-Solomon codes · CPC title

  • using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes · CPC title

  • Parity data used in redundant arrays of independent storages, e.g. in RAID systems · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10152376B2 cover?
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…
Who is the assignee on this patent?
Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/1076. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 11 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 9 related publications on this page (citations in our corpus or others sharing the same primary CPC).