Features
From Linux-iSCSI
This Features overview compares LIO with Sun COMSTAR and other Linux open-source targets.
Contents |
Open-source targets
Mainstream
The two main open-source multiprotocol targets in the industry are:
- LIO (linux-iscsi.org) is the standard open-source multiprotocol target in Linux by RisingTide Systems. It went upstream into the Linux kernel with version 2.6.38.[1][2][3]
- COMSTAR (Common Multiprotocol SCSI Target) is a software framework that enables any Sun OpenSolaris host to serve as a SCSI target that can be accessed over the network.
Linux out-of-tree and legacy
In Linux, there are also three out-of-tree or legacy targets:
- IET (iSCSI Enterprise Target) is an iSCSI only target that is now unsupported. Its aim was to develop an open source iSCSI target with professional features, that works well in enterprise environment under real workload, and is scalable and versatile enough to meet the challenge of future storage needs and developments. Albeit this target was quite popular, its user base has been shrinking because of its lack of support and modern features.
- SCST (SCSI Target Subsystem) is a generic SCSI target engine for Linux that has been developed by a team in Russia. Its iSCSI implementation is an improved version of IET. SCST has made Linux usable as a storage operating system.
- STGT (SCSI Target Framework) has been the standard SCSI multiprotocol target in Linux. It aimed to simplify SCSI target driver creation and maintenance. Its key goals were the clean integration into the scsi-mid layer and implementing a great portion of the target in user space. STGT was replaced by LIO with Linux kernel 2.6.38.[1][2][3]
Comparison
General
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| OS Inclusion | Linux 2.6.38 | OpenSolaris | - | - | 2.6.12 | |
| Generic Target Engine | + | + | - | + | + | |
| Architecture | Kernel | Kernel | Kernel | Kernel | USpace | |
| Configuration Interface | ConfigFS | IOCTL | - | SysFS | Custom | |
| iSNS Support | + | + | - | + | - | |
| Parallel Command Processing Concurrency-Managed Workqueues | + | - | - | - | - | |
| Processor Architectures | x86, IA64, Cell, PPC, ARM, MIPS | x86, SPARC | x86, IA64, PPC | |||
| Zero-Copy | + | + | - | + | + | |
User interface
| Linux LIO | Sun COMSTAR | Other Linux | |||||
|---|---|---|---|---|---|---|---|
| IET | SCST | STGT | |||||
| CLI | RTSadmin | itadm, smtfadm, sbdadm | + | scstadm | + | ||
| Library | RTSlib | - | - | - | - | ||
| API | RTSapi | - | - | - | - | ||
| Dynamic Configuration Changes | + | + | - | + | - | ||
| Transactional Configuration | Tag, Commit, Rollback | Persistent | Persistent | Persistent | Persistent | ||
| Remote Management | RTSapi | + | - | - | - | ||
| Unified Cluster Storage | RTS Director | - | - | - | - | ||
| Storage Object IDs | Auto-generated T10 WWN Unit Serial with local aliasing | Auto-generated GUID | - | - | - | ||
Target
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| 4k Sector Support | + | + | - | + | - | |
| Advanced LUN Access Control | + (ACLs) | + (Views) | - | + | - | |
| AEN (Deprecated with SCSI-3) Asynchronous Event Notifications | ERL=2 only | - | - | + | - | |
| ALUA[4] Asymmetric Logical Unit Assignment | + | + | - | - | - | |
| Backstore Drivers | Kernel | Kernel | - | Kernel/User | User | |
| Bidirectional Commands | + | - | - | + | + | |
| CDB Split-Up in Passthrough Mode | + | + | - | - | - | |
| Extended CDBs (>16 bytes) | + | - | - | + | + | |
| Failover Clustering | + | + | + | + | + | |
| Host (Initiator) Groups | - | + | - | - | - | |
| MPIO | + | + | + | + | + | |
| OS Inclusion | Linux 2.6.38 | OpenSolaris | - | - | - | |
| Persistent Reservations[4][5][6] | + | + | - | Partial | - | |
| RESERVE/RELEASE[7][8] | + | + | + | + | + | |
| SCSI MIBs | + | - | - | - | - | |
| T10 DIF Data Integrity Format | Enterprise Edition | - | - | - | - | |
| Target Drivers | Kernel/User | Kernel | iSCSI only | Kernel/User | Kernel/User | |
| TPG-Specific LUN Mappings | + | - | - | - | - | |
| Unit Attentions (UAs) | + | + | - | + | - | |
| VAAI vSphere Storage API Program | Enterprise Edition | - | - | - | - | |
Backstores
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| BLOCKIO | + | + | + | + | - | |
| BLOCKIO (Cache Safe) | + | + | - | + | - | |
| FILEIO | + | + | + | + | + | |
FILEIO (O_SYNC)
| + | + | - | + | + | |
| LUN Provisioning | + | - | - | + | - | |
| RAID | MD/LVM2/HW | ZFS | MD/LVM2/HW | |||
| RAW | + | + | - | - | - | |
| RAMDISK | + | - | - | - | - | |
| SCSI Passthrough | + | - | - | + | + | |
Fabric modules
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| Fibre Channel (HBA) | QLogic (RC) | + | - | Emulex, QLogic | - | |
| FCoE | + | + | - | + | - | |
| FCoE (HBA) | - | - | - | Emulex | - | |
| IEEE 1394 | Beta | - | - | - | - | |
| iSCSI | + | + | + | + | + | |
| iSER/iWARP | - | - | - | - | - | |
| iSER/IB | - | + | - | - | + | |
| Loopback SCSI LLD | tcm_loop[9] | - | - | scst_local | - | |
| Parallel (Wide) SCSI | - | - | - | Alpha | - | |
| SAS | - | + | - | Marvell (Beta) | - | |
| InfiniBand/SRP | Mellanox | + | - | + | - | |
| IBM vSCSI | RC | - | - | + | + | |
FCoE
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| DDP Direct Data Placement | + | - | - | - | - | |
| OS Inclusion | Linux 3.0 | OpenSolaris | - | - | - | |
Fibre Channel
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| NPIV NPort ID Virtualization | QLogic (Alpha) | Emulex | - | - | - | |
| OS Inclusion | Planned | OpenSolaris | - | - | - | |
iSCSI
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| AHS Additional Header Segment | - | - | - | + | + | |
| AEN Asynchronous Event Notification | For ERL=2 | - | - | + | - | |
| Bidirectional Commands | - | - | - | + | + | |
| CPU Affinity Control | + | - | - | + | - | |
| Extended CDBs (>16 bytes) | - | - | - | + | + | |
| iSCSI MIBs | + | - | - | - | - | |
| Maximum ERL Error Recovery Level | 2 | 0 | 0 | 0 | 0 | |
| MC/S Multiple Connections per Session | + | - | - | - | - | |
| OS Inclusion | Linux 3.1 | OpenSolaris | - | - | - | |
| SSE4.2 Hardware Assist[10] | + | - | - | - | - | |
InfiniBand/SRP
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| OS Inclusion | Linux 3.3 | OpenSolaris | - | - | - | |
Loopback
| Linux LIO | Sun COMSTAR | Other Linux | ||||
|---|---|---|---|---|---|---|
| IET | SCST | STGT | ||||
| OS Inclusion | Linux 2.6.39 | OpenSolaris | - | - | - | |
See also
- Target
- SCSI Target Subsystem for Linux
- Backstore devices: IBLOCK, FILEIO, RAMDISK and tcm_loop
- Fabric modules: iSCSI, FCoE, Fibre Channel (QLogic) and InfiniBand
Notes
- ↑ a b Thorsten Leemhuis (3/2/2011). "Kernel Log: Coming in 2.6.38 (Part 4) - Storage". Heise Online.
- ↑ a b Linus Torvalds (1/14/2011). "Trivial merge". lkml.org.
- ↑ a b Jonathan Corbet (12/22/2010). "Shooting at SCSI targets". lnw.net.
- ↑ a b Required for VMware vSphere certification.
- ↑ Required for RHEL5 I/O Fencing and Clustering.
- ↑ Required for Windows 2008/R2 Failover Clustering.
- ↑ Required for VMware ESX certification.
- ↑ Required for Windows 2003 Clustering.
- ↑ Throughput: >12 GB/s (native) and >2 GB/s (virtualized, KVM: per VM without hardware assist).
- ↑ E.g., for payload digest acceleration.
External links