I've been doing some research on the possibility of live migration from RAID 5 to RAID 10 and I'm curious as to why it seems that most RAID controllers (particularly Dell's PERC controllers) don't support the notion of a live migration from RAID 5 to RAID 10.
I've worked a quick spreadsheet that shows that not only should this be a relatively easy process, but can be done in such a way where fault tolerance is never lost during any portion of the migration. The one requirement is at least 1 additional drives due to the lost storage efficiency... a 3-drive RAID 5 becomes a 4-drive RAID 10, a 4-drive RAID 5 becomes a 6-drive RAID 10 and so forth.
The migration of a 3-drive RAID 5 (composed on disks A, B and C) to a 4-drive RAID 10 (adding in disk D) can be done in a fault-tolerant manner in 4 passes. (This process can presumably be done more efficiently, with some possible losses to the fault tolerance, but my goal here is just to demonstrate that it can be done)
Starting with virtual blocks of data looking like this:
A B C D
- - - -
1 2 p
3 p 4
p 5 6
(p=parity; repeats every 6 blocks)
The first step then becomes to populate D as if it's the second drive in a RAID 0:
A B C D
- - - -
1 2 p 2
3 p 4 4
p 5 6 6
At this point, if A-C failed it'd be no different than a normal RAID 5 failure. If D failed, the only loss is you'd need to restart the migration.
Then to do the same for C as if it's the first drive in a RAID 0 set:
A B C D
- - - -
1 2 1 2
3 p 3 4
p 5 5 6
Drives AB are now a 'degraded' RAID 5 set. Drives CD are now a 'healthy' RAID 0 set. Any single drive failure can still be recovered from -- C&D can be rebuilt from the 'degraded' A&B, and A&B's state can be recalculated from the state of C&D
The process then repeats for B:
A B C D
- - - -
1 2 1 2
3 4 3 4
p 6 5 6
B is now a mirror of D, so either drive can cover for the other's failure. If C fails, A either has a copy of it already or has parity data to rebuild it.
And lastly, update the parity bits of A to match C:
A B C D
- - - -
1 2 1 2
3 4 3 4
5 6 5 6
which yields a RAID10 array
I ran this for a case of a 4-disk RAID 5 to 6-disk RAID 10 migration as well, and the process seems to hold just fine (requires 5 passes, as the expansion disks E and F can be populated on the same pass with no loss to fault tolerance.)
So the question is.... why don't any RAID controllers on the market seem to support this type of migration? (Are there any that do?) With "One Big RAID10" being advocated as the new standard for data storage, wouldn't it make sense to have easier tools to migrate besides the currently advised "Backup, recreate array, restore"?
More interesting is that, at least in the case of Dell's PERC cards, it's not even possible to migrate from RAID 0 to RAID 10, which seems like it should be no different than migrating from no RAID to RAID 1.