Method and apparatus for storage unit replacement in non-redundant array
First Claim
1. A method for managing data in a network, the network comprising a plurality of storage devices, the method comprising:
- (A) assigning a first set of storage devices to a non-redundant storage array;
(B) storing at least one data set on the array;
(C) detecting a condition of a first particular storage device comprised within the array and wherein the first particular storage device stores a subset of the at least one data set;
(D) selecting a second particular storage device;
(E) migrating, in response to said detecting, migrating the subset to the second particular storage device, the migrating including (1) providing an intermediate device in the network, the intermediate device being coupled to the first particular storage device, the intermediate device further being coupled to the second particular storage device, the intermediate device having a buffer;
(2) transferring a plurality of copies of blocks of data from the subset to the buffer;
(3) re-transferring the plurality of copies of blocks of data from the buffer to the second particular storage device and fulfilling, via the intermediate device, a plurality of data access requests relating to data in the subset during an act selected from a list consisting of the transferring and the re-transferring the plurality of copies of blocks of data from the buffer to the second particular storage device and fulfilling, via the intermediate device, a plurality of data access requests relating to data in the subset during an act selected from a list consisting of the transferring and the re-transferring; and
, (F) identifying the second particular storage device as a member of the array.
15 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus used in a storage network facilitates the protection of data in, and replacement of, storage devices about to fail before the failure happens. In a network that includes a set of storage devices organized as a non-redundant (for example RAID 0) array, a storage device about to fail in the non-redundant array can be replaced by another storage device, typically from a pool of spares. The method includes detecting a condition of a first particular storage device in the non-redundant array. Conditions which are detected according to various embodiments indicate that the first particular storage device is suffering events indicating that it is likely to fail, or otherwise suffering from reduced performance. The conditions are detected for example, by the receipt of a signal from the storage device itself, or by the monitoring of statistics concerning the performance of the storage device. The method further provides for selecting a particular spare storage device, which can be used in place of the first particular storage device. In response to detecting the condition, data stored in the first particular storage device is migrated to the second particular storage device, and the second particular storage takes the place of the first particular storage device in the non-redundant array. The first particular storage device can then be gracefully removed from the network without loss of service to the clients computers.
-
Citations
40 Claims
-
1. A method for managing data in a network, the network comprising a plurality of storage devices, the method comprising:
-
(A) assigning a first set of storage devices to a non-redundant storage array;
(B) storing at least one data set on the array;
(C) detecting a condition of a first particular storage device comprised within the array and wherein the first particular storage device stores a subset of the at least one data set;
(D) selecting a second particular storage device;
(E) migrating, in response to said detecting, migrating the subset to the second particular storage device, the migrating including (1) providing an intermediate device in the network, the intermediate device being coupled to the first particular storage device, the intermediate device further being coupled to the second particular storage device, the intermediate device having a buffer;
(2) transferring a plurality of copies of blocks of data from the subset to the buffer;
(3) re-transferring the plurality of copies of blocks of data from the buffer to the second particular storage device and fulfilling, via the intermediate device, a plurality of data access requests relating to data in the subset during an act selected from a list consisting of the transferring and the re-transferring the plurality of copies of blocks of data from the buffer to the second particular storage device and fulfilling, via the intermediate device, a plurality of data access requests relating to data in the subset during an act selected from a list consisting of the transferring and the re-transferring; and
,(F) identifying the second particular storage device as a member of the array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
maintaining a data structure in the intermediate device, the data structure storing a parameter, the parameter depending upon an extent of the subset, the extent having been already transferred from the first particular storage device to the intermediate device.
-
-
6. The method of claim 5, wherein:
-
the plurality of data access requests include a write request to write data to a location in the subset, and further including;
sending a further write request to the first particular storage device should the location be situated outside the extent.
-
-
7. The method of claim 5, wherein:
-
the plurality of data access requests includes a write request to write data to a location in the subset, and further including;
sending a further write request to the second particular storage device should the location be situated inside the extent.
-
-
8. The method of claim 7, further including:
sending a still further write request to the first particular first device should the location be situated inside the extent.
-
9. The method of claim 1, further including:
assigning a first priority for the fulfilling of the plurality of data access requests with respect to a second priority for the transferring of the plurality of copies of blocks of data.
-
10. The method of claim 9, wherein the first priority is higher than the second priority.
-
11. The method of claim 1, wherein the act of transferring and the act of re-transferring jointly include:
-
(i) setting a first parameter indicating a size of the subset and further indicating a location of the subset;
(ii) generating a request to copy a block of data from the subset to the buffer;
(iii) generating a request to transfer the block of data from the buffer to the second particular storage device;
(iv) setting a second parameter depending upon a cardinality of a set of blocks consisting of blocks of data copies from a location selected from a list consisting of the subset and the buffer; and
(v) repeating the acts (ii) through (iv), until a copy of the subset is stored in the second particular storage device.
-
-
12. The method of claim 1, wherein a background process comprises at least one act selected from a list consisting of the transferring of copies of blocks of data and the re-transferring of copies of blocks of data, the background process being capable of operating concurrently with the fulfilling of the plurality of data access requests from the client.
-
13. A computer-readable medium having contents which cause a computer to manage data in a network, by:
-
(A) assigning a first set of storage devices to a non-redundant storage array;
(B) storing at least one data set on the array;
(C) detecting a condition of a first particular storage device comprises within the array and wherein the first particular storage device stores a subset of the at least one data set;
(D) selecting a second particular storage device; and
(E) migrating, in response to said detecting, the subset to the second particular storage device, the migrating including (1) providing an intermediate device in the network, the intermediate device being coupled to the first particular storage device, the intermediate device further being coupled to the second particular storage device, the intermediate device having a buffer;
(2) transferring a plurality of copies of blocks of data from the subset to the buffer; and
(3) re-transferring the plurality of copies of blocks of data from the buffer to the second particular storage device and fulfilling, via the intermediate device, a plurality of data access requests relating to data in the subset during an act selected from a list consisting of the transferring and re-transferring; and
,(F) identifying the second particular storage device as a member of the array. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
maintaining a data structure in the intermediate device, the data structure storing a parameter, the parameter depending upon an extent of the subset, the extent having been already transferred from the first particular storage device to the intermediate device.
-
-
18. The medium of claim 17, wherein:
-
the plurality of data access requests include a write request to write data to a location in the subset, and further including;
sending a further write request to the first particular storage device should the location be situated outside the extent.
-
-
19. The medium of claim 17, wherein:
-
the plurality of data access requests includes a write request to write data to a location in the subset, and further including;
sending a further write request to the second particular storage device should the location be situated inside the extent.
-
-
20. The method of claim 19, further including:
sending a still further write request to the first particular first device should the location be situated inside the extent.
-
21. The medium of claim 13, further including:
assigning a first priority for the fulfilling of the plurality of data access requests with respect to a second priority for the transferring of the plurality of copies of blocks of data.
-
22. The medium of claim 21, wherein the first priority is higher than the second priority.
-
23. The medium of claim 13, wherein the act of transferring and the act of re-transferring jointly includes:
-
(i) setting a first parameter indicating a size of the subset and further indicating a location of the subset;
(ii) generating a request to copy a block of data from the subset to the buffer;
(iii) generating a request to transfer the block of data from the buffer to the second particular storage device;
(iv) setting a second parameter depending upon a cardinality of a set of blocks consisting of blocks of data copied from a location selected from a list consisting of the subset and the buffer and (v) repeating the acts (ii) through (iv), until a copy of the subset is stored in the second particular storage device.
-
-
24. The method of claim 13, wherein a background process comprises at least one act selected from a list consisting of the transferring of copies of blocks of data and the re-transferring of copies of blocks of data, the background process being capable of operating concurrently with the fulfilling of the plurality of data access requests from the client.
-
25. An intermediate device for a storage network, comprising:
-
(A) a plurality of communication interfaces, the plurality of communication interfaces adapted for communication with a non-redundant array of storage devices storing at least one data set, and further adapted for communication with at least one client issuing a plurality of data access requests for access to the at least one data set;
(B) at least one data transfer resource coupled to the plurality of communication interfaces, the data transfer resources transferring data via the plurality of communication interfaces and a logic engine, coupled to the plurality of communication interfaces, which, in response to detection of a condition of a first particular storage device comprises within the array, performs migration of a subset of the at least one data set stored in the first particular storage device to a second particular storage device being a spare storage device and identifies the second particular storage device as a member of the array, the migration including (1) a first transferring of a plurality of copies of blocks of data from the subset to a buffer;
(2) a second transferring of the plurality of copies of blocks from the buffer to the second particular storage device; and
(3) fulfilling at least one particular data access request selected from the plurality of data access requests during said first transferring and said second transferring. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
a plurality of driver modules, and a plurality of configurable logic linking driver modules in the plurality of driver modules into data paths, the data paths including respective sets of driver modules.
-
-
27. The intermediate device of claim 26, wherein the plurality of driver modules includes:
-
at least one hardware driver module to manage the plurality of communication interfaces; and
one or more internal driver modules to perform data path tasks independently of the plurality of communication interfaces.
-
-
28. The intermediate device of claim 25, wherein the logic engine comprises data structures that store status information concerning said migration.
-
29. The intermediate device of claim 25, comprising data structures which store status information concerning progress of said migration, including a progress parameter indicating an extent of the subset, the extent of the subset being already copies to the second storage device.
-
30. The intermediate device of claim 25, wherein said detection of a condition comprises reception of a signal from said first particular storage device.
-
31. The intermediate device of claim 25, wherein said condition comprises an event indicating reception of a signal from said first particular storage device.
-
32. The intermediate device of claim 25, wherein the logic engine maintains a data structure in the intermediate device storing a progress parameter indicating an extend of the subset being already transferred to the second particular storage device.
-
33. The intermediate device of claim 32, wherein
the plurality of data access requests includes a first write request to write data to a location in the subset, and the logic engine transfers a second write request to the first particular storage device if the location is outside the extent of the subset. -
34. The intermediate device of claim 32, wherein
the plurality of data access requests includes a first write request to write data to a location in the subset, and the logic engine transfers a second write request to the second particular storage device if the location is inside the extent of the subset. -
35. The intermediate device of claim 32, wherein
the data access requests include a first write request to write data to a location in the data set, and the logic engine transfers a second write request to the first particular storage device and to the second particular storage device if the location is inside said extent of the subset. -
36. The intermediate device of claim 25, wherein
the logic engine assigns a first priority for the fulfilling of the at least one particular data access request, and the logic engine further assigns a second priority for the transferring of copies of blocks. -
37. The intermediate device of claim 36, wherein the first priority is higher than the second priority.
-
38. The intermediate device of claim 25, wherein the acts of transferring and re-transferring include:
-
(i) setting a first parameter indicating a size of the subset and further indicating a location of the subset;
(ii) generating a request to copy a block of data from the subset to the buffer;
(iii) generating a request to transfer the block of data from the buffer to the second particular device;
(iv) setting a second parameter indicating blocks from the subset stored in the second device; and
(v) repeating the acts (i) through (iv), until a copy of the subset is stored in the second device.
-
-
39. The intermediate device of claim 25, wherein at least one act selected from a list consisting of the transferring of copies of blocks and the re-transferring of copies of blocks is comprises within a background process, the background process being capable of operating during concurrent servicing of the plurality of data access requests from the client.
-
40. A storage server comprising:
-
(A) a plurality of communication interfaces adapted for communication with a non-redundant array of storage devices storing at least one data set, and further adapted for communication with at least one spare storage device and still further adapted for communication with at least one client issuing a plurality of data access requests for access to the at least one data set;
(B) a plurality of data processing resources coupled with the plurality of communication interfaces, the plurality of data processing resources transferring data among the plurality of communication interfaces, the plurality of data processing resources including;
(1) a plurality of hardware driver modules to manage respective communication interfaces in the plurality of communication interfaces, (2) a plurality of internal driver modules to perform data path tasks, independently of the plurality of communication interfaces, (3) a configurable logical connection linking a first plurality of driver modules in the plurality of hardware driver modules and a second plurality of driver modules in the plurality of internal driver modules into a plurality of data paths, (4) a protocol server module coupled with the plurality of data paths, for a protocol supported on a communication interface in the plurality of communication interfaces, the protocol server recognizing a plurality of target identifiers in a session according to the protocol and the protocol server linking the sessions to a data path selected from the plurality of data paths in response to the target identifier, and (5) a logic engine which identifies members of the array, and in response to a detection of a condition of a first particular storage device in the array, migrates the subset to a second particular storage device selected from the at least one spare storage device, the migrating being according to an assigned priority, and the logic engine further identifies the second particular storage device as a member of the array.
-
Specification