A RAID controller performs a preemptive reconstruct of a redundant array
of disks while it is still fault-tolerant by determining the errors by a
first disk exceeded the error threshold, and reading data from a second
disk, and writing the data to a spare disk. The second disk's data is a
mirrored copy of the first disk's data. The controller also replaces the
first disk with the spare disk, after completing the reading and writing.
Additionally, while performing the reading and writing, the controller
writes second data to the first disk in response to a user write request
including the second data, thereby maintaining the fault-tolerance of the
redundant array. In another embodiment, the controller creates the data
of the first disk from second data read from two or more of the other
disks in the array and writes the created data to the spare disk.