Features

The Linux SCSI Target Wiki

(Difference between revisions)
Jump to: navigation, search
m (Fibre Channel)
m (Mainstream)
 
(43 intermediate revisions not shown)
Line 1: Line 1:
-
This '''Features''' overview compares the {{Target}} with Sun [http://hub.opensolaris.org/bin/view/Project+comstar/WebHome COMSTAR] and other Linux open-source [[SCSI]] targets.
+
This '''Features''' overview compares {{Target}} with Sun COMSTAR and other Linux open-source [[SCSI]] targets.
== Open-source SCSI targets ==
== Open-source SCSI targets ==
Line 7: Line 7:
The two main open-source multiprotocol [[SCSI]] targets in the industry are:
The two main open-source multiprotocol [[SCSI]] targets in the industry are:
-
* '''{{T}}''' ('''{{LIO servername}}''') is the standard open-source SCSI target in Linux by {{RTS full}}. It went upstream into the Linux kernel with version 2.6.38.<ref name=h-online>{{cite web| url=http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-38-Part-4-Storage-1199926.html| title=Kernel Log: Coming in 2.6.38 (Part 4) - Storage| author=Thorsten Leemhuis| publisher=Heise Online| date=3/2/2011}}</ref><ref name=lkml>{{cite web| url=http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5| title=Trivial merge| author=Linus Torvalds| date=1/14/2011| publisher=lkml.org}}</ref><ref name=lwn>{{cite web| url=http://lwn.net/SubscriberLink/420691/eb6ae8a12222aac6/| title=Shooting at SCSI targets| author=Jonathan Corbet| date=12/22/2010| publisher=lnw.net}}</ref>
+
* '''{{T}}''' ('''{{LIO servername}}''') is the standard open-source SCSI target in Linux by {{RTS full}} It went upstream with Linux kernel version 2.6.38.<ref name=h-online>{{cite web| url=http://www.h-online.com/open/features/Kernel-Log-Coming-in-2-6-38-Part-4-Storage-1199926.html| title=Kernel Log: Coming in 2.6.38 (Part 4) - Storage| author=Thorsten Leemhuis| publisher=Heise Online| date=3/2/2011}}</ref><ref name=lkml>{{cite web| url=http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5| title=Trivial merge| author=Linus Torvalds| date=1/14/2011| publisher=lkml.org}}</ref><ref name=lwn>{{cite web| url=http://lwn.net/SubscriberLink/420691/eb6ae8a12222aac6/| title=Shooting at SCSI targets| author=Jonathan Corbet| date=12/22/2010| publisher=lnw.net}}</ref>
-
* {{anchor|COMSTAR}} '''[http://hub.opensolaris.org/bin/view/Project+comstar/WebHome COMSTAR]''' ('''Common Multiprotocol SCSI Target''') is a software framework that enables any [http://www.oracle.com/us/sun/index.html Sun] [http://hub.opensolaris.org/bin/view/Main/ OpenSolaris] host to serve as a SCSI target that can be accessed over the network.
+
* '''COMSTAR''' ('''Common Multiprotocol SCSI Target''') is a software framework that enables any [http://www.oracle.com/us/sun/index.html Sun] OpenSolaris host to serve as a SCSI target that can be accessed over the network.
==== Linux out-of-tree and legacy ====
==== Linux out-of-tree and legacy ====
Line 17: Line 17:
* {{anchor|IET}}'''[http://iscsitarget.sourceforge.net/ 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. This target was quite popular, but its user base has been deteriorating, because of its lack of support and modern features.
* {{anchor|IET}}'''[http://iscsitarget.sourceforge.net/ 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. This target was quite popular, but its user base has been deteriorating, because of its lack of support and modern features.
* {{anchor|SCST}}'''[http://scst.sourceforge.net/ 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 SAN operating system, but lost momentum and was acquired by [http://www.fusionio.com/ Fusion-IO] in March 2013.
* {{anchor|SCST}}'''[http://scst.sourceforge.net/ 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 SAN operating system, but lost momentum and was acquired by [http://www.fusionio.com/ Fusion-IO] in March 2013.
-
* {{anchor|STGT}}'''[http://stgt.berlios.de/ STGT]''' ('''SCSI Target Framework''') has been the standard multiprotocol [[SCSI]] 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 superseded by {{T}} with Linux kernel 2.6.38.<ref name=h-online/><ref name=lkml/><ref name=lwn/>
+
* {{anchor|STGT}}'''[http://stgt.sourceforge.net/ STGT]''' ('''SCSI Target Framework''') has been the standard multiprotocol [[SCSI]] 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 superseded by {{T}} with Linux kernel 2.6.38.<ref name=h-online/><ref name=lkml/><ref name=lwn/>
== Comparison ==
== Comparison ==
Line 39: Line 39:
|-
|-
! align="left" | OpenStack integration
! align="left" | OpenStack integration
-
| Grizzly ([https://wiki.openstack.org/wiki/Cinder/LIO-Grizzly setup], [https://review.openstack.org/#/c/18274/ code]) || - || - || - || -
+
| Juno (upstream)<br/>Grizzly <small>([https://wiki.openstack.org/wiki/Cinder/LIO-Grizzly setup], [https://review.openstack.org/#/c/18274/ code])</small> || - || - || - || -
|-
|-
! align="left" | Generic SCSI Target engine
! align="left" | Generic SCSI Target engine
Line 110: Line 110:
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Sun [[COMSTAR]]
! rowspan="2" width="120px" | Sun [[COMSTAR]]
-
! rowspan="23" width ="1px" |
+
! rowspan="25" width ="1px" |
! colspan="3" | Other Linux
! colspan="3" | Other Linux
|-
|-
Line 165: Line 165:
| + || - || - || + || -
| + || - || - || + || -
|-
|-
-
! align="left" | T10 DIF<br/><small>Data Integrity Format</small>
+
! align="left" | T10 [[DIF]]<br/><small>Data Integrity Format</small>
-
| <small>Enterprise Edition</small> || - || - || - || -
+
| Linux 3.14 || - || - || - || -
|-
|-
! align="left" | T10 Referrals
! align="left" | T10 Referrals
-
| <small>Linux 3.13</small> || - || - || - || -
+
| Linux 3.14 || - || - || - || -
|-
|-
! align="left" | Target drivers
! align="left" | Target drivers
Line 176: Line 176:
! align="left" | [[TPG]]-specific LUN mappings
! align="left" | [[TPG]]-specific LUN mappings
| + || - || - || - || -
| + || - || - || - || -
 +
|-
 +
! align="left" | User-space backend<br/><small>Data and exception handling in user space</small>
 +
| Linux 3.18 || - || - || + || +
|-
|-
! align="left" | Unit Attentions (UAs)
! align="left" | Unit Attentions (UAs)
Line 181: Line 184:
|-
|-
! align="left" | [[VAAI]]<br/><small>vStorage APIs for Array Integration</small>
! align="left" | [[VAAI]]<br/><small>vStorage APIs for Array Integration</small>
-
| Linux 3.12 || - || - || - || -
+
| + || - || - || - || -
|}
|}
Line 234: Line 237:
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Sun [[COMSTAR]]
! rowspan="2" width="120px" | Sun [[COMSTAR]]
-
! rowspan="17" width ="1px" |
+
! rowspan="18" width ="1px" |
! colspan="3" | Other Linux
! colspan="3" | Other Linux
|-
|-
Line 242: Line 245:
|-
|-
! align="left" | [[Fibre Channel|16 GFC]] (HBA)
! align="left" | [[Fibre Channel|16 GFC]] (HBA)
-
| + || - || - || - || -
+
| + || - || - || +<ref name=Emulex>Emulex discontinued support on 5/3/2012 (see [http://sourceforge.net/mailarchive/message.php?msg_id=29214048 Emulex and SCST]).</ref><ref name=LIOmod>Using the corresponding LIO fabric module.</ref> || -
|-
|-
! align="left" | [[Fibre Channel]] (HBA)
! align="left" | [[Fibre Channel]] (HBA)
-
| QLogic || + || - || <small>QLogic</small><ref name=Emulex>Emulex discontinued support on 5/3/2012 (see [http://sourceforge.net/mailarchive/message.php?msg_id=29214048 Emulex and SCST]).</ref> || -
+
| + || + || - || <small>QLogic</small><ref name=Emulex/> || -
|-
|-
-
! align="left" | [[Fibre Channel over Ethernet|FCoE]]
+
! align="left" | [[FCoE]]
| + || + || - || Beta || -
| + || + || - || Beta || -
|-
|-
Line 259: Line 262:
| + || + || + || + || +
| + || + || + || + || +
|-
|-
-
! align="left" | [[ISCSI Extensions for RDMA|iSER]]/[[Internet Wide Area RDMA Protocol|iWARP]]
+
! align="left" | [[iSER]] ([[iWARP]])
| - || - || - || - || -
| - || - || - || - || -
|-
|-
-
! align="left" | [[ISCSI Extensions for RDMA|iSER]]/[[InfiniBand|IB]]
+
! align="left" | [[iSER]] ([[IB]]/[[RoCE]])
-
| Mellanox || + || - || - || +
+
| + || + || - || +<ref name=LIOmod /> || +
|-
|-
! align="left" | [[Loopback]] SCSI LLD
! align="left" | [[Loopback]] SCSI LLD
Line 270: Line 273:
! align="left" | NTB<br/><small>Non-Transparent Bridging</small>
! align="left" | NTB<br/><small>Non-Transparent Bridging</small>
| - || - || - || - || -
| - || - || - || - || -
 +
|-
 +
! align="left" | NVMe-OF<br/><small>NVMe Over Fabrics</small>
 +
| Planned || - || - || - || -
|-
|-
! align="left" | Parallel (Wide) SCSI
! align="left" | Parallel (Wide) SCSI
Line 278: Line 284:
|-
|-
! align="left" | [[SRP]]<br/><small>InfiniBand SCSI RDMA Protocol</small>
! align="left" | [[SRP]]<br/><small>InfiniBand SCSI RDMA Protocol</small>
-
| Mellanox || + || - || + || -
+
| + || + || - || + || -
|-
|-
! align="left" | USB Gadget
! align="left" | USB Gadget
Line 294: Line 300:
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Sun [[COMSTAR]]
! rowspan="2" width="120px" | Sun [[COMSTAR]]
-
! rowspan="5" width ="1px" |
+
! rowspan="6" width ="1px" |
! colspan="3" | Other Linux
! colspan="3" | Other Linux
|-
|-
Line 302: Line 308:
|-
|-
! align="left" | 16 GFC support
! align="left" | 16 GFC support
-
| Linux 3.9 || - || - || - || -
+
| Linux 3.9 || - || - || +<ref name=Emulex/><ref name=LIOmod/> || -
|-
|-
-
! align="left" | NPIV<br /><small>NPort ID Virtualization</small>
+
! align="left" | [[NPIV]]<br /><small>NPort ID Virtualization</small>
-
| RC || Emulex || - || + || -
+
| Linux 3.14 || Emulex || - || + || -
|-
|-
! align="left" | OS inclusion  
! align="left" | OS inclusion  
| Linux 3.5 || OpenSolaris || - || - || -
| Linux 3.5 || OpenSolaris || - || - || -
 +
|-
 +
! align="left" | T10 [[DIF]]
 +
| Linux 3.16 || - || - || - || -
|}
|}
Line 408: Line 417:
! align="left" | OS inclusion  
! align="left" | OS inclusion  
| Linux 3.10 || OpenSolaris || - || - || -
| Linux 3.10 || OpenSolaris || - || - || -
 +
|-
 +
! align="left" | T10 [[DIF]]
 +
| Linux 3.15 || - || - || - || -
|}
|}
Line 425: Line 437:
|-
|-
! align="left" | OS inclusion
! align="left" | OS inclusion
-
| Linux 2.6.39 || OpenSolaris || - || <small>scst_local</small> || -
+
| Linux 2.6.39 || OpenSolaris || - || - || -
|}
|}
Line 443: Line 455:
|-
|-
! align="left" | OS inclusion
! align="left" | OS inclusion
-
| Linux 3.3 || OpenSolaris || - || + || -
+
| Linux 3.3 || OpenSolaris || - || - || -
|}
|}
Line 471: Line 483:
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Linux {{T}}
! rowspan="2" width="120px" | Sun [[COMSTAR]]
! rowspan="2" width="120px" | Sun [[COMSTAR]]
-
! rowspan="3" width ="1px" |
+
! rowspan="4" width ="1px" |
! colspan="3" | Other Linux
! colspan="3" | Other Linux
|-
|-
Line 480: Line 492:
! align="left" | OS inclusion
! align="left" | OS inclusion
| Linux 3.6 || - || - || - || -
| Linux 3.6 || - || - || - || -
 +
|-
 +
! align="left" | T10 [[DIF]]
 +
| Linux 3.16 || - || - || - || -
|}
|}
Line 491: Line 506:
== External links ==
== External links ==
-
* {{Official|http://hub.opensolaris.org/bin/view/Project+comstar/WebHome COMSTAR}}
 
* {{Official|http://iscsitarget.sourceforge.net/ IET}}
* {{Official|http://iscsitarget.sourceforge.net/ IET}}
* {{Official|http://scst.sourceforge.net/ SCST}}
* {{Official|http://scst.sourceforge.net/ SCST}}
-
* {{Official|http://stgt.berlios.de/ STGT}}
 
{{LIO Timeline}}
{{LIO Timeline}}

Latest revision as of 21:13, 4 May 2016

This Features overview compares LinuxIO with Sun COMSTAR and other Linux open-source SCSI targets.

Contents

Open-source SCSI targets

Mainstream

The two main open-source multiprotocol SCSI targets in the industry are:

Linux out-of-tree and legacy

In Linux, there are also three out-of-tree or legacy SCSI targets:

Comparison

General

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 2.6.38 OpenSolaris - - 2.6.12
Obsolete
OpenStack integration Juno (upstream)
Grizzly (setup, code)
- - - -
Generic SCSI Target engine + + - + +
Architecture Kernel Kernel Kernel Kernel User
Configuration interface ConfigFS IOCTL - SysFS Custom
Dynamic session teardowns
While processing active I/O
+ - - -[4] -
iSNS support + + - + -
Parallel command processing
Concurrency-Managed Workqueues (CMWQ)
+ - - - -
Processor architectures x86, IA64, Cell, PPC, ARM, MIPS x86, SPARC x86, IA64, PPC
Zero-copy + + - +[5] +

User interface

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
CLI targetcli itadm, smtfadm, sbdadm + scstadm +
Library RTSlib - - - -
API RTSapi - - - -
Dynamic configuration changes
While processing active I/O
+ + - -[4] -
Transactional configuration Tag, Commit, Rollback Persistent Persistent Persistent Persistent
Remote management RTSapi + - - -
Storage object IDs Auto-generated
T10 WWN Unit Serial
with local aliasing
Auto-generated GUID - - -

SCSI Target

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
4k sector support + + - + -
Advanced LUN access control + (ACLs) + (Views) - + -
AEN[6]
Asynchronous Event Notifications
ERL=2 only - - + -
ALUA[7]
Asymmetric Logical Unit Assignment
+ - - + -
Backstore drivers Kernel/User Kernel - Kernel/User User
Bidirectional commands + - - + +
CDB split-up in pass-through mode + + - - -
CPU affinity control + - - + -
Extended CDBs (>16 bytes) + - - + +
Failover clustering + + + + +
Host (Initiator) groups - + - - -
MPIO + + + + +
OS inclusion Linux 2.6.38 OpenSolaris - - -
SCSI MIBs Enterprise Edition - - - -
SCSI-2 RESERVE/RELEASE[8][9] + + + + +
SCSI-3 PR[7][10][11]
Persistent Reservations
+ - - + -
T10 DIF
Data Integrity Format
Linux 3.14 - - - -
T10 Referrals Linux 3.14 - - - -
Target drivers Kernel/User Kernel iSCSI only Kernel/User Kernel/User
TPG-specific LUN mappings + - - - -
User-space backend
Data and exception handling in user space
Linux 3.18 - - + +
Unit Attentions (UAs) + + - + -
VAAI
vStorage APIs for Array Integration
+ - - - -

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 pass-through + - - + +

Fabric modules

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
16 GFC (HBA) + - - +[12][13] -
Fibre Channel (HBA) + + - QLogic[12] -
FCoE + + - Beta -
IBM vSCSI out of tree - - + +
IEEE 1394 + - - - -
iSCSI + + + + +
iSER (iWARP) - - - - -
iSER (IB/RoCE) + + - +[13] +
Loopback SCSI LLD tcm_loop[14] - - scst_local -
NTB
Non-Transparent Bridging
- - - - -
NVMe-OF
NVMe Over Fabrics
Planned - - - -
Parallel (Wide) SCSI - - - Alpha -
SAS - + - Marvell (Beta) -
SRP
InfiniBand SCSI RDMA Protocol
+ + - + -
USB Gadget + - - - -
vHost
QEMU virtio and virtio-scsi PV guests
+[15] - - - -

Fibre Channel

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
16 GFC support Linux 3.9 - - +[12][13] -
NPIV
NPort ID Virtualization
Linux 3.14 Emulex - + -
OS inclusion Linux 3.5 OpenSolaris - - -
T10 DIF Linux 3.16 - - - -

FCoE

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
DDP
Direct Data Placement
+ - - - -
OS inclusion Linux 3.0 OpenSolaris - - -

IEEE 1394

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 3.5 - - - -

iSCSI

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
AHS
Additional Header Segment
- - - + +
AEN
Asynchronous Event Notification
For ERL=2 - - + -
Bidirectional commands + - - + +
Extended CDBs (>16 bytes) + - - + +
iSCSI MIBs Enterprise Edition - - - -
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[16] + - - - -

iSER

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 3.10 OpenSolaris - - -
T10 DIF Linux 3.15 - - - -

Loopback

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 2.6.39 OpenSolaris - - -

SRP

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 3.3 OpenSolaris - - -

USB Gadget

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 3.5 - - - -

vHost

Linux LIO Sun COMSTAR Other Linux
IET SCST STGT
OS inclusion Linux 3.6 - - - -
T10 DIF Linux 3.16 - - - -

See also

Notes

  1. a b Thorsten Leemhuis (3/2/2011). "Kernel Log: Coming in 2.6.38 (Part 4) - Storage". Heise Online. 
  2. a b Linus Torvalds (1/14/2011). "Trivial merge". lkml.org. 
  3. a b Jonathan Corbet (12/22/2010). "Shooting at SCSI targets". lnw.net. 
  4. a b Brian Auld (5/12/2012). "How to reliably force_close scst iscsi_sessions that are processing IO". sourceforge.net. 
  5. Bart Van Assche (9/24/2012). "Re: Can't build SCST for CentOS 6.2x64". http://sourceforge.net. 
  6. Deprecated with SCSI-3.
  7. a b Required for VMware vSphere certification.
  8. Required for VMware ESX certification.
  9. Required for Windows 2003 Clustering.
  10. Required for RHEL5 I/O Fencing and Clustering.
  11. Required for Windows 2008/R2 Failover Clustering.
  12. a b c Emulex discontinued support on 5/3/2012 (see Emulex and SCST).
  13. a b c Using the corresponding LIO fabric module.
  14. Throughput: >12 GB/s (native) and >2 GB/s (virtualized, KVM: per VM without hardware assist).
  15. Throughput: >20 GB/s (virtualized without hardware assist).
  16. E.g., for payload digest acceleration.

External links

Timeline of the LinuxIO
Release Details 2011 2012 2013 2014 2015
123456789101112 123456789101112 123456789101112 123456789101112 123456789101112
4.x Version 4.0 4.1
Feature LIO Core Loop back FCoE iSCSI Perf SRP
CM WQ FC
USB
1394
vHost Perf Misc 16 GFC iSER Misc VAAI Misc DIF Core
NPIV
DIF iSER DIF FC vhost TCMU Xen Misc Misc virtio 1.0 Misc NVMe OF
Linux 2.6.38 2.6.39 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
Google AdSense