I had a 4 disk raid 5 array setup on an areca hardware controller and attempted to migrate it to a 5 disk configuration, part way through the process, the new disk failed. I shut the machine down to minimize any data loss issues while a new disk arrived. I also ordered 2 new disks to backup the (important) raid content to in case the recovery process failed. When the machine powered back on, the raid controller wouldn't export the volume and expose it to the OS so I was unable to access the data at all (bios marked the array as degraded). After a couple of reboots (attempting to get it to show up to the OS) a second disk dropped from the array. The disk itself is perfectly fine: when plugged in directly, the motherboard picks it up, however the controller refuses to recognize it.
Deciding this was far beyond my abilities, I sent it off to a professional company for assistance, their original quote of £200-400 quickly spiraled upwards into the £1000's and they were unable to produce an acceptable result eg not 100% recovered.
So now I'm left to do it myself. I expect many pessimistic responses as to my chances of getting anything back - the data is (currently) in a total mess, restoring it will take time but it is possible.
Here is where I am at the moment:
Things I don't know
The filesystem was ext4.
Can anyone offer advice as to how I go about figuring out the above and reconstructing the array. (easier methods or software that can do this would also be appreciated)
Deciding this was far beyond my abilities, I sent it off to a professional company for assistance, their original quote of £200-400 quickly spiraled upwards into the £1000's and they were unable to produce an acceptable result eg not 100% recovered.
So now I'm left to do it myself. I expect many pessimistic responses as to my chances of getting anything back - the data is (currently) in a total mess, restoring it will take time but it is possible.
Here is where I am at the moment:
- 4 new 2TB disks are on their way Next day delivery along with a disk cloner to make backup copies of the source disks from the original array.
- The state of the data on the disks is as follows: Part of the array is a 5 disk degraded array, part of it is a 4 disk fully working array and part of it is void space part of neither
array. - To recover I will need to rebuild the 5 disk array and the 4 disk array and stitch the results back together.
- No existing tool can do this automatically.
- Algorithm to find end of 5 disk part is straight foward, utilising a binary search compare A xor B xor C == D if true current stripe belongs to 4 disk array/void space otherwise its
the 5 disk array - Algorithm to find void space also fairly easy: 5 disk array has 4 data blocks per stripe, 4 disk array has 3 thus 5 disk array is 3/4 size (in terms of stripes) of 4 disk array.
Put another way the migration consumes 4 stripes for every 3 written. Void space is thus 1/3 the size of 5 disk array.
Things I don't know
- Stripe/block size the array was using. I assume I used the defaults which probably means 4k or 64k
- Space taken up at the start of the disk for the controllers meta data.
- Data/parity layout of the disks. (can probably be calculated using data from void space and new array (any blocks appearing in both are data any appearing only once are parity))
The filesystem was ext4.
Can anyone offer advice as to how I go about figuring out the above and reconstructing the array. (easier methods or software that can do this would also be appreciated)