ISCSI target driver iSCSI-SCST
ISCSI-SCST is a forked (with all respects) version of IET with updates to work over SCST as well as with many improvements and bugfixes. The reason of fork is that the necessary changes are intrusive and with the current IET merge policy, where only simple bugfix-like patches, which doesn't touch the core code, could be merged, it is very unlikely that they will be merged in the main IET trunk.
ISCSI-SCST has the following major advantages over IET. They are summarized on the Comparison page.
- ISCSI-SCST uses full power of SCST core, hence has the following additional features:
- Pass-through mode with one to many relationship, i.e. when multiple initiators can connect to exported pass-through devices. For instance, in this mode you can safely export your parallel SCSI tape or tape library on your iSCSI net and multiple initiators can share it without risk of data loss because of the shared usage. Existing outdated "rawio" patch for IET supports only non-enforced 1:1 relationship, so it is unsafe to use it in multiple initiators environments.
- More advanced devices visibility management, when different initiators can see different set of devices with different access permissions from the same target.
- O_DIRECT, i.e. "BLOCKIO on files", mode, which has all advantages of BLOCKIO, but also supports files on file systems. Sometimes, in the appropriate cases, this mode can make performance difference in 100% or even more.
- 4KB blocks eliminate abysmal write performance caused by misaligned partitions.
- Virtual CD/DVD-ROMs.
- Ability to create target devices emulators in the user space.
- Ability to create multi-transport SCSI targets, which can export (possibly, the same) devices over multiple transports.
- ISCSI-SCST has many code improvements and cleanups, including stability and iSCSI RFC violations fixes. IET works well on "fast" paths and regularly used code branches, but in many corner cases it has various problems, from simply ignoring error processing, as it is for memory allocations, and crashing itself with BUG() macro, as it is for malformed packets from initiators, to possible data corruptions, because of, for instance, unsafe task management or sessions reinstatement implementations.
- Due to reworked I/O architecture and SCST backend iSCSI-SCST has much better performance in many cases and has potential for future improvements, like zero-copy with Linux cache FILEIO. In many tests iSCSI-SCST outperforms tuned for best performance IET on more than 100%.
If you are an IET user before installation carefully read README files of both iSCSI-SCST and the SCST core. Especially pay attention that now the LUN information for iSCSI-SCST is configured not using iscsi-scstd.conf file in /etc, but using corresponding SCST facilities. This is because now the responsibilities are divided (as it should be) between the target driver (iSCSI-SCST) and the SCST core: target driver is responsible for handling targets and their parameters, SCST core is responsible for handling backstorage.
The latest stable version is 1.0.1.1. Requires Linux kernel version 2.6.16.x or higher and SCST version 1.0.1.1 or higher. Tested mostly on i386 and x86_64, but should work on any other supported by Linux platform.
You can find the latest development version of this driver in the SCST SVN. See the download page how to setup access to it.