It is 2015 and Intel chipset RAID controller (Intel® Rapid Storage Technology in my case with option ROM version 18.104.22.1686) still tends to lose RAID members after firmware upgrade. I have system built on MSI Z97 gaming 3 motherboard and I created RAID 0 volume on Z97 chipset ports from 4 SSD disks (it is used as system/boot disk). After MSI released new firmware for motherboard I installed it from UEFI BIOS. System restarted after firmware installation and SATA ports were reset to AHCI mode. After restoring SATA ports to RAID mode, RAID 0 array recognized only three SSDs as members and one SSD as separate disk not belonging to any RAID volume.
Partition table repair process
In this case nothing has been written to the drive so the repair is quite simple. One must destroy and re-create the array in the Matrix BIOS, then use a disk repair tool to find and revive the partition(s). Additionally, the drives’ master boot records may need to be re-written. The whole process takes about five minutes.
Part 1: Recreating the array in the BIOS (“Intel Matrix Storage Manager Option ROM”)
1. Note all of your array’s attributes(1) as shown during boot: array name, RAID level, member disks, strip size, and capacity. From the Matrix menu choose option 3 – Reset Disks to Non-RAID. Select all disks which are shown as being part of the failed array and follow the prompts(2). You will then be returned to the main menu and those disks will be shown as Non-RAID Disk or similar.
2. Now choose option 1 – Create RAID Volume, and enter the exact same settings as before (name, RAID level, member disks, strip size, and capacity). The array volume name probably doesn’t need to be the same, but I wouldn’t risk changing it.
Part 2: Recovering the partition tables in TestDisk (or other partition recovery software)
3. After rebooting, use a backup OS of your choice (on a removable drive, or installed temporarily on a different hard drive) to run Christophe Grenier’s TestDisk – a free, open-source recovery program. Others will probably work as well, but this one is fast and does the job very well.
4. In TestDisk, select your disk (which in this case is actually the array)(3) , then your partition type (in my case, it was correctly auto-detected as “Intel/PC”), and choose Analyse. Since the Matrix BIOS has invalidated the partition table information, you will not see anything listed. Now select Quick Search and follow the prompts. If all is well, you will quickly see your existing partitions appear. Once it lists them all, you can hit Stop to avoid waiting as it scans through the rest of the disk. If the detected configuration is correct(4) , press Enter to continue to the next screen, and choose Write to update the partition table as shown.
Part 3: Correcting the Master Boot Record
5. The Matrix BIOS has also invalidated your array’s MBR, so it will need to be retrieved or replaced. There are many ways to achieve this, and TestDisk itself has several methods to do so(5). I prefer to boot to my Windows 7 installation disc and use the “Repair your computer” option(6) . It will detect the invalid MBR and prompt you to fix it – note that you can’t alter Windows’ proposed changes, only apply or dismiss them. The resulting boot manager behaviour(7) can be viewed from the “Click here for diagnostic and repair details” link, if changes are necessary you can open a command prompt and use Windows’ bcdedit command to do so, or if you prefer a GUI (and can get into Windows) you can use NeoSmart’s EasyBCD, which is freeware.
Notes and troubleshooting:
(1) If all disks in the array are shown as “Offline Member“, the array information will not be visible. Booting with only one previously RAIDed disk plugged into the motherboard should cause these details to be reappear so you can write them down. (It will also change that disk’s status to show as “Failed“). Repeat with one disk from each array if you have several.
(2) There will be a warning that says all data will be lost. Ignore this, it is untrue (unless you don’t follow the rest of the steps, of course.)
(3) Depending which OS you run TestDisk from, the drive’s manufacturer may not be listed. Alternatively you may just not be aware of who makes the controller for your specific drive. In these cases it will be necessary to identify the correct entry by its listed capacity, which will be very close to that entered when creating the array in the second step.
(4) The partition layout detected in the first few seconds will usually be correct; I would not recommend changing anything unless you’re certain it is wrong. Keep in mind that installing Windows 7 often creates a hidden ~100MB partition on the system drive.
(5) See details at TestDisk Bootsector Recovery – CGSecurity.org.
(6) See details at Win7 Startup Repair Tool – About.com.
(7) Did you have multiple OS installations, some of which were already broken (or that required a different combination of hardware)? Murphy’s Law dictates that one of these will be set to boot as default. Verify the OS you want is actually the one being loaded before worrying that this fix did not work.
(8) All the TestDisk operations described are shown visually at TestDisk Repair Tutorial – CGSecurity.org.
(9) The above procedure was gleaned from this thread, and is originally credited to Yasin Abbas, aka YaZ.
Fixing UEFI boot
I’ve spent a lot of time trying to get my Windows 8 PC to boot again after cloning to a new SSD and try to summarise how I finally got it all working –
Firstly, boot from a UEFI Windows 8 recovery disk (CD/DVD/USB) – I found that the automated recovery process didn’t find the correct Windows partition, nor when I managed to add it to BCD settings would it make it reliably bootable e.g. using BCDEDIT I got it to find and launch the Windows partition but it refused to cold boot or would not “keep” the settings after a 2nd reboot or power off.
Go into the Advanced options and run the Command Prompt.
Enter diskpart to use the DiskPart tool to ensure you have all the right partitions and to identify your EFI partition – the key thing here is that your EFI partition is formatted as FAT32:
DISKPART> sel disk 0 Disk 0 is now the selected disk. DISKPART> list vol Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 E DVD-ROM 0 B No Media Volume 1 C NTFS Partition 195 GB Healthy Boot Volume 2 WINRE NTFS Partition 400 MB Healthy Hidden Volume 3 FAT32 Partition 260 MB Healthy System
Then assign a drive letter to the EFI partition:
DISKPART> sel vol 3 Volume 3 is the selected volume. DISKPART> assign letter=b: DiskPart successfully assigned the drive letter or mount point.
Exit DiskPart tool by entering exit and at the command prompt run the following:
cd /d b:\EFI\Microsoft\Boot\ bootrec /fixboot
Delete or rename the BCD file: ren BCD BCD.bak
Use bcdboot.exe to recreate BCD store: bcdboot c:\Windows /l en-gb /s b: /f ALL
The /f ALL parameter updates the BIOS settings including UEFI firmware/NVRAM, /l en-gb is to localise for UK/GB locale. The localisation defaults to US English, or use en-US.
Reboot and cross your fingers.