The Linux SCSI Target Wiki
|Original author(s)||Nicholas Bellinger|
|Stable release||188.8.131.52 / July 4, 2006|
|License||Proprietary commercial software|
|This article needs a review and may need a cleanup or additional content. Please help improve this article to meet our quality standards. (2010-11-05)|
Unfortunately, many Linux SAN installations are lacking performance, even with high-end arrays, because the default Linux initiator Open-iSCSI is lacking a number of features that are essential to achieve optimal throughput and IOPS. These features include, most notably, a lock-less multithreaded architecture and iSCSI MC/S.
In addition, Datera has put together a number of performance patches for the Linux kernel. For instance, one patchset that was developed together with Intel Labs and IBM significantly reduced lock-contention in the Linux storage subsystem, which reduced CPU utilization by up to 20% and can increase IOPS by up to 50%. Datera provides these patches along with Core-iSCSI to optimize its SAN installations end-to-end.
Building and installing
- Compile Core-iSCSI
- Install it:
KERNEL_DIR=/usr/src/linux && make install
- Compile Core-iSCSI-Tools
- Install them:
- Core-iSCSI is then loadable via
iscsi_initiator_mod.ko, and the core tools rely on:
CHANNEL="0 2 eth0 192.168.55.6 3260 0"
DEVICE="0 0 1 diska"
The following third-party iSCSI target implementations have been validated, have pending TODO items, or are completely untested against Core-iSCSI. We'd be glad to hear feedback on your experiences with all Linux/iSCSI implementations! Note that this list relates to interoperability with Core-iSCSI, but feedback for Open-iSCSI is also encouraged.
Optional RFC-3720 Features
- Multiple Connections per Session (MC/S): Tested: OK
- Microsoft Client Tested: OK
- PyX/SBEi Client Tested: OK
- Cisco MDS 9216i: Tested : OK
- Adaptec/SNAP: Untested (SHOULD WORK) | (MC/S)
- Eurologic: Tested : OK
- Falconstor: Tested : PENDING (problems with I/O)
- IET: Tested : OK
- Infortrend: Tested : FAILED
- LeftHand: Tested : OK
- Netapp: Tested : OK
- Promise: Tested : OK
- PyX/SBEi: Tested : OK | (MC/S)
- MC/S : STABLE
- Login of connections on the fly
- Logout of connections on the fly
- Logout of connection on the fly by sending logout request on different connection
- iSNS Client : STABLE
- Microsoft iSNS Server : STABLE
- SBEi iSNS Server : STABLE
- Registration: /sbin/isns_register
- Deregistration: /sbin/isns_deregister
- Status: /sbin/isns_is_node_registered
- Network Portals: /sbin/isns_network_portals
- iSCSI Index: /sbin/isns_iscsi_index
- MC/S : STABLE
- Sanrad: Tested : OK | MC/S
- MC/S : STABLE
- MC/S on a V-Switch 3000 running 3.1.14 (?) software appears to work for only one of multiple advertised targets. All others fail to add the secondary connection.
- Interrupting the original connection did not appear to fail-over to the added connection.
- Interrupting the added connection instead has not yet been tested.
- Attempting to get non-production V-Switch 3000 to help core-iSCSI determine whether initiator or target is at fault. [NO UPDATE]
- Sanrad V-Switch 3000 ERL=2 supported with PyX/SBEi iSCSI Initiator (11/2006)
- Stringbean: Untested (should work)
- UNH: Tested : OK
- Wasabi: Tested : OK
The logic required to run Linux iSCSI for your root device and be able to shutdown and reboot cleanly ("diskless boot") involves the following:
- Core-iSCSI kernel threads that are providing iSCSI services SHOULD NOT be shutdown. Note that killall5 leaves kernel threads alone, but may cause problems with user-level iscsi daemons.
- Considerations for session reinstatement during shutdown while iSCSI LUNs (not limited to the root device) are being unmounted.
- Miscellanous failures during shutdown caused by
cmdsn_timeout, transport layer resets, and communication path PHY loss.
Most of this logic is distribution agnostic, but sometimes shutdown scripts do the 'network backed root device' (think nfsroot shutdown) that is required to make iSCSI initiators perform diskless shutdown properly.
Domain Validation Tool
The Core-iSCSI Domain Validation Tool (DVT) is primarly targeted to iSCSI vendors and developers for testing data IO using a CLI program accepting a block device as an argument.
The DVT executes a pre-determined number of loop iterations, each time negotiating a different set of RFC-3720 parameter keys until the configuration space has been exhausted. DVT will perform iSCSI Login, a script defined test operation, and Logout on a defined network portal. The sequence of steps is determined by which keys are enabled for testing, type, minimum and maximum settings as defined by RFC-3720.
SCSI domain validation is goverened by a T10 Working Draft:
- SCSI Domain Validation (SDV): SDV is an NCITS Technical Report describing testing techniques to validate the communication capability of the SCSI physical layer. Status: Released. 11/6/2001
- DVT sources and binaries:
core-iscsi-dv-v1.0.tar.bz2(requires Core-iSCSI Tools 3.5) and README.
- Core-iSCSI Tools v3.5 (iSNS client, scripts, manual pages, example configuration files and documentation):