On Sat, 2005-06-25 at 04:01 +0200, Dag Wieers wrote:
Hi, Would it be advisable to use SW-RAID using 2 different SATA controllers. My system happens to have both a VIA VT8237 and SIL3114 SATA controller, and I thought for both performance reason and redundancy using both for a 2 disk RAID1 array would be best. But it's possible that SW-RAID does not like or cannot overcome problems with such a setup or that one of these drivers is known to have issues. Any insight is welcome :)
Let's talk "driver ... issues" then.
You just hit on one of the major reasons I don't use "raw" ATA/SATA channels. Remember, [S]ATA is "intelligent drive electronics" (IDE), and the so-called "controllers" are little more than PCI-to-ATA bus arbitrators. That means that the CPU and the drive itself must communicate properly, through that arbitrator.
If the history of [S]ATA in Linux (among other, open source OSes with their own drivers) is a testament, all sorts of controller register settings and the IDE "intelligence" on the drives themselves _regularly_ have issues. Nothing is more enfuriating than to do a kernel upgrade and be treated to a new slew of ATA chipset-drive timeouts, performance issues and, in some cases, even corruption.
That's why on servers or critical desktops, I splurge and get a $125 3Ware Escalade 7006-2 or 8006-2 card. That way the kernel is far removed from all sorts of IDE non-sense, and 3Ware can work with vendors to ensure compatibility between its ASIC-ATA and the drives. Just like proprietary vendor drivers for those "other" OSes. The actual IDE implementations in [S]ATA discs are particularly nasty and sometimes, quite often, non-ATA standards compliant in several ways.
Now let's talk "performance."
You're still pushing 2X data through your memory-I/O interconnect for software RAID-1. If you have an "intelligent" storage controller, then you only push 1 copy, and the card itself replicates to both channels. Now if you're really worried about controller failure, get 2 cards and put them on separate PCI[e/-X] busses (not just slots), then mirror across to minimize the performance hit.
BTW, there is a table and some figures on the "performance hit" of doing software RAID-1, RAID-0+1 and RAID-5 in the article "Dissecting ATA RAID Options" in 2004 April Sys Admin (not available on-line).
One figure shows how the "performance hit" of doing software RAID is _not_ the actual XOR operation. The _massive_ performance hit is when you have to read _all_ data from the drives into memory, and then push _all_ data to the CPU just to calculate the XOR. The "hit" is massive in the interconnect-I/O department, and _not_ the actual XOR.
Which is why it's far, far better to put the XOR operation on the card, where you're pushing just 1 copy of data (and it does everything locally, away from the rest of your system).