US2016034370A1PendingUtilityA1

Methods and systems for storing information that facilitates the reconstruction of at least some of the contents of a storage unit on a storage system

53
Assignee: NIMBLE STORAGE INCPriority: Jul 29, 2014Filed: Aug 19, 2014Published: Feb 4, 2016
Est. expiryJul 29, 2034(~8 yrs left)· nominal 20-yr term from priority
G06F 3/065G06F 3/0614G06F 2211/104G06F 11/1076G06F 3/0689G06F 11/2082G06F 11/1092G06F 2201/84G06F 11/2094
53
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

The failure of a storage unit in a storage array of a storage system may render the storage unit unresponsive to any requests. Any writes to the storage system that occur during the failure of the storage unit will not be reflected on the failed unit, rendering some of the failed unit's data stale. Assuming the failed unit's data is not corrupted but is just stale, a partial rebuild may be performed on the failed unit, selectively reconstructing only data that is needed to replace the stale data. Described herein are techniques for storing information that identifies the data that needs to be rebuilt. When the storage unit fails, the segment identifier associated with the last data segment written to the storage system may be stored. Upon the storage unit recovering, the storage system can rebuild only those data segments whose identifier is greater than the stored segment identifier.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method for a storage system having a storage array, the storage array having a plurality of storage units, the method comprising:
 maintaining a segment map in a persistent storage, the segment map associating a plurality of segment identifiers with a plurality of stripe numbers;   in response to a first one of the storage units failing, storing a first one of the segment identifiers from the segment map on a second one of the storage units, the first segment identifier being associated with the last data segment that was written on the storage array before the failure of the first storage unit;   in response to the first storage unit being recovered, storing a second one of the segment identifiers from the segment map on the second storage unit, the second segment identifier being associated with the last data segment that was written on the storage array before the recovery of the first storage unit; and   determining a set of stripe numbers associated with content to be rebuilt on the first storage unit, the determination being based on the segment map and the first and second segment identifiers.   
     
     
         2 . The method of  claim 1 , wherein the first segment identifier identifies the last data segment that was written on the storage array before the failure of the first storage unit. 
     
     
         3 . The method of  claim 1 , wherein the second segment identifier identifies the last data segment that was written on the storage array before the recovery of the first storage unit. 
     
     
         4 . The method of  claim 1 , wherein the set of stripe numbers are associated with ones of the segment identifiers that are greater than the first segment identifier and less than or equal to the second segment identifier. 
     
     
         5 . The method of  claim 1 , further comprising, for each stripe identified in the set of stripe numbers, rebuilding on the first storage unit a portion of the content that belongs to the stripe and the first storage unit. 
     
     
         6 . The method of  claim 1 , wherein the persistent storage is a part of the plurality of storage units. 
     
     
         7 . The method of  claim 1 , wherein the persistent storage is a part of a non-volatile random access memory (NVRAM) of the storage system. 
     
     
         8 . The method of  claim 1 , wherein the determination is solely based on the segment map and the first and second segment identifiers. 
     
     
         9 . The method of  claim 1 , further comprising, each time a portion of a data segment is rebuilt on the first storage unit, advancing the first segment identifier to a segment identifier in the segment map that is higher in value than the first segment identifier. 
     
     
         10 . The method of  claim 9 , further comprising:
 receiving a read request from a host device for data on the first storage unit while a partial rebuild process is being performed on the first storage unit;   determining whether the read requested is directed at one or more stripes having stripe numbers within the set of stripe numbers; and   if so, reconstructing the requested data and transmitting the reconstructed data to the host device, otherwise, transmitting the requested data from the first storage unit to the host device.   
     
     
         11 . A storage system, comprising:
 a plurality of storage units;   a persistent storage, wherein the persistent storage is a part of the plurality of storage units;   a main memory;   a processor communicatively coupled to the plurality of storage units and the main memory; and   software instructions on the main memory that, when executed by the processor, cause the processor to:
 maintain a segment map in the persistent storage, the segment map associating a plurality of segment identifiers with a plurality of stripe numbers; 
 in response to a first one of the storage units failing, store a first one of the segment identifiers from the segment map on a second one of the storage units, the first segment identifier being associated with the last data segment that was written on the storage array before the failure of the first storage unit; 
 in response to the first storage unit being recovered, store a second one of the segment identifiers from the segment map on the second storage unit, the second segment identifier being associated with the last data segment that was written on the storage array before the recovery of the first storage unit; and 
 determine a set of stripe numbers associated with content to be rebuilt on the first storage unit, the determination being based on the segment map and the first and second segment identifiers. 
   
     
     
         12 . The storage system of  claim 11 , wherein the first segment identifier identifies the last data segment that was written on the storage array before the failure of the first storage unit. 
     
     
         13 . The storage system of  claim 11 , wherein the second segment identifier identifies the last data segment that was written on the storage array before the recovery of the first storage unit. 
     
     
         14 . The storage system of  claim 11 , wherein the set of stripe numbers are associated with ones of the segment identifiers that are greater than the first segment identifier and less than or equal to the second segment identifier. 
     
     
         15 . The storage system of  claim 11 , further comprising software instructions on the main memory that, when executed by the processor, cause the processor to, for each stripe identified in the set of stripe numbers, rebuild on the first storage unit a portion of the content that belongs to the stripe and the first storage unit. 
     
     
         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:
 maintain a segment map in one or more of the storage units, the segment map associating a plurality of segment identifiers with a plurality of stripe numbers;   in response to a first one of the storage units failing, store a first one of the segment identifiers from the segment map on a second one of the storage units, the first segment identifier being associated with the last data segment that was written on the storage array before the failure of the first storage unit;   in response to the first storage unit being recovered, store a second one of the segment identifiers from the segment map on the second storage unit, the second segment identifier being associated with the last data segment that was written on the storage array before the recovery of the first storage unit; and   determine a set of stripe numbers associated with content to be rebuilt on the first storage unit, the determination being based on the segment map and the first and second segment identifiers.   
     
     
         17 . The non-transitory machine-readable storage medium of  claim 16 , wherein the first segment identifier identifies the last data segment that was written on the storage array before the failure of the first storage unit. 
     
     
         18 . The non-transitory machine-readable storage medium of  claim 16 , wherein the second segment identifier identifies the last data segment that was written on the storage array before the recovery of the first storage unit. 
     
     
         19 . The non-transitory machine-readable storage medium of  claim 16 , wherein the set of stripe numbers are associated with ones of the segment identifiers that are greater than the first segment identifier and less than or equal to the second segment identifier. 
     
     
         20 . The non-transitory machine-readable storage medium of  claim 16 , further comprising software instructions that, when executed by the processor, cause the processor to, for each stripe identified in the set of stripe numbers, rebuild on the first storage unit a portion of the content that belongs to the stripe and the first storage unit.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.