I wouldn't trust that website because it doesn't even know what the difference is: "Fake RAID" is a host bus adapter (HBA) where "Hardware RAID" is a host bus controller (HBC). I also completely disagree with the article because HBAs live below the software stack so it's completely invisible to software that doesn't directly interface with the drivers. This isolates the RAID from all software environments and that's a huge plus, even if there isn't extra hardware facilitating the RAID.
Let's go point by point:
> Use RAID 0 or 1.
CPUs these days have gobs of power to perform parity checks. It's perfectly fine to use RAID5 on them.
>Can't nest RAID arrays.
>Create RAID arrays using whole disks only.
Gee, I wonder why: Redundant Array of Inexpensive Disks. This is exactly the point I was making above: software RAID isn't implemented below itself. It's just file system trickery to spread the data out over multiple drives. Legit RAID doesn't do that because the entire point of it is to prevent data loss from mechanical failure. What the author is advocating here is complicating RAID for no apparent reason.
>Pray your motherboard never dies or keep several identical ones on hand.
False. Like I said, AMD can detect AMD and Intel can detect Intel. My RAID1 migrated from a dual socket 771 board to a single socket 1151. I was amused because I didn't even intend to keep it. It was actually fairly difficult to purge the RAID1 completely from both drives (think I ended up erasing them). It's also hilarious that the author brings this up because software RAID locks you into the specific operating system that built it.
>Can't have hot spares and can't support hot swappable drives.
True on the first point but no one looking at a four drive RAID should care. I did RAID5+1 hot spare for a decade. The volume was starting to get full and I thought to myself: "why am I powering a drive that's doing utterly nothing on the 0.00000000001% chance that two drives will die at the same time?" Also, I have all that data backed up on an external so should that 0.00000000001% come to pass, I'd just shrug and order two replacement drives instead of one. So I did the sane thing and put that drive into the RAID and increased the capacity of the RAID by 50%. Seriously, if you aren't talking 8+ drives, it's not even worth considering. Even then, I seriously wouldn't promote the idea unless you have 16+ drives in the RAID. In which case, you wouldn't be using RAID 0, 1, 5, nor 10 anyway so this point is entirely moot.
Virtually all newer motherboards support hot plugging. You just have to tell it which ports to enable it on. Not that I would hot swap in the first place. I've been bitten by too many fans to know that's a terrible idea.
Like I said: Operating system RAID < chipset RAID (HBA) < PCIe AIB RAID (HBC)
There's a lot of software RAID advocates out there and I really don't understand it. Software RAID has more overhead than HBA RAID and a lot of arguments for it are nonsensical. Let me go point by point again:
In Linux, you can create RAID devices using any regular block device (including whole drives, partitions, regular files, other RAID devices, etc) with mdadm. You can mix and match RAID levels using RAID 0, 1, 4, 5, 6, 10 and linear (linear not really being RAID per se, but it's handled by the same framework). You can also arbitrarily nest RAID devices, so you can create a RAID 0 of RAID 6s of RAID 1s if that's what floats your boat. You can also physically rip the drives out of one machine, plug them into another, and your RAID array(s) will continue working as before, with no twiddling needed.
Only in Linux. If the drives are plugged into different controllers than the machine they came from and Linux doesn't support those controllers, it's boned.
mdadm of course supports all of the features you'd expect like hot spares, hot swappable drives (hardware permitting), but it also has several other useful features. Of particular note is that you can grow a RAID 5 array completely online (it calls this feature reshaping). That is, take an n drive array with n-1 capacity, add an additional drive and (completely online) end up with an n+1 drive array with n capacity. Furthermore, you can add in as many drives as you'd like and compose them into the same array, hanging them off the ports on the motherboard, ports on an expansion card, external drives, drives on the network...
"hardware permitting"
![Roll :roll: :roll:](https://tpucdn.com/forums/data/assets/smilies/roll-v1.gif)
Yeah, those are hardware features. Implementing them in software is pretty easy but, you see, if the hardware doesn't support it, it's not supported period. Software can never supercede hardware so why is software so fantastic?
Remember how I was talking about integrating the hot spare on my RocketRAID above? That was done entirely by the RocketRAID card and it continued to work on it regardless if the operating system was loaded or not. Hell, that RocketRAID DID integrate a hot-spare into the RAID while I was sleeping one time. You know what's fantastic about RAID controllers? They'll even do it while the computer is sitting at the BIOS screen--no operating system loaded at all. Oh, 0% CPU load rebuilding the array too but it was noticeably slow (because that's just the way it is with RAID5).
Yes, enterprise can use software RAID across multiple systems and cards but that's the only use-case where software RAID makes sense: after the hardware itself is redundant. As I said before, I see no sense in software RAID until you exceed 16 drives.
Well, that all sounds great, but what about performance? The good news is that performance of Software RAID is generally on par with Hardware RAID and almost always (significantly) better than Fake RAID. You might not have noticed, but in the last decade or two, CPUs have become very fast, greatly outpacing hard drive speed. Even with a full RAID 5 resync in progress with many fast drives, you're unlikely to see more than 25% CPU usage, and that's just on a single core, these days you probably have at least 4 cores. RAID levels that don't involve parity (0, 1, 10, linear) incur essentially no CPU load.
That's freakin hilarious because the bottleneck is the drives themselves. Software RAID is never on par with hardware RAID because the parity work doesn't even hit the system bus. "Fake RAID" is also faster than software RAID because it's happening at the hardware level instead of software. When software tries to do something, it has to go through hundreds of lines of instruction before it reaches the data. For example, software has to interpret its own instructions a read/write is requested, then it has to send it to the kernel, which interprets it through its file system, which invokes the driver, and finally read/write operations commence. Every step along the way, there are checks being made to ensure the requests are valid. File systems often have some error correction code too. None of that happens with "fake RAID" or "hardware RAID." To the operating system, all it sees is a single drive and the RAID accepts those commands and does what it needs to do regardless of how many drivers are under it. Software RAID is fundamentally inefficient.
You can tell a HBA from a HBC because HBCs have dedicated RAM.