Wednesday, October 20, 2010
Fake RAID versus software RAID with MSWindows
Would it be better (more reliable or faster) to use my motherboard's hardware RAID support? My motherboard is an older nVidia nForce 680i SLI, which is not the most stable of motherboards, and I'm not sure how trustworthy its RAID1 configuration might be (or if Win7 could even detect and install onto a hardware-mirrored volume). Also, the performance characteristics of RAID1 are rather different than RAID0 or RAID5, and I'm wondering if Win7's software mirroring might actually be faster than hardware RAID1 (for example, I'm more of a Unix admin when I have to wear the sysadmin hat, and I've had great success deploying ZFS; most hardware RAID1 implementations have to read both disks and compare results to look for data errors, but ZFS can read from only one disk in the mirror and just use the built-in checksum, meaning it can have up to 2x the number of reads in-flight, as long as there's no data corruption).
Edit: Okay, my question about whether Windows 7 can do software mirroring has been answered, and it can. I'm still unsure whether Windows software RAID or my motherboard's hardware "fake RAID" function is a better choice, though. Remember, I'm only interested in mirroring -- not the more complicated striping or parity operations that generally show the poor performance of crappy motherboard RAID solutions.
But ZFS isn't RAID1 or RAID0 or RAID5.
Windows 7 software RAID1 is software RAID1 not some other technology Microsoft is calling RAID1 so unless they've found a much better algorithm than is on your hardware RAID controller, your hardware RAID controller will probably perform better than the software RAID. However software RAID allows you more portability between different hardware setups with the same drives.
To the best of my knowledge setting up software RAID in Windows 7 can only be done after install, but it's a painless process even on the boot drive (convert the disk to dynamic under the disk management snapin, reboot, setup mirror)
Win 7 probably requires you to convert to dynamic volumes to do mirroring. In the past, this has introduced all kinds of headaches due to compatibility with other disk utilities. Also, dynamic volumes are very easy to mess up, if you ever have to do disk recovery operations. I know this from personal experience. I usually avoid dynamic volumes "like the plague". Mirroring on your motherboard usually retains a compatible structure on the disk, meaning as long as your onboard sata drivers are also loaded in the OS, you can move either of the mirrored drives to the regular sata port, and boot into the OS just fine, so your not really sticking your neck out in terms of recoverability. Performance wise, they are probably both about the same: both use your CPU to do all the work. Finally, the motherboard raid might have additional useful features, such as automatic e-mail notification if a member fails, which comes in handy....
"But ZFS isn't RAID1 or RAID0 or RAID5." Nope, it's all three in one :) So Win7 software RAID will probably perform worse than even a crappy motherboard RAID controller. That's good to know.
Motherboard RAID controllers (Intel, nVidia or AMD) are not true hardware RAID controllers. They rely on software drivers to implement the RAID functionality.
Whether or not they are faster than Windows 7's implementation depends on how good a job Microsoft has done
Onboard desktop RAID controllers do not have a battery-backed cache, dedicated RAM, or a dedicated XOR processor. This offloads almost all of the work to the CPU, as does Windows software RAID. In this regard they perform almost identically. The difference if that if your motherboard dies, your Windows software RAID can be moved and imported on a different machine, your psuedo-hardware solution cannot be moved, except to an identical fake-hardware controller
That's right about battery-backed cache and dedicated RAM, although the dedicated XOR proc depends on what chipset is used. some chipsets are worse than others. if you want real HW RAID you need an add-on PCI(e) card anyway. but as MarkM says, the upside to OS-level software RAID is portability to different hardware.
It really depends on the motherboards hardware raid. Alot of cheaper (read: no-server) motherboards require you to install software raid drivers within windows anyway.
Also, a hardware raid will be handled using your motherboard, and therefore can become tied to your motherboard. If your concerned about the stability of your motherboard already, I would avoid its RAID like the plague.
In this circumstance, unless your motherboard has actual hardware raid (not the standard fake hardware raid) you are much better off sticking with w7 raid. Even when considering pure hardware raid vs. software raid there are trade-offs with each system, and imo hardware raid is only necessary in a production environment.
Some small things to consider:
The likelihood of whether you will ever need to run things like disk imaging software: some can't see through a hardware RAID controller when it is enabled.
You just purchased two drives - presumably identical drives - almost sequential serial numbers? If so and there is a problem with the batch, both may fail simultaneously. RAID won't buy you anything under this circumstance. You should buy them seperately - hopefully from different batches.
When RAIDs break, check if you need to be out of the OS to rebuild the mirror. On the software mirrors I have seen, you can boot, run the OS and remirror in the background, but it slows you down (obviously as it is reading good drive and writing to the mirror.) I'm not sure what would be required for this hardware RAID.
I have other data backup plans for important data. If the data on this array were to vanish, I'd be upset and unhappy -- but I wouldn't be screwed, because everything on it is either disposable or replaceable. – kquinn Nov 1 '09 at 5:07
I've used motherboard RAID for a couple of years now. Horrible reliability of the controllers but remirroring has always run in the background with Windows running. – Loren Pechtel Dec 11 '09 at 5:57
On some of the systems I've worked with, the hardware raid had to be accessed through its own pre-boot program. While booting, it would come up with a special keystroke you pressed and it had a mini program to init a new hard drive, raid it, break the raid, recreate... but it was all before the boot. Those were older systems though.
You can setup mirroring to happen (which is like Raid 1) but not really by doing the following - with a pitfall.
1) You have to install Win 7 in order to mirror - so given that you have done that
2) I typically like to partition off my Disk 0 into a C and D where C is for OS stuff and programs and D is for Data. Each Drive Disk 0 and 1 must be set to Dynamic. (DO NOT format Disk 1 - leave unformatted - otherwise the next step will not work).
3) Right Click on Drive D from Disk 0 and left click on Add Mirror - when you do this you will see Disk 1 appear and click on it. The software found Disk 1 as it is completely unallocated and see's it as a free drive to mirror on.
4) Click okay and in a few moments you will see the same drive space allocated for Disk 0 Drive D on Disk 1 and it names it the same - Drive D and Resyncing with a percentage showing progress. This can take some time even with no data to Sync.
When the Resyncing is complete - no further action is needed - except you might have to rescan the Drive by left clicking it and choosing Action from the menu then Scan Disks - takes just a moment and your done.
The ONLY problem is - you can't Mirror Disk 0 - Drive C! I'm so frustrated - it attempts it but gets only so far and then you get a failure message on the Disk 0 area and sometimes you get Virtual Disk Manager Error "No Extents Were Found For The Plex" WTF is that! I have tried researching and perhaps not enough but neither MS or Western Digital could help me. They don't know what it means and perhaps Win 7 is not quite ready yet to take advantage of the Driving Mirroring capabilities.
Having had my primary IDE controller crash on a running Windows system with Software RAID -- and with my disks on separate controllers -- I'm sold on that being the right choice. When the IDE controller crashed, the visible result was a little triangle warning icon in the System Tray notifying me of the problem, but otherwise the system continued running normally. It was really quite impressive once I realized the magnitude of what had happened.
Compare this to the case with Hardware RAID where, if you lose the controller, you've lost both disks and the system obviously crashes.
I had no problems mirroring C: either. And I did have the main disk of C: fail and Windows 7 did keep right on running until reboot. Now, in order to reboot, I had to then scroll down and pick the boot entry for the other disk (Secondary Plex) to boot back up. Disk Management showed C: but in failed redundancy. I got a replacement disk and installed it. I had to break the mirror by right clicking on the Mirror Volume C: (not the physical Disk 1) and “Remove Mirror”. Now I could add a mirror back to C: and picked the new Disk 0. After resync it showed healthly. But, with ONE caveat. For whatever reason, it did NOT rewrite the boot sector to the replaced Disk 0. When rebooting, when I pick the original boot entry for Disl 0 (the default) it does not boot or even display boot menu. So, the mirror rebuild did not apparently add back the boot sector. I could still boot the Disk 1 (Secondary Plex).
Is there some command/util on Win7 that will re-init the boot sector???