Recently, I had a client who requested that I set up a disk array, because the company wanted to take advantage of the performance and fault-tolerant capabilities that an array offers. The problem was that they had a miniscule budget for the project, so most of the commercial RAID solutions on the market weren't an option for them.
As a solution, I decided to build a hardware-based array myself. This was hardly my first idea, though. Let's take a look at some of my original thoughts and why they didn't pan out.
What wouldn't work and why
My initial idea for a solution was to use a network-attached storage (NAS) appliance. After all, you can buy a NAS device with a couple of terabytes of storage from any electronics store for only a few hundred dollars. Unfortunately, with the small budget I had to work with, the vast majority of NAS appliances available offered only 100 Mbps connectivity, which would have been a big problem given the size of the files that my client intended to store.
The only NAS server with a gigabit Ethernet connection that I could find that met their budget was Linux-based, which was also a problem since the device did not support NTFS security. While it did offer file-level security, its built-in security mechanism required the creation of proprietary, device-level user accounts. Basically, it was completely incompatible with my client's existing Windows domain accounts.
So to keep the project on budget, I then thought about simply installing some SATA drives into their existing server's case, and then configuring Windows to treat those drives as a RAID array. I was hesitant to do that, though, for a couple of reasons.
For starters, configuring Windows to treat a series of drives as arrays would have a definite impact on performance. Logical arrays never perform quite as well as hardware arrays.
My other concern about using a logical array involved what would happen if the Windows operating system ever had to be reinstalled from scratch. Although this concern could may possibly be unfounded, I was worried that if Windows ever crashed and had to be reinstalled from scratch that the array would not be recognized and the data that it contained would be lost.
As I said, ultimately my solution to the problem was to build a hardware-based array myself. Although this probably sounds like an expensive proposition, it really wasn't. After researching available RAID controllers, I chose the SiI3124 controller from Silicon Image.
There are quite a few variations of this particular controller available. Some are designed for use with both internal and external drives. Buffalo Technology Inc. even uses an SiI3124-based controller with proprietary connectors to control some of their storage appliances.
Despite the many different versions, however, they all do basically the same thing. That is, they allow you to connect up to four different SATA drives to a single, PCI or PCI-X based controller. Figure A shows one variation of a SiI3124 controller. This particular controller is designed for use with external drives.
There were two primary factors that led me to choose the SiI3124 controller for this project, the first being price. You can buy a SiI3124-based SATA II – 300 controller with four internal ports for under $100. My second reason for choosing this particular controller was the driver software. Most of the vendors that offer SiI3124-based controllers offer a JAVA-based software package that makes setting up the array a breeze. If you look at Figure B, you can see what this software looks like in action.
As you can see, the configuration software gives you total control over the RAID group's configuration. The software also supports the use of multiple RAID controllers in case you want to create multiple arrays.
The nice thing about this is that even though you are using a JAVA-based utility to configure the array, the array is technically hardware based. This means that if you look at the array through the Windows Disk Management console, Windows sees the array as a single drive instead of four (unless you use a JBOD configuration). This alleviates the concerns I mentioned earlier in regards to using the Windows Disk Management console to define a logical RAID array.
In retrospect, going with a SiI3124-based controller turned out to be a good decision. The array performs well and has not experienced any problems to date, so I can confidently say that building a SiI3124-based array is a good option for any company that needs to build a RAID array on a limited budget.
ABOUT THE AUTHOR
Brien M. Posey, MCSE, is a Microsoft Most Valuable Professional for his work with Windows 2000 Server, Exchange Server and IIS. He has served as CIO for a nationwide chain of hospitals and was once in charge of IT security for Fort Knox. He writes regularly for SearchWinComputing.com and other TechTarget sites.
This was first published in January 2008