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
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-modifiedWhat 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.