You should back up all data BEFORE any attempt is made to reconfigure
a RAID device. YOU HAVE BEEN WARNED.
The author will give you no guarantee whatsoever, that this program
works in any specific way at all. It may well destroy all data on any
device connected directly, indirectly, or not at all, to any system
this software is used on. Please use this stuff with care, if you
decide to use it at all.
Ok, that said, let's see how to actually use it :-)
DESCRIPTION
raidreconf will read two raidtab files, an old one, and a
new one. It will then re-build your old array to match the
configuration for the new array, while retaining all data possible.
It can also be used to import a single block-device into a RAID array
(using more block devices), or export a RAID array to a single block-device.
raidreconf can, of course, only retain your original data if you
grow the configuration. If you shrink the configuration
from say, P bytes to Q bytes, raidreconf will retain
the first Q bytes of your original data, but everything from
Q bytes to the end of the old array (to P bytes) will be
lost.
Currently raidreconf can grow and shrink RAID-0 and RAID-5
arrays, and import non-RAID devices into a new RAID-0 or RAID-5.
The whole purpose of raidreconf is to be able to add disks to an
existing array, or convert it to a new type (eg. RAID-0 to RAID-5)
without losing data. raidreconf will move the existing
data around on your array, to match the layout of the new array.
OPTIONS
-h {--help}
Raidreconf will print a short help message, and exit.
-V {--verbose}
Raidreconf will print it's version information, and exit.
-o {--old} oldraidtab
Specifies the path name of the old (current) raidtab. NOTE:
raidreconf performs some tests to ensure that this configuration file
matches the raid superblocks stored on the disk, but there may be scenarios
where the two are in conflict, but aren't detected as such. Be very careful
to specify this file properly.
-n {--new} newraidtab
Specifies the path name of the new raidtab. After raidreconf
finishes, copy the newraidtab to the oldraidtab location, as raidreconf
doesn't perform this (potentially dangerous) operation.
-m {--mddev} /dev/md?
Specifies the name of the raid array to modify.
-i {--import} /dev/sd??
Specifies the name of the device to import from.
-e {--export} /dev/sd??
Specifies the name of the device to export to.
BUGS
Perhaps many. Well, the basic RAID-0 growth, shrink and import
algorithms seem to work, but there are lots and lots of consistency
checks and graceful error handling missing.
The RAID-5 algorithms are simplistic, with little optimization other than
that provided by the buffer layer. Conversions between non-RAID, RAID-0,
and RAID-5 all *seem* to work, but there may be some bugs left yet.
If an error occurs during reconfiguration, a power failure for example,
restore from backup (you DID make a backup, right?), and try again.
Although RAID-4 is not supported, and almost no one uses it, it would be
almost trivial to add.
REPORTING BUGS
Since this is highly experimental software, there are a number of known
bugs already. The author would of course like to know about bugs, but
at this stage in development you shouldn't waste too much of your time
trying to hunt them down. They're probably known, and maybe already
fixed in the author's tree.