RAID: RAID 1+0 recovery and converting into 2 RAID 1 arrays on the same drives
I want to tell you how I converted RAID 1+0 into 2 RAID 1 arrays without any backup disks and on 2 different RAID controllers as well.
I used to have out of curiosity a RAID 1+0 array on 4 SATA drives using NVRAID controller from NVidia, built in the motherboard. Yes, I knew that that was not a hardware controller and a software RAID array on a non-dedicated computer was the evil, but I was eager to try.
In order to simplify, let us number the drives after numbers of controller ports they are connected to - drives #1, #2, #3 and #4 respectively.
Experience has proven that there was no particular use from speeding up RAID 0 (striped) array. The reason for that probably was large RAM (8 GB), most of which was used by the operating system as the disk cache.
Knowing that if anything cropped up it would not be easy to access data due to the presence of the RAID 0 (striped) array, I decided to switch over from RAID 1+0 to 2 RAID 1 arrays. The excellent reason - a motherboard replacement - cropped up at that time. This time I chose a motherboard with the Intel ICH10R controller I supposed that it wouldn't support the NVidia RAID array.
Yes, I do know that in such cases it is just recommended to copy data from the RAID in the old system (especially as the situation is not extremal), recreate a RAID in a new system and then copy data back to the RAID. But I had to transfer data firstly. And secondly it was very interesting to me to simulate the situation of recovering data from RAID, especially as the presence of the mirror, with a copy of which I wasn't going to do anything serious, was instilling confidence in the results.
Step 1 - splitting the mirror.
Let's suppose that drives connected to SATA ports #1 and 2 are one mirror copy and the drives connected to ports #3 and 4 are the other mirror copy. I shut the computer down, disconnected drives # 3 and 4 (in fact they were a reserve if my experiment failed), and started the computer. RAID BIOS showed that the array degraded, but not failed. That is "something wrong with the drives, however the data integrity is not disturbed." Actually "the array failed" would also give the required result (that would mean I chose the wrong drive pair); nothing bad would happen since the operating system did not boot yet.
So drives #1 and 2 were connected to the motherboard and drives #3 and 4 were unconnected.
The computer booted. Yes, everything`s correct, the drive is recognized, files are intact, the operating system does not react (as generally accepted in cheap RAID controllers) - it did not at least tell me anything about the RAID array that lost reliability.
Step 2 - copying the data:
Right at this point I wished it had been possible to connect the drives back (not in RAID now, but separately) and copy data from them still on old motherboard and old controller. But there were not more SATA ports besides those from which I disconnected the drives. And if I connected the drives back, then IMHO they would go back to RAID and would not be recognized as alone ones. Maybe I am not right, but at that time I didn't want to experiment like that.
I replaced the motherboard. Then I connected 2 drives from the old motherboard to the new one. Everything would seem to be good, but BIOS of the new motherboard RAID warned menacingly about the possible data loss. I decided to take no risks. So I still do not know whether RAID would have been properly identified from another controller. Although I might try, the more that the pair of disks that was making up a copy (and I knew exactly which one is the first and which is the second), had already been disconnected from the computer and could have saved if a problem cropped up. But at that point in time I was interested in software-based RAID.recovery.
So, I connected the drives to the new motherboard not in RAID-mode, but in AHCI-mode (there was such an option in the motherboard BIOS). 2 drives were recognized. The first drive was detected as using double space (which is normal for RAID 0), the second - as "unformatted". It is clear that the attempt to read data from the first drive in the normal way was unsuccessful.
I began to search for a program that could recover data from RAID arrays.
I found out that this could be done by using R-Studio utility, which had helped me previously in recovering data from hard drives, UFS Explorer utility, hitherto unknown to me but often mentioned on the Internet (with separately installed RAID-Builder module), and also frequently mentioned RAID Reconstructor tool (which should be used in conjunction with Captain Nemo or Runtime GetDataBack).
I liked the name of RAID Reconstructor, but did not like that it copied all data from a RAID array to a file. I simply did not have so much free space anywhere!
I relied on R-Studio, which I was familiar with and made a good showing until then with common single drives.
I launched R-Studio, built a virtual RAID array (it was visible only from within the utility). H'm, a buggy utility - it crashed at a certain execution sequence. But it wasn't anything, it worked at another sequence of pressing check marks. When creating a virtual RAID array you should "apply the changes immediately"; then, with the striping size and the order of RAID drives specified properly, you can easily and at short notice see the contents of the RAID array, without a long-time scanning. If the utility fails to show contents without scanning, it means that something is wrong in the architecture of the virtual RAID array.
So, the array is built, you can easily copy data from it. That's what I did, using two previously disconnected drives (i.e. the drives #3 and 4), making up a mirror copy of my RAID. It is clear that the copy ceased to exist, being zapped by new data.
The process of copying 1Tb (the size of my original array) is very time-consuming. With anti-virus deactivated - more than 6 hours (2-4 hours for either 500Gb drive). I decided to copy my data with the activated anti-virus and went to bed. It was a good thing that I did so; the anti-virus found something when copying from the virtual RAID array and immediately placed it in quarantine.
Even files were intact. I exulted at the simplicity of data recovery. I congratulated myself. I decided to start the building of new arrays.
The data from several large files was required. H'm. Some huge files could be read, some of them could not. I viewed the contents by using FAR - holy cats! - zeros in the beginning of the file, followed by the data. R-Studio showed the same absurdity through its built-in file viewers (or rather their hex dumps). Aw heck!, after all it never reported problems when recovering the data.
I didn't feel like to connect them back to the old motherboard - it was too boring, so I decided to try other RAID data recovery software.
UFS Explorer recovered data without a problem. No glitches, no empty files, which cropped up after using R-Studio. The workflow is the same as that in R-Studio - creating a virtual RAID array; if the sequence order of RAID drives and the striping size are correct, everything is simple and fast. Having created the virtual RAID array (which is visible only from the inside of UFS Explorer), you can immediately copy the data from it.
I copied everything. I checked. Everything is all right.
Step 3 - converting the RAID into 2 RAID level 1 arrays (that is, into two separate mirror arrays):
I destructed the RAID 0 from the drives #1 and 2, which had been a mirror copy of my former RAID 1+0. I created RAID 1 on the same drives; I could rest assured by doing that. The space was definitely 2 times less, but it was simple to recover data. To be more accurate, you do not have to recover anything - the 2 drives must contain the same data (except for the bad areas on the drive, for the preventive protection against which RAID 1 is required). I moved the contents of drive #3 to the array and thus emptied it.
I copied, just in case, the contents of drive #4 to drive #3. I'll build the second RAID 1 from them. I did not do this through the RAID BIOS; it warns for some reason.about data loss You can build an array preserving existing data.by using Intel Storage Matrix vendor tool. Since a little bit before the drives #3 and 4 had begun to contain the same data after the banal copying, it did not matter which of these drives would be a copy of the other when building the RAID.
It took me six days to complete all actions. For I had to go to work, too.