IP Library Granted Patent US 9,563,509
Granted Patent B2
US 9,563,509 · App. 14/332,282 · Granted Feb 7, 2017

Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system

Inventors: Chunqi Han (Pleasanton, CA); Anil Nanduri (Sunnyvale, CA); Murali Krishna Vishnumolakala (Sunnyvale, CA)
Assignee: NIMBLE STORAGE, INC.
G06F11/1088G06F11/1076G06F11/1084G06F11/1092
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,563,509
App. No.
14/332,282
Granted
Feb 7, 2017
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 (31)

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

while all of the storage units are operating without failure, storing only error-correction blocks on a first one of the storage units and storing a combination of data blocks and error-correction blocks on a second one of the storage units; and

upon failure of the second storage unit, (i) reconstructing one or more data blocks and one or more error-correction blocks formerly stored on the second storage unit, and (ii) storing the one or more reconstructed data blocks and the one or more reconstructed error-correction blocks on the first storage unit in an offset manner such that the storing of a first reconstructed block belonging to a first stripe on the first storage unit does not involve writing over an error-correction block belonging to the first stripe on the first storage unit.

2. The method of claim 1 , further comprising:

prior to storing the one or more reconstructed data blocks and one or more error-correction blocks on the first storage unit, backing up one or more of the error-correction blocks on the first storage unit on a persistent storage device.

3. The method of claim 2 , wherein at least one of the reconstructed data blocks overwrites the one or more error-correction blocks on the first storage unit that have been backed up onto the persistent storage device.

4. The method of claim 3 , wherein at least one of the error-correction blocks that is backed up belongs to the first stripe, and the at least one of the error-correction blocks that is backed up and belongs to the first stripe is overwritten by at least one reconstructed data block that belongs to a second stripe.

5. The method of claim 2 , wherein at least one of the reconstructed error-correction blocks overwrites the one or more error-correction blocks on the first storage unit that have been backed up onto the persistent storage device.

6. The method of claim 5 , wherein at least one of the error-correction blocks that is backed up belongs to the first stripe, and the at least one of the error-correction blocks that is backed up and belongs to the first stripe is overwritten by at least one reconstructed error-correction block that belongs to a second stripe.

7. The method of claim 1 , wherein at least one of the reconstructed data blocks overwrites at least one of the error-correction blocks on the first storage unit.

8. The method of claim 7 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed data block that belongs to a second stripe.

9. The method of claim 1 , wherein at least one of the reconstructed error-correction blocks overwrites at least one of the error-correction blocks on the first storage unit.

10. The method of claim 9 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed error-correction block that belongs to a second stripe.

11. A storage 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:

while all of the storage units are operating without failure, store only error-correction blocks on a first one of the storage units and store a combination of data blocks and error-correction blocks on a second one of the storage units; and

upon failure of the second storage unit, (i) reconstruct one or more data blocks and one or more error-correction blocks formerly stored on the second storage unit, and (ii) store the one or more reconstructed data blocks and one or more reconstructed error-correction blocks on the first storage unit in an offset manner such that the storing of a first reconstructed block belonging to a first stripe on the first storage unit does not involve writing over an error-correction block belonging to the first stripe on the first storage unit.

12. The storage system of claim 11 , wherein at least one of the reconstructed data blocks overwrites at least one of the error-correction blocks on the first storage unit.

13. The storage system of claim 12 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed data block that belongs to a second stripe.

14. The storage system of claim 11 , wherein at least one of the reconstructed error-correction blocks overwrites at least one of the error-correction blocks on the first storage unit.

15. The storage system of claim 14 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed error-correction block that belongs to a second stripe.

16. A non-transitory machine-readable storage medium for a storage 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:

while all of the storage units are operating without failure, store only error-correction blocks on a first one of the storage units and store a combination of data blocks and error-correction blocks on a second one of the storage units; and

upon failure of the second storage unit, (i) reconstruct one or more data blocks and one or more error-correction blocks formerly stored on the second storage unit, and (ii) store the one or more reconstructed data blocks and one or more reconstructed error-correction blocks on the first storage unit in an offset manner such that the storing of a first reconstructed block belonging to a first stripe on the first storage unit does not involve writing over an error-correction block belonging to the first stripe on the first storage unit.

17. The non-transitory machine-readable storage medium of claim 16 , wherein at least one of the reconstructed data blocks overwrites at least one of the error-correction blocks on the first storage unit.

18. The non-transitory machine-readable storage medium of claim 17 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed data block that belongs to a second stripe.

19. The non-transitory machine-readable storage medium of claim 16 , wherein at least one of the reconstructed error-correction blocks overwrites at least one of the error-correction blocks on the first storage unit.

20. The non-transitory machine-readable storage medium of claim 19 , wherein at least one of the error-correction blocks that is overwritten belongs to the first stripe, and the at least one of the error-correction blocks that is overwritten and belongs to the first stripe is overwritten by at least one reconstructed error-correction block that belongs to a second stripe.

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 Jul 15, 2014
From: HAN, CHUNQI; NANDURI, ANIL; VISHNUMOLAKALA, MURALI KRISHNA
To: NIMBLE STORAGE, INC.
Reel/Frame 033318/0328 →
Continuity (1)
Related Publication 20160019114A1 · Jan 21, 2016