Over the 2015 Christmas break, I decided it was finally time to augment my system with SSD RAID for the operating system. I’m going to keep using my ancient 3ware HDD RAID for data storage because it works pretty well.
I started out by purchasing a pair of Samsung 850 EVO 500 GB SSD drives. I added them to my motherboard in the SATA1 and SATA2 positions. I booted and use the bios to configure the two devices as a RAID 1 Mirror.
Attempt to use Samsung’s Data Migration Tool
This was a fail. The data migration tool doesn’t work if the SSDs are configured as a RAID. It fails to detect the devices.
First Failed Attempt to Migrate Windows
My usual upgrade strategy when switching controllers is to do the following:
1) Boot up the PC with both controllers installed
2) Make sure the new controller and/or new drive is installed
3) Shutdown
4) Boot Linux Live
5) Build the partition table on the new drive exactly as it was on the old drive
6) Use ‘dd’ to copy the partitions from the old drive to the new drive
7) Unplug the old drive(s), reboot, and enjoy.
Unfortunately, this was a miserable fail. Windows immediately blue screened. I couldn’t get a boot manager. I couldn’t get it to safe boot. The message was some variant of this:
Your PC neds to be repaired. A required device is not available. You'll need to use the recovery tools on your inslallation media. IF you don't have any installation media, contact your system administrator or PC manufacturer. Press Enter to Try Again Press F8 for Startup Settings
Pressing Enter repeated the message. Pressing F8 brought up a new message about failing to load a file from the C: drive. I think what was going on was some kind of problem accessing the C Drive. Either it was missing a necessary driver, was confused about the location of the C drive, or something.
I tried ‘startup repair’ using a Windows 8.1 install disk. It failed to fix anything. I tried a ‘refresh’ using the install disk, it claimed the installation was locked (?). I tried repeating the whole process over again (linux live, dd, etc) and wound up in exactly the same state.
Second Attempt
My next attempt was to use a program called ‘AOMEI Backupper’. I was skeptical as I had never heard of this software before, but it was well recommended on some web sites, so I gave it a shot. I used the free version.
I started by first removing the partitions I had created. Then I ran the AOMEI tool and did a ‘system clone’. It took an unfortunately long time to analyze the disk, and then finally started copying. Copy time was a bit quicker than using ‘dd’ since the software only copied blocks in use rather than empty blocks. Overall time of analysis and copy took longer than dd though, because of the overhead of the analysis pass. The nice thing about the AOMEI program is that it was able to do this while the computer was live running windows. In theory you could browse the web or play games while doing the clone operation. In practice, you’ll probably find the computer pretty slow.
After the AOMEI tool completed, I shut down the old raid, and rebooted into the new SSD RAID. It made it much further into the boot process but still yielded a BSOD “Your PC ran into a problem and needs to restart. WE’re just collecting some info, and then we’ll restart for you. (0% complete)”. It was hard to read the whole thing because stupid windows doesn’t pause before rebooting. It flashes the message on screen and then reboots about a second later. It then has the same error, flashes the same message, and reboots. I think it would do this all day long if I would let it…
I booted into Windows 8.1 install media again, and tried ‘startup recovery’. It failed.
About ready to give up, I rebooted the machine again, and it booted fine. I don’t have a good explanation for this, except that perhaps booting into the install media and selecting ‘startup recovery’ caused it to add a necessary driver to the installation. Booting into safe mode is supposed to do that, so perhaps booting into the installation media did the same thing.
Changing the old GUIDs
Windows places a UUID in each volume, and bad things can happen if these UUIDs conflict. Since I wanted to continue to use the old HDD RAID for data storage, I wanted to make sure it didn’t have conflicting UUIDs in the volumes. I booted into a Linux Live DVD and did the following:
dd if=/dev/sdc1 of=/tmp/sdc1_superblock bs=512 count=1 cp /tmp/sdc1_superblock /tmp/sdc1_superblock_edited hexedit /tmp/sdc1_superblock_edited # For NTFS partitions, there will be an 8-byte value at offset 48. Change one of the bytes. # Then press CTRL-X to exit hexedit dd if=/tmp/sdc1_superblock_edited of=/dev/sdc1 bs=512 count=1
sdc1 was the System Restore Partition on the old RAID. I repeated the same with sdc2, which was my OS/BOOT partition. I made a backup of the original superblocks to a USB stick just in case anything went wrong.
Also, I used fdisk to turn off the ‘boot’ bit on the old RAID’s boot partition. Wanted to make sure we didn’t boot into the old RAID by mistake sometime. We can always flip the bit back on later if we want to.
Making sure it all works
After fixing the UUIDs, I booted the system with both the new SSD RAID and the old HDD RAID enabled. The key thing to check is that drive C is indeed on the new SSD RAID and we didn’t screw something up and cause windows to use drive C from the old HDD RAID. This will probably be obvious from the increased speed, but you can poke around in the Windows disk management tool just to be sure.
Making the old OS partition read-only
Just as yet another safeguard against the old RAID’s OS partition getting used, I decided to make the system partition readonly. This can be done using the windows ‘diskpart’ tool.
diskpart list volume # find the right volume number, let's assume it's "4" select volume 4 attribute volume attribute volume set readonly
UPDATE: Setting the volume read-only turned out to be a miserable failure. What I didn’t realize when I wrote this post, was that it didn’t just set the one partition to read-only, but set the entire drive as read-only. I’ll have to investigate a different way of making the partition read-only, perhaps modifying the access control lists for it.
Also, just a note in case anyone is wondering why I’m keeping the old OS partition around rather than reusing the space, I’m doing it merely as a precaution while I investigate the stability of the SSD RAID. My previous attempts at Intel RST were full of problems — slow rebuilds, etc — and I want an easy path back to the HDD RAID if the SSD RAID gives me trouble.
Expanding the new SSD RAID OS partition
I went to the windows disk management tool and tried to expand the OS partition (the new SSD was 500 GB; my old OS partition was only about 240 GB). The windows disk management tool refuses to expand a system partition.
I googled some more and found that AOMEI also makes a partition tool called AOMEI partition assistant. It has a free version, and the free version will indeed resize system partitions.
I resized the system partition and rebooted.
All is well now!