Linux: iSCSI Target Implementation

Submitted by Jeremy
on October 16, 2003 - 8:12pm

Roman Zippel announced the first public release of a new Linux iSCSI Target implementation for the 2.4 stable kernel, available under the GPL. He describes the new implementation as quite usable, though it does not yet fully support all the requirements in the iSCSI specification. In describing the project he notes that it is partly implemented in the kernel to provide direct access to the page cache. He explains, "the user space daemon takes care of session startup, cleanup and discovery and the kernel module takes care of the iSCSI requests and disk IO."

iSCSI stands for 'Internet Small Computer System Interface' and is a family of transport protocols for SCSI that work on top of TCP. The proposed standard was developed by the IETF and is ideal for storage area networks, aiming to enable a location-independent method of data storage and retrieval. The IETF draft explains that "SCSI is a client-server architecture. Clients of a SCSI interface are called 'initiators'. Initiators issue SCSI 'commands' to request services from components, logical units, of a server known as a 'target'. A 'SCSI transport' maps the client-server SCSI protocol to a specific interconnect. Initiators are one endpoint of a SCSI transport and targets are the other endpoint."

Roman's full announcement email follows, complete with much more information about the current status, and plans for the future. Those looking for an iSCSI initiator may also want to check out Cisco's GPL'd Linux-iSCSI Project.


From: Roman Zippel [email blocked]
To:  linux-kernel, [email blocked]
Subject: [ANNOUNCE] iSCSI target implementation
Date: Thu, 16 Oct 2003 15:31:16 +0200

Hi,

I'm proud to announce the first public release of this iSCSI target
implementation. It's already usable, but it doesn't implement everything
yet what is required by the iSCSI spec. The missing parts shouldn't be
that difficult to add (I just didn't need them so far). Other more
interesting parts of the spec (e.g. session recovery) are not
implemented because I had no client to test it with (although recent UNH
releases seem to support this now). It was mostly tested with Cisco
iSCSI initiator driver, but also with with the MS initiator driver. You
can download the driver from http://www.ardistech.com/iscsi/ , the
README should have all the information to configure and build the
driver.

This target driver is partly implemented in the kernel, the user space
daemon takes care of session startup, cleanup and discovery and the
kernel module takes care of the iSCSI requests and disk IO. There are a
few reasons to put part of it into the kernel, the main reason is to
have direct access to the page cache, this is also a main difference to
other available target implementations, which don't use the page cache
directly. User space has not that fine grained control (yet) and had to
use a lot of threads (the kernel module currently uses 2 threads per
target and 1 per device). Part of the problem could be solved with async
IO, another part is to be able to control what is in the cache (this is
somewhat related to the recent direct IO discussion). So this also an
experiment of what is needed if it should be ever moved to user space.

Anyway, while it's in the kernel, there are also some interesting issues
for the kernel-user space communication. Right now it's a proc only
interface (no sysfs as it's 2.4 only, no evil ioctl, but someone will
kill me for the macro abuse :) ), but it should be rather easy to
replace it with something else. Perfomance isn't not that important at
the moment (but not completely unimportant, if a lot of information has
to be read from the kernel, e.g. at startup). More important issues are
error reporting and event handling, which could benefit from a better
integrated interface. So this driver is also intended to experiment with
a few things, if anyone is interested I can explain it further.

Further development will depend a bit on the feed back. This is an older
project and we thought about for a while and since we have no immediate
need and not the resources to develop it alone, we decided it would be a
good idea to release it completely under the GPL. So I updated it to the
latest spec and fixed some of the worst embarrasments. If there is
enough interest, the development will continue, but without some help it
will be rather slow. :-)

bye, Roman

Related Links:

iSCSI future

Anonymous
on
October 19, 2003 - 9:21pm

I'm eager to see the future of this technology.. fibre channel has a big head start, but I think that Cisco will help push iSCSI to displace all the fibre channel sans out there.. just give it a few years. Brocade should be scared.. It would be nice to make my own storage network router via iSCSI on a Linux box with a bunch of SATA disks.

Thanks for the effort, Roman

Anonymous
on
October 26, 2003 - 12:59pm

Thank you, Roman, for your efforts. I think this technology is definitely needed for those of us needing low cost SAN. It sounds like your technology is the critical step in allowing us to build low cost SANs based on inexpensive mobos we can pick up on ebay for a song and with linux which is even cheaper than that.

convert linux server to cheap FC RAID system

Anonymous
on
December 4, 2003 - 3:33pm

There is another product mayastor available for download from http://www.pavitrasoft.com that let you setup low cost SAN disk array with Linux. Get inexpensive FC HBAs from ebay amd make disk array of block or loop device. Finally storage is getting to be commodity item.

Interop with Win iSCSI driver

Anonymous
on
December 20, 2003 - 5:56am

I had a good interop between Linux target and Win iSCSI initiator running on single Xeon 2.4Ghx processor, and recorded min. 50MB/s in terms of IO Meter. Unfortunately, IPSec tunnel could not be established. I wonder if ESP will be implemented in the near future.

Jeremy W.

which windows version and initiator version are u used?

Anonymous
on
March 20, 2004 - 11:58pm

I tried initiator-x86free-1.03 and initiator-x86chk-1.03 on my Win XP professional, both sucks.

Using iSCSI and TOE Accelerators to improve network tranports

Anonymous
on
April 21, 2004 - 10:39pm

As I tried Win iSCSI initiator connecting to UNH iSCSI target between 2 servers with Xeon processors plugged, the utilization of CPU was upwards of 98%. We got a much better performance and a lower consumption of CPU by using hardware iSCSI and TOE.

TOE and iSCSI HBA are needed.

How did you configure your UN

Anonymous
on
July 2, 2004 - 8:19am

How did you configure your UNH target? Can you have the UNH target manage specific disks?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.