«iSCSI has become the storage connectivity of choice for small business, with applications such as VMware VI3, Exchange, and MS SQL certified on it. It runs on standard Ethernet networks.»
iSCSI is a network protocol that allows remote disks to appear as local devices to computer. At a very high level, this schema falls under the rubric of Storage Area Network. The difference between iSCSI and NAS protocols that deliver file systems like NFS or Samba, is that that the shared iSCSI resources look like local devices to the system using them. This has some interesting consequences for diskless terminals and the like.
iSCSI is a client-server system. The server presents iSCSI targets (hard drives or files that pretend to be hard drives) clients that can use these resources. The clients are called initiators since they start the protocol. That is, servers with targets do not broadcast their services. iSCSI targets must be discovered by initiators.
When a client finds a desired target, it asks for authorization to use the resource via a login command. If that succeeds, a new SCSI devices appears on the client system that’s read for partitioning and provisioning. If the disk as already been initialized, then the resouce can be mounted like any other filesystem.
It turns out, configuring iSCSI on Ubuntu (and other linux distros) is pretty straight-forward. Let’s first set up a system that offers iSCSI targets. In this example, the target will be a file rather than a physical device.
Log into your Ubuntu machine. Become root (
sudo su -) of you
Create a disk image (
dd if=/dev/zero of=/iscsi.disk count=0 obs=1
seek=2G). In this case, a empty 2GB file is created at the root of the
filesystem. Install the iscsitarget package (
iscsitarget). Define the new target in /etc/ietd.conf. Edit the file
so that it looks something like:
Target iqn.2010-filer.network.local:iscsi.lun1 Lun 0 Path=/iscsi.disk,Type=fileio
The name of the target is pretty arbitrary, but you must have a unique naming convention for resources across your network of iSCSI targets. For more on this, see the Wikipedia article cited above. Since this target is the first one list, it gets Lun 0. This is analogous to how the first disk in a SCSI chain is listed by hardware.
Now, we need to twiddle some permissions. By default, iSCSI targets
are not published and allow no initiators. To enable targets to be discovered,
edit /etc/default/iscsitarget and set the ENABLE flag to “true”. Now allow
initiators to discover your targets by editing /etc/initiators.allow. Add
a the following line to the bottom of the file
Finally, we’re ready to start the target daemon. This is the process
that initiators talk to. To start (or restart it), type
Now we’re ready to configure the initiator. Simple install the following
apt-get install open-iscsi open-iscsi-utils. Now,
discover the targets. In this example, assume that the target machine is
iscsiadm -m discovery -t sendtargets -p filer.network.local
You should see a list of available targets offered by the filer. Select one (e.g. “iqn.2010-filer.network.local:iscsi.lun1”) and get authorized to use it:
iscsiadm -m node -p filer.network.local \ --targetname "iqn.2010-filer.network.local:iscsi.lun1" --login
Please note that I merely split the line for display purposes. If all has
gone well, you should be able to see the new device through fdisk:
fdisk -l. You may see a new and empty device called /dev/sdb (if
you already have one SCSI disk). This disk is ready for partitioning with
fdisk, provisioning with mkfs and mounting on your root filesystem.
When you reboot, your iSCSI disks should be available without using the iscsiadm tool. The daemon processed that do this are controlled by the /etc/init.d/open-iscsi script.
What I presented here is fine for local, trusted networks. There is zero security in this configuration. There are all sorts of authentication schemes for targets and encryption options for the iSCSI traffic. Also, using a fake disk (i.e. a file) as a target will not give you very good performance on the host. I leave all of these enhancements as an exercise for the reader.
UPDATE: Here a link to the Microsoft iSCSI initiator for Windows XP and above.