In my previous articles in this series, I shared some hardware options to help you build an inexpensive iSCSI target and went over your Windows software options for enabling this functionality. In this article, I'll address the Linux side of the same equation. I will provide a method by which you can convert a Linux server into an iSCSI target. As with my previous articles in this series, I don't anticipate these solutions being appropriate for large organizations' production environments, but do see them as more than adequate for test labs, or possibly even small-medium size production implementations, depending on what the implementation is.
Please bear in mind that this article is not designed to give you a step-by-step guide to creating and using a Linux iSCSI target. Rather, this article is designed to provide more of an overview of the possibilities. From there, you are left to discover the possibilities on your own. That said, where appropriate, I've included specific instructions to help you out.
Some readers have asked why you just wouldn't use NFS for your storage needs rather than iSCSI. It's a very good question. Some applications, such as databases, don't particularly like NFS. These same applications generally work flawlessly with iSCSI since an iSCSI-based disk appears to the system to be locally attached block storage.
Three possibilities for enabling Linux iSCSI
Ardis: If you're a fan of Linux and have studied iSCSI, you've probably heard about the free Ardis iSCSI target, which is software that converts your kernel 2.4-based Linux server into an iSCSI target. In today's kernel 2.6-rich world, the Ardis client is no longer appropriate. Besides not supporting the 2.6 kernel, the Ardis client requires that you make modifications directly to the kernel of your system, which, for less experienced or casual Linux users, is no easy task. However, if you're confident in your Linux skills, and have a need to use a 2.4 kernel, get more information about Ardis from http://www.ardistech.com/iscsi/.
UNH: UNH is an open source iSCSI target that bridges the 2.4/2.6 gap. The UNH-iSCSI project includes both a Linux target and Linux initiator software, allowing you, from a single source, to build out a complete Linux-based iSCSI infrastructure. The most recent version 1.6 release of UNH supports kernel versions 2.4.29 or later and 2.6.10 or later. A version 1.5 release was still available on its site as of this writing, and supports 2.4.x and 2.6.x kernels. So, if you can't upgrade your kernel to a 1.6-supported release, you're not out of luck! UNH is available for download from http://unh-iscsi.sourceforge.net/.
IET: The iSCSI Enterprise Target is an open source project that supports only today's 2.6 kernels. With its roots in the Ardis project, IET also adds other features to the Ardis client, including SMP support, and the ability to use the software without modifying your server's kernel. Before you get too far into IET, make sure your Linux system meets the minimum requirements; specifically, make sure you're running a kernel version of at least 2.6.13. Bear in mind that IET does not work on 2.4 kernels. The IET software is available for download from http://iscsitarget.sourceforge.net/. On the site, choose the download option and follow the instructions.
With any of these iSCSI targets installed on your Linux system, you should be able to establish a connection from any machine on which you have installed a standards-compliant iSCSI initiator, including the UNH-packaged initiator, Microsoft's iSCSI initiator, and the Linux iSCSI initiator, available for download from http://linux-iscsi.sourceforge.net/.
This concludes my article series on inexpensive iSCSI. You learned about some of your various hardware options as well as how to turn both Windows and Linux servers into block-serving, iSCSI targets. While on the Windows side, there is a dearth of open source (free) iSCSI target software, on the Linux side, your only real cost is hardware, since there are a plethora of open source options available.