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
iSCSI future
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
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
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
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?
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
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
How did you configure your UNH target? Can you have the UNH target manage specific disks?