Features comparison between Linux SCSI targets
+ +As on April 2009
+ +| + | SCST + | STGT + | IET + | LIO v3.0 + | |
|---|---|---|---|---|---|
| General + | |||||
| Upstream kernel | - | Kernel part | - | - | +|
| Generic Target Engine | + | + | iSCSI only | Under development | +|
| Architecture | Kernel only | User space only + 1 + | Split + 2 + | Kernel only | +|
| Stability | + | + | + | Heavy development | +|
| Performance | ***** | *** | **** | **** + 3 | +|
| Zero-Copy | **** | *** + 4 + | **** | **** | +|
| Support for transports without expecting +transfer values (parallel SCSI, SAS) | + | - | - | - | +|
| User Interface | ProcFS | Custom | IOCTL/ProcFS | ConfigFS/IOCTL | +|
| Major features + | |||||
| Target drivers in kernel space | + | + | - | Under development | +|
| Target drivers in user space | + | + | - | - | +|
| Backstorage handlers in kernel space | + | - | - | + | +|
| Backstorage handlers in user space | + | + | - | - | +|
| Local access to emulated backstorage devices | + | - | - | - | +|
| Advanced devices visibility management | + | - | - | - | +|
| Support for Asynchronous Event Notifications +(AEN) | + | - | - | - | +|
| AEN for devices added/removed | + | - | - | - | +|
| AEN for devices resized | + | - | - | - | +|
| Bidirectional Commands | + + 5 + | + | - | - | +|
| Extended CDB (size >16 bytes) | + + 5 + | + | - | - | +|
| Descriptor sense support | + | + | - | - | +RESERVE/RELEASE + (Windows 2003 clustering) | + | + | + | + | + +Safe RESERVE/RELEASE implementation according to +SCSI requirements 6 | Safe | Safe | Not safe | Not safe | + +Safe implementation of Task Management commands +7 | Safe | Not safe | Not safe | Not safe | + +
| Persistent Reservations + (Windows 2008 clustering) | - | - | - | Under development | +|
| ALUA | - | - | - | Under development | +|
| Failover Clustering | + | ? | + | + | +|
| SCSI MIBs | - | - | - | + | +|
| Cluster Storage Integration | - | - | - | VHACS | +|
| Supported SCSI transports + | |||||
| iSCSI | + | + | + | + | +|
| Fibre Channel | + | - | - | - | +|
| SRP | + | - | - | - | +|
| iSER | - | + | - | - | +|
| Parallel (Wide) SCSI | + | - | - | - | +|
| SAS | Under + development | - | - | - | +|
| FCoE | Under + development | Under + development | - | - | +|
| IBM pSeries Virtual SCSI | - | + | - | - | +|
| Supported backstorage + | |||||
| Kernel side FILEIO | + | - | + | + | +|
| Kernel side BLOCKIO | + | - | + | + | +|
| User space side FILEIO | + | + | - | - | +|
| SCSI Pass-through | + | - | - | Single initiator only, not enforced + 8 | +|
| 4k sectors support in pass-through mode | + | - | - | ? | +|
| 4k, 2k, 1k and 512 byte sectors emulation +in modes, other than pass-through | + | - | - | + | +|
| CDROM emulation from ISO files | + | + | - | - | +|
| iSCSI Target + | |||||
| Architecture | Split + 2 + | User space + only | Split + 2 + | Kernel only | +|
| MC/S | - | - | - | + | +|
| Max ErrorRecoveryLevel | 0 | 0 | 0 | 2 | +|
| Bidirectional Commands | + + 5 + | + | - | - | +|
| Extended CDB (size >16 bytes) | + + 5 + | + | - | - | +|
| Support for Asynchronous Event Notifications +(AEN) | + | - | - | - | +Safe implementation of connections and sessions +reinstatement 9 | Safe | Not safe | Not safe | Not safe | + +
| iSCSI MIBs | - | - | - | - + 10 | +|
+
REMARKS:
+ +1. STGT has SCSI target engine in user space and small hooks in the kernel to interact with in-kernel target drivers.
+ +2. All iSCSI management implemented in user space and actual data transfers in kernel space without user space involved.
+ +3. The conclusion made by source code study only. LIO should have performance + on the IET level or slightly less, because of more processing overhead.
+ +4. Some zero-copy functionality isn't available from user space. For instance, zero-copy send to a socket.
+ +5. Not well tested, because at the moment there is no backend using this functionality.
+ +6. SCSI requires that if an initiator clears reservation held by another initiator, the reservation holder must be notified + about the reservation clearance. Otherwise, several initiators can at the same time change supposed to be protected by the + reservation data, which can corrupt them.
+ +7. After a task management command completed and corresponding response was sent to initiator, who sent that task management + command, all the affected SCSI commands must get into a state, where they can't affect following after + the tasks management response commands from this initiator. This is the safe implementation. + The unsafe implementation only marks all the affected + SCSI commands as aborted and then immediately send task management response to the initiator. This implementation only + guarantees that the initiator will never receive responses from those commands, but it doesn't + guarantee that none of those commands will get executed by backstorage *AFTER* any + SCSI command, which initiator will send after it received the task management response thinking + that all the aborted commands actually fully aborted. This could lead to a data corruption.
+ +8. LIO doesn't emulate all the necessary SCSI host functionality to allow to share a SCSI device + in pass-through mode to several initiators. It can only pass SCSI commands from initiator to + the SCSI device. This is safe only if there is only one initiator. This limitation + isn't enforced anyhow by LIO. You can find more technical information about that in + + http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html
+ +9. Connections and sessions reinstatement is, basically, a kind of Task Management command. + For instance, open-iscsi uses it as such in eh_target_reset_handler() callback. So, similarly + to (7) above, a safe implementation + must not accept SCSI commands from new connection/session until all the SCSI commands in + being reinstated connection/session get into a state, where they can't affect the new commands.
+ +10. SCSI-MIB (RFC 4455) - not supported; + SBE-SCSI-MIB - supported by LIO v2.6, not supported by LIO v3.0; + SBE-ISCSI-MIB - supported by LIO v2.6, not supported by LIO v3.0; + SBE-IPS-AUTH-MIB - supported by LIO v2.6, not supported by LIO v3.0 + +
+ ++
+
+ +
P.S. LIO has similar comparison +page. It is very much +wrong about SCST. I asked that page author, Nicholas Bellinger, to +correct the wrong items (see my e-mail), +but Nicholas Bellinger refused to do it. Moreover, he blocked my access +to the LIO mailing list, preventing me from tell that to the interested +people myself. After all our previous discussions and with his skills +and experience I can't believe that Nicholas Bellinger doesn't know that +SCST is a lot more generic than LIO and has zero-copy in all the same +places, where LIO has. So, that comparison page looks like rather a +deliberate cheating attempt. Definitely, SCST in all major +technical areas is so much superior over LIO, so Nicholas Bellinger started +attacking people's perception about SCST trying to inspire them the +opposite.
+ +