Rules of RAID recovery

Securing the original configuration

Once you realized that you are dealing with a RAID failure and therefore you need RAID recovery, first of all write down what you know about the original array configuration:

Hardware configuration

Label the member disks with a marker. Along with the disks, label controller ports and cables. Subsequently, you can use this numbering to refer to a particular disk.

Logical RAID configuration

RAID recovery implies the recovery of logical RAID configuration which includes the following parameters:

RAID type,

number of member disks,

disk order,

block size, if applicable,

start offset for the data on the member disks, if available (most RAID controllers would not provide this information).

Logical RAID configuration is typically available either in RAID controller BIOS or in RAID monitoring and configuration software. In case you managed to determine all of these parameters, RAID recovery is completed for you. All the information below relates to the preparation to RAID recovery which aims to reconstruct missing RAID configuration parameters such as block size, parity position, disks and data order, and so on.

All of the above information must be collected so that you can return to the original configuration should the need arise.

Intermediate configurations

If you change the original array configuration during RAID recovery (swap the disks or cables, try different block sizes and so on), write down these intermediate configurations. If one of them turns out to work fine, you need to know exactly which one it was.

Preparing member disks for recovery

You need to disconnect disks from a controller. The disks connected to a RAID controller with incorrect parameters form two schemes of data ordering superimposed against each other. No RAID recovery software can analyze more than one scheme of data ordering simultaneously.

Similarly, do not try to rebuild an array using the same or other controller if you don't know correct the RAID parameters. For various array types it leads to the following:

For RAID 5. If a controller rebuilds parity using incorrect array parameters (so called "botched rebuild"), 1/Nth of data for an array of N disks will be lost. If an original array has one damaged disk by this time, it would then be impossible to recover data even in theory. If RAID has all the disks, theoretically you can recover remained data but practically, no RAID recovery software can do it.

For RAID 0. It may be difficult to recognize a small shift of stripe block, for example by one sector, and it is likely that a correction using chkdsk damages an array irreversibly.

Always create the disk image files from separate disks, rather than from an entire array because some parts (e.g. mirrors for RAID 10 and parity for RAID 5) are inaccessible unless you disassemble the array.

Preparing the environment for RAID recovery

The biggest problem in RAID recovery are the sizes of the arrays and capacity of data you have to deal with. Along with the sizes two more things grow:

the number of ports required, and

recovery time.

If you are lucky, you would need as much free disk space as the size of the files you want to recover. In the worst case scenario, you would need three times more of disk space to store simultaneously:

original disk images,

destriped image of the array,

recovered files.

Thus, for a RAID 5 of 12 TB (6 disks of 2 TB each), it would be needed to have 3x12 TB of disk space. Even using 3TB disks, 14 disks would be needed. One more requirement is that 8 or 10 of them should be accessible simultaneously. No desktop motherboard allows to connect 10 disks simultaneously. You can try to connect six disks directly to a motherboard and the remaining four via USB, but this kills speed. Another option is to connect six disks to one PC and four to another and then use a network but even Gigabit Ethernet doesn't provide reasonable speed. The best solution is to get either one more RAID card or PCI-E to SATA controller. Anyway, you should carefully consider a configuration that would provide all the necessary resources, both in terms of capacity and speed.