iSCSI is a great technology. It gives you the ability to create SANs very cheaply and easily, without having to become a guru in fibre channel or put yourself into deep debt buying all the fibre equipment. By using easily available networking equipment you can add storage to existing boxes, even if you want to go crazy and do shared access, clustering or other high-end features.
A lot of vendors provide basically free iSCSI targets (there’s even one in Windows Server these days), and almost every OS has a free software initiator to connect to those targets. Yes, we can bang on about whether software or hardware initiators are better, but software are free and work so well that most iSCSI hardware initiator vendors have stopped bothering.
For the uninitiated, a target is the machine with the storage, and an initiator is the machine connecting across the network to that storage – simple (if you say it quickly but in reality it’s not that hard these days).
So now that I’ve oversimplified iSCSI, let’s look at it’s performance. It’s pretty good for most things, but in my experience suffers in the random read/write area – small read and writes carry quite a bit of network overhead etc.
So what can be done about that?
Hmmm … spend millions with a big-name vendor on a super-duper iSCSI target that you don’t need, or … cache the random reads and writes at the initiator end, so that those small, frequently used blocks don’t actually travel back and forth across the iSCSI network.
That sounds very attractive, and in fact it is very easy to achieve. Adaptec has a product called “maxCache Plus” – which is caching and tiering software, and is built into all 8 Series “Q” controllers (eg 8885Q). Now prior to this version of the software that works with these controllers, caching only worked on devices attached to the controller, which an iSCSI target definitely isn’t. However now with “maxCache Plus”, you can cache or tier any storage in your server, including iSCSI targets that are in fact disk drives sitting somewhere out on the network, but just appear to be drives inside the server.
Plug in an 8Q controller, connect 1 or more SSDs (you don’t even need to make them RAID – you can use them as single raw disks), then add caching to an exiting logical device (disk) – using what we call “CachedLD” (Cached Logical Device).
That logical device can be an iSCSI target, an on-board RAID array off the motherboard, or even a RAID array from a competing RAID card vendor … and did I mention that you don’t need to reconfigure the existing data on the server, or make any changes to the server configuration? That sounds too good to be true, but in fact it works seamlessly.
So you could in fact make your own iSCSI target using cheap hardware and pretty much free software to create a very cheap network storage solution – then accelerate the random reads and writes to that locally in your server, rather than spending a fortune in the iSCSI arena. Hopefully you’ll use an Adaptec RAID card in that iSCSI box, but more than likely you’ll use free Linux software RAID – what the heck, just do it
By the way … what happens if the SSD fails (in the case of using a single SSD) – absolutely nothing to your data – you just go back to original performance before installing caching – CachedLD cannot hurt your data.
Now that’s something to think about.