Using file system information in RAID data reconstruction and migration
First Claim
1. A method including identifying a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks;
- determining if there is a failed data block in said first group;
in response to a result of said determining operation, reconstructing data from said failed data block and determining whether to send said data to a data block associated with a second group, said second group having at least one non-failed data block;
logically setting said failed data block in said first group to a selected value, whereby later calculation of said redundant information for said first group can proceed without reconstructing said data.
2 Assignments
0 Petitions
Accused Products
Abstract
On disk failure, the storage system migrates only those disk blocks that included allocated data, and treats unallocated disk blocks as being logically zero when possible. When there is no spare disk, the source data block is logically set to zero and parity is recalculated for the RAID stripe associated with the source data block. When there is a spare, unallocated blocks on the spare are logically or physically set to zero upon migration. Write operations for the failed disk are redirected to other non-failing disks, and a record of which in-use disk blocks have been thus “migrated” to those other non-failing disks in maintained. Unused disk blocks are proactively set to zero. A target mirror copy is created using information regarding allocated disk blocks, by copying those blocks including allocated data or parity, and by clearing at the mirror those blocks not including any allocated data or parity.
177 Citations
87 Claims
-
1. A method including
identifying a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks; -
determining if there is a failed data block in said first group;
in response to a result of said determining operation, reconstructing data from said failed data block and determining whether to send said data to a data block associated with a second group, said second group having at least one non-failed data block;
logically setting said failed data block in said first group to a selected value, whereby later calculation of said redundant information for said first group can proceed without reconstructing said data. - View Dependent Claims (2, 3, 4, 5)
-
-
6. Apparatus including
means for identifying a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks; -
means for determining if there is a failed data block in said first group;
means for reconstructing data from said failed data block in response to a result of said determining operation;
means for sending said data to a data block associated with a second group, said second group having at least one non-failed data block; and
means for logically setting said failed data block to a selected value, whereby later calculation of said redundant information for said first group can proceed without reconstructing said data. - View Dependent Claims (7, 8, 9, 10)
-
-
11. Memory or mass storage including instructions, said instructions being capable of being performed by one or more computing devices, said instructions directing said one or more computing devices to
identify a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks; -
determine if there is a failed data block in said first group;
in response to a result of said instructions to determine, reconstruct data from said failed data block and send said data to a data block associated with a second group, said second group having at least one non-failed data block; and
logically set said failed data block to a selected value, whereby later calculation of said redundant information for said first group can proceed without reconstructing said data. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method of operating a storage system, said method including
setting selected disk blocks to a selected value, wherein an amount of parity recalculation by said storage system is minimized.
-
26. A method including
identifying a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks; -
determining if said redundant information is accessible;
in response to a result of said determining operation, sending data from said first group to a set of data blocks associated with one or more second groups, said second groups each having accessible blocks capable of maintaining redundant information. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. Memory or mass storage including instructions, said instructions being capable of being performed by one or more computing devices, said instructions directing said one or more computing devices to
identify a first group of data blocks, said first group including a block capable of maintaining redundant information associated with said data blocks; -
determine if said redundant information is accessible;
in response to a result of said instructions to determine, send data from said first group to a set of data blocks associated with one or more second groups, said second groups each having accessible blocks capable of maintaining redundant information. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45)
-
-
46. A method including
identifying a group of data blocks; -
receiving information from a file system regarding said data blocks;
selecting a method of calculating, subtracting or recalculating a set of associated redundant information responsive to said data blocks, in response to a result of said information; and
associating said redundant information with said data blocks in response to a result of said selecting action. - View Dependent Claims (47, 48, 49, 50, 51, 52, 53)
-
-
54. Apparatus including
a storage system including a set of groups of data blocks, each said group of data blocks being associated with a block capable of maintaining redundant information, whereby an individual one said data block in each group can be reconstructed in response to at least some of the information in said group and at least some of said redundant information; -
a set of information responsive to information regarding use of said data blocks; and
at least one circuit coupled to said data blocks and to said block capable of maintaining redundant information, said circuit being capable of calculating said redundant information, wherein said circuit is responsive to at least some of said information regarding use. - View Dependent Claims (55, 56)
-
-
57. Apparatus including
means for identifying a group of data blocks; -
means for receiving information from a file system regarding said data blocks;
means for selecting a method of calculating a set of associated redundant information responsive to said data blocks, in response to a result of said determining action; and
means for associating said redundant information with said data blocks in response to a result of said selecting action. - View Dependent Claims (58, 59, 60)
-
-
61. Memory or mass storage including instructions, said instructions being capable of being performed by one or more computing devices, said instructions directing said one or more computing devices to
identify a group of data blocks; -
receive information regarding said data blocks;
select one or more of said instructions in response to said information; and
associate redundant information with said group in response to a result of performing said selected instructions. - View Dependent Claims (62, 63, 64, 65, 66)
-
-
67. A method including
selecting a set of data blocks to send from a source to a target; -
sending said data blocks to said target;
sending parity associated with said data blocks to said target;
setting any unallocated blocks at said target to a selected value, whereby said parity for said data blocks is accurate;
whereby a selected relationship between said source device and said target device is established. - View Dependent Claims (68, 69, 70)
-
-
71. Memory or mass storage including instructions, said instructions being capable of being performed by one or more computing devices, said instructions directing said one or more computing devices to
select a set of data blocks to send from a source to a target; -
send said data blocks to said target;
send parity associated with said data blocks to said target;
set any unallocated blocks at said target to a selected value, whereby said parity for said data blocks is accurate;
whereby a selected relationship between said source device and said target device is established. - View Dependent Claims (72, 73, 74)
-
-
75. Apparatus including
means for selecting a set of data blocks to send from a source to a target; -
means for sending said data blocks to said target;
means for sending parity associated with said data blocks to said target;
means for setting any unallocated blocks at said target to a selected value, whereby said parity for said data blocks is accurate;
whereby a selected relationship between said source device and said target device is established. - View Dependent Claims (76, 77, 78)
-
-
79. An apparatus, including
a zeromap table, including a set of entries describing which datablocks have been set to zero; -
a blockmap table, including a set of entries describing which datablocks are in use by allocated file system data; and
a stripemap table, including a set of stripemap entries that correspond to one or more RAID stripes in a failed disk in a RAID group. - View Dependent Claims (80, 81, 82, 83, 84, 85, 86, 87)
-
Specification