Patent ID: 7606971

Claim:
An external storage apparatus, comprising: a plurality of temporary storage units that are managed in a redundant manner by data mirroring, and temporarily store data input from an outside source; a temporary-storage control unit that controls input and output of the data to the temporary storage units; a mirroring control unit that controls the data mirroring between the temporary storage units, checks, when performing the data mirroring, validity of the data stored in a temporary storage unit of a mirroring source, and executes, when the validity of the data has been confirmed, the data mirroring; a disk apparatus that includes a plurality of disks to store the data stored in the temporary storage unit; a disk-apparatus control unit that controls input and output of the data to the disk apparatus; and a check-code adding unit that adds a first cyclic redundancy check (CRC) code for checking the validity of the data and a first block ID indicating position information of the data to the data input from the outside source, wherein the temporary storage unit of the mirroring source temporarily stores the data that has been added with the first CRC code and the first block ID as code-added data, the temporary-storage control unit generates a descriptor including a length and address of the code-added data, causes the descriptor to be stored in the temporary storage unit of the mirroring source, and notifies the mirroring control unit that the descriptor has been generated, and the mirroring control unit includes: a descriptor controlling unit that reads the descriptor from the temporary storage unit of the mirroring source, which triggers the mirroring control unit to check the validity of the data of the code-added data stored in the temporary storage unit of the mirroring source by generating a second CRC code using the data of the code-added data, generating a second block ID using a block ID initial value in the descriptor, and comparing the first CRC code and the first block ID with the second CRC code and the second block ID.