IP Library Granted Patent US 10,496,481
Granted Patent B2
US 10,496,481 · App. 15/389,268 · Granted Dec 3, 2019

Methods and systems for rebuilding data subsequent to the failure of a storage unit

Inventors: Chunqi Han (Pleasanton, CA); Anil Nanduri (Sunnyvale, CA); Murali Krishna Vishnumolakala (Sunnyvale, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F11/1088G06F11/1076G06F11/1084G06F11/1092G06F11/1096
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,496,481
App. No.
15/389,268
Granted
Dec 3, 2019
Kind
B2
Abstract

Described herein are techniques for storing data in a redundant manner on a plurality of storage units of a storage system. While all of the storage units are operating without failure, only error-correction blocks are stored on a first one of the storage units, while a combination of data blocks and error-correction blocks are stored on a second one of the storage units. Upon failure of the second storage unit, one or more data blocks and one or more error-correction blocks formerly stored on the second storage unit are reconstructed, and the one or more reconstructed data blocks and the one or more reconstructed error-correction blocks are stored on the first storage unit.

Claims (45)

1. A method for a computing system having a plurality of storage units, the method comprising:

storing, by a controller of the computing system, a first and a second data stripe in the plurality of storage units; and

subsequent to a failure of one of the storage units that stored a first block of the second data stripe, (i) reconstructing, by the controller, the first block of the second data stripe so as to form a reconstructed version of the first block of the second data stripe, and (ii) replacing, by the controller, a first block of the first data stripe stored in a non-failed storage unit of the storage units with the reconstructed version of the first block of the second data stripe.

2. The method of claim 1 , wherein the first block of the second data stripe is a data block, and

wherein the storing the first and second data stripes in the plurality of storage units comprises storing at least one block of each of the first and second stripes on each of the plurality of storage units.

3. The method of claim 1 , wherein the first block of the second data stripe is an error-correction block.

4. The method of claim 1 , wherein the first block of the first data stripe is an error-correction block.

5. The method of claim 1 , further comprising:

storing, by the controller of the computing system, a third data stripe in the plurality of storage units, wherein the failed storage unit stored a first block of the third data stripe; and

subsequent to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, (i) reconstructing, by the controller, the first block of the third data stripe stored in the failed storage unit so as to form a reconstructed version of the first block of the third data stripe, and (ii) replacing, by the controller, a second block of the second data stripe in the non-failed storage unit with the reconstructed version of the first block of the third data stripe.

6. The method of claim 1 , further comprising, prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, storing a copy of the first block of the first data stripe from the non-failed storage unit in a non-volatile random access memory (NVRAM) of the computing system.

7. The method of claim 1 , further comprising, prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, storing a copy of the first block of the first data stripe from the non-failed storage unit in another one of the storage units other than the failed storage unit.

8. The method of claim 1 , wherein the failed storage unit stored a second block of the first stripe, and the method further comprises:

prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, reconstructing the second block of the first data stripe stored in the failed storage unit, and

replacing a first block of a third stripe in the non-failed storage unit with the reconstructed version of the second block of the first data stripe.

9. A computing system, comprising:

a plurality of storage units;

a main memory;

a processor communicatively coupled to the plurality of storage units and the main memory; and

a set of instructions on the main memory that, when executed by the processor, cause the processor to:

store a first and a second data stripe in the plurality of storage units; and

subsequent to a failure of one of the storage units that stored a first block of the second stripe, (i) reconstruct the first block of the second data stripe so as to form a reconstructed version of the first block of the second data stripe, and (ii) replace a first block of the first data stripe stored in a non-failed storage unit of the storage units with the reconstructed version of the first block of the second data stripe.

10. The computing system of claim 9 , wherein the first block of the second data stripe is a data block, and

wherein to store the first and second data stripes in the plurality of storage units, the set of instructions is executable to cause the processor to store at least one block of each of the first and second stripes on each of the plurality of storage units.

11. The computing system of claim 9 , wherein the first block of the second data stripe is an error-correction block.

12. The computing system of claim 9 , wherein the set of instructions is executable to cause the processor to:

store a third data stripe in the plurality of storage units, wherein the failed storage unit stored a first block of the third data stripe; and

subsequent to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, reconstruct the first block of the third data stripe stored in the failed storage unit to form a reconstructed version of the first block of the third data stripe, and replace a second block of the second data stripe in the non-failed storage unit with the reconstructed version of the first block of the third data stripe.

13. The computing system of claim 9 , wherein the set of instructions is executable to cause the processor to:

prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, store a copy of the first block of the first data stripe from the non-failed storage unit in a non-volatile random access memory (NVRAM) of the computing system.

14. The computing system of claim 9 , wherein the set of instructions is executable to cause the processor to:

prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, store a copy of the first block of the first data stripe from the non-failed storage unit in another one of the storage units other than the failed storage unit.

15. A non-transitory machine-readable storage medium for a computing system having a plurality of storage units, a main memory, and a processor communicatively coupled to the plurality of storage units and the main memory, the non-transitory machine-readable storage medium comprising software instructions that, when executed by the processor, cause the processor to:

store a first and a second data stripe in the plurality of storage units; and

subsequent to a failure of one of the storage units that stored a first block of the second data stripe, (i) reconstruct the first block of the second data stripe so as to form a reconstructed version of the first block of the second data stripe, and (ii) replace a first block of the first data stripe stored in a non-failed storage unit of the storage units with the reconstructed version of the first block of the second data stripe.

16. The non-transitory machine-readable storage medium of claim 15 , wherein the first block of the second data stripe is a data block, and

wherein to store the first and second data stripes in the plurality of storage units, the software instructions are executable to cause the processor to store at least one block of each of the first and second stripes on each of the plurality of storage units.

17. The non-transitory machine-readable storage medium of claim 15 , wherein the first block of the second data stripe is an error-correction block.

18. The non-transitory machine-readable storage medium of claim 15 , wherein the software instructions are executable to cause the processor to:

store a third data stripe in the plurality of storage units, wherein a first block of the third stripe was stored in the failed storage unit; and

subsequent to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, reconstruct the first block of the third data stripe stored in the failed storage unit to form a reconstructed version of the first block of the third data stripe, and replace a second block of the second data stripe in the non-failed storage unit with the reconstructed version of the first block of the third data stripe.

19. The non-transitory machine-readable storage medium of claim 15 , wherein the software instructions are executable to cause the processor to:

prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, store a copy of the first block of the first data stripe from the non-failed storage unit in a non-volatile random access memory (NVRAM) of the computing system.

20. The non-transitory machine-readable storage medium of claim 15 , wherein the software instructions are executable to cause the processor to:

prior to replacing the first block of the first data stripe in the non-failed storage unit with the reconstructed version of the first block of the second data stripe, store a copy of the first block of the first data stripe from the non-failed storage unit in another one of the storage units other than the failed storage unit.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2016
From: HAN, CHUNQI; NANDURI, ANIL; VISHNUMOLAKALA, MURALI KRISHNA
To: NIMBLE STORAGE, INC.
Reel/Frame 040756/0302 →
Continuity (2)
Continuation 14332282 · Jul 15, 2014
Related Publication 20170161146A1 · Jun 8, 2017