A general RAID conversion method is described for converting between
different RAID configurations. The method includes reading a unit of user
data from the source devices according to the source RAID algorithm,
writing the user data together with redundant data (if any) to the target
devices according to the target RAID algorithm, and from time to time
releasing portions of the source devices containing data that has been
converted. The conversion may be used to expand or contract the array, to
increase or decrease usable capacity, and to increase or decrease the
device-loss insurance level. Conversion may be performed on line
(dynamically) or off line. The flexibility of the method allows the
implementation of manual and/or rule-based RAID reconfiguration that
automatically adjusts system parameters based on user request and/or a
set of rules and conditions respectively. It may also be used to perform
self-healing after one or more devices in the array have failed.