As the amount of data a computer can process increases, enhancements in the processing capability and reliability of a storage system have been required. A RAID (redundant array of inexpensive disks) system meets that requirement. A RAID system which has a plurality of hard disk drives functioning to appear as a single hard disk drive to make the capacity larger and enhance the processing speed. In the case of disk drive failure, RAID system can identify and reconstruct the data stored in the damaged disk drive through the use of parity data thereby assuring high reliability.
The goals of making systems structurally simpler and the speed of data reproduction higher have particularly been desired in recent years. The technique of sharing a data bus meets such needs. Sharing a data bus reduces the number of buses in a system and makes a system structurally simpler. As a concrete conventional example there is "RAID Subsystem Construction using ATA Storage Means" (Electronic Information Communication Academic Society of Japan, Great Autumn Meeting, D-88, 1994). This is a technique in which data buses DD0 and DD1 (FIG. 1) are shared and crossbar switches are respectively provided between each hard disk drive and each data bus.
The technique of sharing data buses will be described in brief with reference to FIG. 1, which is a block diagram showing background art. Two data buses DD0 and DD1 are connected with four hard-disk drives (hereinafter referred to as HDDs) HDD0 to HDD3. The HDD0 and HDD1 of the four HDDs are connected directly to the two data buses DD0 and DD1. The HDD2 and HDD3 are connected through a crossbar switch to the two data buses. Each of the data buses DD0 and DD1 can be connected through the crossbar switch to both the HDD2 and the HDD3. That is, the two channels of the crossbar switch with four channels are respectively connected to the data buses DD0 and DD1 and the two remaining channels are respectively connected to the HDD2 and the HDD3, so arbitrary connection between HDD2, HDD3 and each data bus becomes possible. Also, the respective HDDs are controlled for writing data to them or reading out data from them through control lines of a data bus controller. The data buses DD0 and DD1 are further connected with parity generation means for generating parity. This parity generation means is connected to a parity buffer memory for holding the parity.
Since in this technique two data buses are provided, the parity can be generated effectively in normal operation in which there are no damaged HDD. However, in the case of HDD failure such that there is a damaged HDD, the parity operation for reconstituting the data of the damaged HDD takes several times as much time as normal operation because the parity operation requires the transmission of a large amount of data.
The reconstruction of data in this technique as failure occurred will be described further with reference to the case where the HDD0 had failed. First, the data stored in the HDD1 is transferred to the data bus DD0, a predetermined control signal is inputted to the crossbar switch so that the switch connects the HDD2 and the data bus DD1, and the data stored in the HDD2 is transferred to the data bus DD1. Based on the transferred data of the HDD1 and HDD2, the parity generation circuit calculates the exclusive OR operation of the transferred data, and the result is stored in the parity buffer memory. Then, the data of the HDD3 is transferred to the data bus, and the parity generation circuit calculates the exclusive OR operation between the transferred data of the HDD3 and the data stored in the parity buffer memory. Since this obtained data and the data stored in the damaged HDD0 are identical in value, the data of the HDD0 can be identified by these two transfer steps.
However, since two transfer steps are needed for the above-described reconstruction of data as failure occurred, the step of transferring data to a data bus will be carried out two times more then with the normal operation in which there is no damaged HDD. The above-described case involved four HDDs. As the number of HDDs is increased, more parity operations need to be done to reconstitute data of a damaged disk, so the number of times the transfer step and parity operation are performed increases. Therefore, a longer period of time is needed as compared with the normal operation. Further, since in fact, in accessing a plurality of HDDs, the seek time and rotational delay time have to be taken into consideration, a great reduction in the operational performance of the system as failure occurred cannot be avoided.
In the conventional system with shared data buses, the parity generation means is connected through the data bus with the HDD in which data has been stored, as described above. The number of transfers to the data bus is increased and the execution speed is reduced when a plurality of HDDs are accessed at the same time to do the parity operation, such as in an occurrence of failure. This is because as the result of having the data bus shared, the amount of data that can be transferred at the same time is reduced.
In view of such problems, it is an object of the present invention to provide a data storage system and a parity generation method for the data storage system which make transfer operations easier by reducing the number of times a transfer step is performed for parity generation and which are capable of performing the reconstruction of data at the time of an occurrence of failure with high efficiency and high speed.