Method for synchronizing reserved areas in a redundant storage array
First Claim
1. A method for synchronizing the reserved areas of data storage units included within an array of failure independent data storage units, the data storage units being logically divided into at least two logical groups, each reserved area having blocks of data, each block of data being associated with a unique block of data within each other reserved area, including the steps of:
- a. setting a current busy flag to indicate that data storage units within a current logical group of data storage units are being updated;
b. updating, a block of data within a reserved area within the current logical group, and each associated block of data within each other reserved area in the current logical group;
c. upon completely updating the block of data and each associated data block stored in each reserved area in the current logical group of data storage units, setting a next busy flag to indicate that the reserved areas of the data storage units within a next logical group of data storage units are being updated;
d. updating each data block stored in the reserved areas in the next logical group of data storage units;
e. repeating steps (d) and (e) for each logical group;
f. resetting each busy flag to indicate that the updating process has been successfully completed.
0 Assignments
0 Petitions
Accused Products
Abstract
A redundant array storage system in which a reserved area of a multiplicity of data storage units can be reliably synchronized, even if the synchronization cycle is interrupted by an unforeseen event or situation, such as sudden loss of power to the system or a component failure. By maintaining two groups or partitions of data storage units and updating only one group at a time, and by having a global table which provides information regarding which group of storage units is being updated, the present invention allows the system to reliably determine which of the data storage units maintain valid data in their reserved area and to conform the reserved areas of the other group of data storage units to the valid values, without the use of additional hardware devices.
-
Citations
13 Claims
-
1. A method for synchronizing the reserved areas of data storage units included within an array of failure independent data storage units, the data storage units being logically divided into at least two logical groups, each reserved area having blocks of data, each block of data being associated with a unique block of data within each other reserved area, including the steps of:
-
a. setting a current busy flag to indicate that data storage units within a current logical group of data storage units are being updated; b. updating, a block of data within a reserved area within the current logical group, and each associated block of data within each other reserved area in the current logical group; c. upon completely updating the block of data and each associated data block stored in each reserved area in the current logical group of data storage units, setting a next busy flag to indicate that the reserved areas of the data storage units within a next logical group of data storage units are being updated; d. updating each data block stored in the reserved areas in the next logical group of data storage units; e. repeating steps (d) and (e) for each logical group; f. resetting each busy flag to indicate that the updating process has been successfully completed. - View Dependent Claims (2)
-
-
3. A method for synchronizing reserved areas of data storage units included within an array of failure independent data storage units, the data storage units being logically divided into at least two logical groups, each reserved area having blocks of data, each block of data being associated with a unique block number, including the steps of:
-
a. storing in a block number variable a block number associated with a block of data within each reserved area before beginning to update the block associated with the block number; b. setting a first busy flag to indicate that data blocks associated with the block number stored in the block number variable and within a first logical group of data storage units are being updated; c. updating each block of data stored in the first logical group of data storage units and associated with the block number stored in the block number variable; d. upon completely updating each data block stored in the last logical group of data storage units and associated with the block number stored in the block number variable, setting a next busy flag to indicate that the data storage units within a next logical group of data storage units are being updated; e. updating each data block stored in the next logical group of data storage units and associated with the block number stored in the block number variable; f. repeating steps (d) through (f) until each block associated the block number stored in the block number variable has been updated; g. storing a next block number in the block number variable and repeating steps (b) through (g) until each block of data within each reserved area has been updated; h. resetting each busy flag indicating that the updating process has been successfully completed. - View Dependent Claims (4, 5)
-
-
6. A method for resynchronizing reserved areas of data storage units included within an array of failure independent data storage units after an interruption to a write to a reserved area, the data storage units being logically divided into at least two logical groups, each reserved area having an update table including a flag field, each flag field storing one unique logical group busy flag, each logical group busy flag associated with a corresponding logical group, each logical group busy flag being set before updated data is written to any of the reserved areas within the logical group associated with that logical group busy flag and reset when update data has been written to all of the reserved areas in all of the logical groups, the method including the steps of:
-
a. reading the value stored in each flag field; b. determining whether any of the logical group busy flags associated with a first logical group are set; c. if some, but not all, of the logical group busy flags associated with the first logical group have been set, then resetting each of the logical group busy flags; d. if all of the logical group busy flags associated with the first logical group have been set, and none of the logical group busy flags associated with any other logical group have been set, then copying data from a reserved area in a next logical group into each reserved area within the last logical group; e. if some, but not all of the logical group busy flags associated with a logical group other than the first logical group have been set, then copying the data from one of the reserved areas in the first logical group into each reserved area within each other logical group.
-
-
7. A method for resynchronizing reserved areas of data storage units included within an array of failure independent data storage units after an interruption to a write to a reserved area, the data storage units being logically divided into at least two logical groups, each reserved area having an update table including a flag field, each flag field storing one unique logical group busy flag, each logical group busy flag associated with a corresponding logical group, each logical group busy flag associated with a particular group being set before updated data is written to any of the reserved areas within the logical group associated with that logical group busy flag and reset when update data has been written to each reserved area in each logical group, each reserved area having blocks of data, each block of data within a first reserved area being associated with a unique corresponding block within each other reserved area and with a unique corresponding block number, and each update table further includes a block number field, the method including the steps of:
-
a. reading the value stored in each flag field; b. determining whether any of the logical group busy flags associated with a first logical group are set; c. if some, but not all, of the logical group busy flags associated with the first logical group have been set, then resetting each of the logical group busy flags; d. if all of the logical group busy flags associated with the first logical group have been set, and none of the logical group busy flags associated with any other logical group have been set, then copying data from the block in a reserved area in a next logical group which is associated with the block number stored in the block number field into the associated block within each reserved area in the last logical group; e. if some, but not all of the logical group busy flags associated with a logical group other than the first logical group have been set, then copying the data from the block associated with the block number stored in the block number field in one of the reserved areas in the first logical group into the associated block in each reserved area in each other logical group.
-
-
8. A redundant storage array system comprising;
-
a plurality of failure-independent data storage units divided into at least two logical groups, each data storage unit including a reserved area for storage of at least system information, including system configuration information, the reserved area of each data storage unit further including an update table means for storing at least a first value for indicating an interruption in a process for updating and synchronizing the reserved areas of the data storage units of the at least two logical groups; a controller for completely and concurrently updating all of the reserved areas in a current logical group before any updating may commence on the reserved areas within a next logical group to ensure that the reserved areas within the data storage units of at least one logical group of data storage units may be used as a reference to determine the state of the reserved area in data storage units within each other logical group; and a processor for allowing recovery from, and synchronization to be reestablished after, an interruption to an update cycle, the processor including control means for; storing a block number value in each update table identifying a block of data which is to be updated; setting a flag value in each update table indicating that the first logical group of data storage units is to be updated; updating in the first logical group of data storage units the block of data identified by the block number value in each update table; storing a flag field value in each update table indicating that the update of the block of data in the first logical group at data storage units is complete and that the second logical group of data storage units is to be updated; updating in the second logical group of data storage units the block of data identified by the block number value in each update table, and storing a flag value in each update table indicating that the update of the block of data in the second logical group of data storage units is complete. - View Dependent Claims (9, 10, 11, 12, 13)
-
Specification