Software vs hardware RAID

So called "hardware" based RAID systems have been around for a while, but have always been expensive, while also offering hardly any options, for the price that you have to pay. I have a client who still uses two of these systems and while their performance is good, they certainly lack in features, compared to the "software" RAID system that comes with Centos. I have some RAID systems set up using the software that is built into Centos and they have been running well, with only the occasional email from some of the older systems, because of how old the drives are. One of the big problems that I have with vendor based RAID systems, is the strategy that they have with firmware updates. The use the firmware to control what features are available on a system and also to limit the size of the drives that will be accepted, which means that you have to buy a whole new box, when you want to have any extra features. These systems have a very limited control panel on the front of them, with a few more features being available via the serial or telnet interface, but you will still not have anywhere near the number of features that are available with the RAID system that is in Centos. There was a time when I was glad for these extra features, because I managed to end up with a degraded RAID array, that had a drive with bad blocks on it. In a vendor based RAID system, your data is usually gone if you have a disk go bad in a degraded array, because the interface does not have any extra array assembly options, with the manual also seeming to imply that this is the case. I ended up having to upgrade the system, with a new motherboard and case, with everything still working ok afterwards, because open source operating systems do not care about when the hardware changes. I then cloned the bad block drive onto a new one and assembled the array, then added a new drive so that the parity could be rebuilt. The end part was easy, but it was the middle part, where the extra assembly options were needed, because there was a time when the array would not assemble, due to the access counters not being in sync. To get the array back on-line, I had to recreate the array, with the original settings, because any other settings would cause the data to be wiped. The first handy feature that I made use of was the option to start the array in read only mode, so that the disks would not be written to, in case the settings were wrong. I then tried to mount the file-system in read only mode and it was ok, so I knew that the RAID settings were correct. The other handy feature that I used was the ability to create a RAID with missing disks, which doesn't make sense for a new RAID setup, but it certainly helps when you are trying to recover a damaged array. A final useful feature that the RAID system in Centos has is the ability to create arrays with a bitmap, that keeps track of which parity blocks are synced. This comes in handy if you have disks that are on different buses, which might then cause the array to be assembled with a disk missing. If the array has a bitmap, then the missing disk can be re-added, without the array having to go through a full re-sync. A full re-sync is also avoided if power has been lost to the machine unexpectedly.