So, I've decided to skip the full-on 'completed' status and just start doing things as they come, which has led me to this post. I've not mentioned before, but one of my longer term projects I plan to finish is a homebrew storage array. More particularly, a storage array that presents iSCSI targets. The only cost I intend to budget for in this setup is that of the hardware, which given my goal, and preliminary choices, is more than enough. That being the case, let's start with the base spec, and weigh the software options.
Base Hardware:
Case:
This was one of the important choices, as I want a case with hot-swap caddies. After a cursory review, I settled on a NORCO RPC-3216 since it provides space for up to 16 drive caddies at a reasonable price. Cost here: $329.99RAID Controller:
I need a controller capable of managing 16 drives with ease, and no performance bottle neck. My choice? Areca ARC-1880ix-16-4G. Expensive yes, but extremely powerful. This may end up changing though. Cost here: $1199.99 - The most expensive component.Drives:
This wasn't something I'd quite decided on as yet, but will very likely be either 2 TB or 3 TB drives. Also, I won't be filling it out to all 16 bays just yet.Platform:
For motherboard, CPU, and RAM, again not decided. With the RAID controller chosen, I could probably get away with basic desktop class hardware. I would probably end up with a low-end server-class build though, hopefully aiming for a motherboard with 4 NIC ports. A dual-core CPU should also suffice, but my software options may have me readjust the hardware setup altogether. I also don't see any need for more than 4G-8G of RAM.
Software Options:
Before even purchasing hardware, I had started testing using VMs to evaluate my software options. There are quite a lot out there that are free, however each has their advantages and disadvantages.
Linux
My first choice was originally a Linux distribution. Something basic, ultimately I'd probably go with Gentoo. I did some testing, and was able to get basic iSCSI functionality, which worked fine. I could easily back my targets with the raw block devices presented to the OS, and if need be, could probably move them from system to system no problem. I did some testing involving Windows Server 2008 Failover Clustering, and found that the default iSCSI stack in the kernel isn't compatible, and actually lacks a lot of functionality you find in most prebuilt SANs. This was supposedly addressed with SCST, which I tested, but still had no luck. This isn't to say I will use it for failover clustering, but I like knowing that I have a feature rich stack. Linux got ruled out.
OpenFiler
My next choice when I needed to actually test the failover clustering. This was supposed to have a properly functioning implement using the SCST framework. Tried it, it didn't. Another one bites the dust.
FreeNAS
FreeNAS is originally intended to provide NAS, and actually store files and such locally, leaving the FreeNAS host to manage the filesystem completely. Not something I originally intended to use, until I learned that it also has iSCSI support. I gave it a try for my failover clustering tests, and it worked. FreeNAS remains a viable option, though setting up an iSCSI target was a little more involved, not a big deal. If needed, since it's based on FreeBSD, I could simply build up my setup using FreeBSD. This one stays on the back burner.
Solaris
My most recent testing, and what prompted this article. I setup a VM for Solaris 11 just to play around with it originally, then got to thinking about what purpose would I have for Solaris. The biggest benefit I could see would be ZFS, which is not easily available in Linux, and a few revisions out of date in FreeBSD. Being that ZFS was built ground-up for data integrity, it doesn't seem like a bad way to back iSCSI targets. Better yet, with Solaris 11, the SCSI stack in general (iSCSI, FC, FCoE, etc) are all managed through COMSTAR now, a common method of managing SCSI devices. I threw together a few test VHDs in VMWare, fed them to Solaris, setup my pools, and backing volumes, and eventually created the necessary target structure. Testing against failover clustering did present one validation issue, which after running the test about 5-10 minutes later, cleared up. I think that may have just been a small hiccup. The downside to this choice? With the RAID controller I chose, it's relegated to either providing disk passthru, or JBOD devices. Since ZFS can handle the data redundancy, it makes the RAID controller a rather expensive purchase. Also, since the parity calculations, and striping occur at the OS level, I'm likely to need a bit more memory, and a bit beefier of a processor. Still, everything does seem to work. Keep an eye out for a Wiki article where I'll have a guide for setting up multiple iSCSI configurations.
And that concludes my rather windy post for the time being.