LIO

The Linux SCSI Target Wiki

(Difference between revisions)
Jump to: navigation, search
m
m
Line 1: Line 1:
{{Infobox software
{{Infobox software
-
| name                  = LIO Linux SCSI Target
+
| name                  = {{Target}}
| logo                  = [[Image:Corp_Logo.png|180px|Logo]]
| logo                  = [[Image:Corp_Logo.png|180px|Logo]]
-
| screenshot            = {{RTS screenshot|SCSI Target}}
+
| screenshot            = {{RTS screenshot|Linux SCSI Target}}
| caption                = Linux SCSI Target
| caption                = Linux SCSI Target
| collapsible            =  
| collapsible            =  
Line 20: Line 20:
| size                  =
| size                  =
| language              =
| language              =
-
| genre                  = SCSI Target engine
+
| genre                  = SCSI target
| license                = GNU General Public License
| license                = GNU General Public License
| website                = {{RTS website}}
| website                = {{RTS website}}
}}
}}
-
{{Image|LIO Architecture.png|LIO architecture overview.}}
+
{{Image|LIO Architecture.png|architecture overview.}}
-
{{Image|LIO iSCSI Architecture.png|LIO iSCSI architecture diagram.}}
+
{{Image|LIO iSCSI Architecture.png|{{Target}} iSCSI architecture diagram.}}
{{Image|Portal-Groups.jpg|SCSI Portal Group and multipath architecture overview.}}
{{Image|Portal-Groups.jpg|SCSI Portal Group and multipath architecture overview.}}
{{Image|SCSI Standards Architecture.jpg|SCSI standards diagram.}}
{{Image|SCSI Standards Architecture.jpg|SCSI standards diagram.}}
Line 34: Line 34:
{{Image|Linux-fireware-target-bootc-macosx.png|The IEEE Firewire driver exporting IBLOCK LUNs to a MacOS-X based IEEE-1394/FireWire client.}}
{{Image|Linux-fireware-target-bootc-macosx.png|The IEEE Firewire driver exporting IBLOCK LUNs to a MacOS-X based IEEE-1394/FireWire client.}}
-
The LIO Linux [[SCSI]] '''Target''' has become the Linux block storage standard with kernel version {{RTS releases|LIO|kernel_ver}}.<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=2011-03-02}}</ref><ref name=lwn>{{cite web| url=http://lwn.net/SubscriberLink/420691/eb6ae8a12222aac6/| title=Shooting at SCSI targets| author=Jonathan Corbet| date=2010-12-22| publisher=lnw.net}}</ref> It supports a rapidly growing number of [[#Fabric modules|fabric modules]], and all existing Linux block devices as [[#Backstores|backstores]].
+
The '''{{Target}}''' has become the Linux block storage standard with kernel version {{RTS releases|LIO|kernel_ver}}.<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=2011-03-02}}</ref><ref name=lwn>{{cite web| url=http://lwn.net/SubscriberLink/420691/eb6ae8a12222aac6/| title=Shooting at SCSI targets| author=Jonathan Corbet| date=2010-12-22| publisher=lnw.net}}</ref> It supports a rapidly growing number of [[#Fabric modules|fabric modules]], and all existing Linux block devices as [[#Backstores|backstores]].
== Overview ==
== Overview ==
-
The Linux [[SCSI]] Target core is a SCSI engine that implements the semantics of a SCSI target as described in the SCSI Architecture Model (SAM), and supports its comprehensive [[SPC-3]]/[[SPC-4]] feature set in a fabric-agnostic way. The SCSI target core does not directly communicate with initiators and it does not directly access data on disk.
+
The {{Target}} core is a SCSI engine that implements the semantics of a SCSI target as described in the SCSI Architecture Model (SAM), and supports its comprehensive [[SPC-3]]/[[SPC-4]] feature set in a fabric-agnostic way. The SCSI target core does not directly communicate with initiators and it does not directly access data on disk.
-
The Linux SCSI Target has obtained [[VMware vSphere]]&nbsp;4 Ready certification on Buffalo [[http://www.risingtidesystems.com/doc/VMware_HCL_Buffalo.pdf PDF]] and QNAP [[http://www.risingtidesystems.com/doc/VMware_HCL_QNAP.pdf PDF]] systems, and vSphere&nbsp;5 Ready certification on Netgear [[http://www.risingtidesystems.com/doc/VMware_HCL_Netgear.pdf PDF]] and Pure Storage [[http://www.risingtidesystems.com/doc/VMware_HCL_PureStorage.pdf PDF]] systems.
+
The {{Target}} has obtained [[VMware vSphere]]&nbsp;4 Ready certification on Buffalo [[http://www.risingtidesystems.com/doc/VMware_HCL_Buffalo.pdf PDF]] and QNAP [[http://www.risingtidesystems.com/doc/VMware_HCL_QNAP.pdf PDF]] systems, and vSphere&nbsp;5 Ready certification on Netgear [[http://www.risingtidesystems.com/doc/VMware_HCL_Netgear.pdf PDF]] and Pure Storage [[http://www.risingtidesystems.com/doc/VMware_HCL_PureStorage.pdf PDF]] systems.
-
Native support in OpenStack ([https://wiki.openstack.org/wiki/Cinder/LIO-Grizzly setup], [https://review.openstack.org/#/c/18274/ code]), starting with the Grizzly release, makes the Linux SCSI Target also an attractive storage option for cloud deployments.
+
Native support in OpenStack ([https://wiki.openstack.org/wiki/Cinder/LIO-Grizzly setup], [https://review.openstack.org/#/c/18274/ code]), starting with the Grizzly release, makes the {{Target}} also an attractive storage option for cloud deployments.
-
The Linux SCSI Target core ({{RTS releases|LIO|module_repo}}, see {{RTS releases|LIO|module_info}}) was released with the Linux kernel {{RTS releases|LIO|kernel_ver}} on {{RTS releases|LIO|initial_date}}.<ref>{{RTS releases|LIO|kernel_rel}}</ref>
+
The {{Target}} core ({{RTS releases|LIO|module_repo}}, see {{RTS releases|LIO|module_info}}) was released with the Linux kernel {{RTS releases|LIO|kernel_ver}} on {{RTS releases|LIO|initial_date}}.<ref>{{RTS releases|LIO|kernel_rel}}</ref>
== Setup ==
== Setup ==
-
''[[targetcli]]'' provides a comprehensive, powerful and easy CLI tool to configure and manage LIO SCSI Targets. ''targetcli'' was developed by {{RTS full}}.
+
''[[targetcli]]'' provides a comprehensive, powerful and easy CLI tool to configure and manage {{Target}}s. ''targetcli'' was developed by {{RTS full}}.
== {{anchor|Fabric modules}}Fabric modules ==
== {{anchor|Fabric modules}}Fabric modules ==
Line 67: Line 67:
== {{anchor|Backstores}} Backstores ==
== {{anchor|Backstores}} Backstores ==
-
Backstores implement the "backend" of the SCSI target. They implement the methods of accessing data on disk. A backstore subsystem plugin is a physical storage object that provides the block device underlying a SCSI [[#Endpoint|Endpoint]].
+
Backstores implement the "backend" of the {{Target}}. They implement the methods of accessing data on disk. A backstore subsystem plugin is a physical storage object that provides the block device underlying a SCSI [[#Endpoint|Endpoint]].
-
Backstore objects can be added via the ''Storage Hardware Abstraction Layer'' (''S-HAL'') that brings storage hardware into the SCSI Target engine as raw block devices, on which the Linux stack just works (including complex functionality such as software RAID, LVM, snapshots, virtualization, etc.).
+
Backstore objects can be added via the ''Storage Hardware Abstraction Layer'' (''S-HAL'') that brings storage hardware into the {{Target}} engine as raw block devices, on which the Linux stack just works (including complex functionality such as software RAID, LVM, snapshots, virtualization, etc.).
-
The SCSI Target supports the [[SCSI-3]] standard for all backstore devices (block devices and/or VFS):
+
The {{Target}} supports the [[SCSI-3]] standard for all backstore devices (block devices and/or VFS):
* {{anchor|FILEIO}} '''FILEIO''' (Linux VFS devices): any file on a mounted filesystem. It may be backed by a file or an underlying real block device. FILEIO is using struct file to serve block I/O with various methods (synchronous or asynchronous) and (buffered or direct). The Linux kernel code for filesystems resides in ''linux/fs''. By default, [[FILEIO]] uses <code>O_SYNC</code>.
* {{anchor|FILEIO}} '''FILEIO''' (Linux VFS devices): any file on a mounted filesystem. It may be backed by a file or an underlying real block device. FILEIO is using struct file to serve block I/O with various methods (synchronous or asynchronous) and (buffered or direct). The Linux kernel code for filesystems resides in ''linux/fs''. By default, [[FILEIO]] uses <code>O_SYNC</code>.
Line 137: Line 137:
== Inclusion in Linux distributions ==
== Inclusion in Linux distributions ==
-
The LIO SCSI Target and ''[[targetcli]]'' are included in most Linux distributions per default. Here is an overview over the most popular distributions:
+
The {{Target}} and ''[[targetcli]]'' are included in most Linux distributions per default. Here is an overview over the most popular distributions:
{{Linux Inclusion}}
{{Linux Inclusion}}
Line 143: Line 143:
== Timeline ==
== Timeline ==
-
The LIO SCSI Target and fabric modules have gone upstream into the Linux kernel as follows:
+
The {{Target}} and fabric modules have gone upstream into the Linux kernel as follows:
-
* Linux 2.6.38 (2011-03-14<ref>{{cite web| url=https://lkml.org/lkml/2011/3/14/508| title=Linux 2.6.38| author=Linus Torvalds| date=2011-03-14| publisher=lkml.org}}</ref>): Generic multiprotocol SCSI target engine<ref>{{cite web| url=http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5| title=Target merge| author=Linus Torvalds| date=2011-01-14| publisher=lkml.org}}</ref>
+
* Linux 2.6.38 (2011-03-14<ref>{{cite web| url=https://lkml.org/lkml/2011/3/14/508| title=Linux 2.6.38| author=Linus Torvalds| date=2011-03-14| publisher=lkml.org}}</ref>): {{Target}} engine<ref>{{cite web| url=http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5| title=Target merge| author=Linus Torvalds| date=2011-01-14| publisher=lkml.org}}</ref>
* Linux 2.6.39 (2011-05-18<ref>{{cite web| url=https://lkml.org/lkml/2011/5/19/16| title=Linux 2.6.39| author=Linus Torvalds| date=2011-05-18| publisher=lkml.org}}</ref>): [[tcm_loop]] (SCSI support on top of any raw hardware)
* Linux 2.6.39 (2011-05-18<ref>{{cite web| url=https://lkml.org/lkml/2011/5/19/16| title=Linux 2.6.39| author=Linus Torvalds| date=2011-05-18| publisher=lkml.org}}</ref>): [[tcm_loop]] (SCSI support on top of any raw hardware)
* Linux 3.0 (2011-07-21<ref>{{cite web| url=https://lkml.org/lkml/2011/7/21/455| title=Linux 3.0| author=Linus Torvalds| date=2011-07-21| publisher=lkml.org}}</ref>): [[Fibre Channel over Ethernet|FCoE]] (by Cisco)
* Linux 3.0 (2011-07-21<ref>{{cite web| url=https://lkml.org/lkml/2011/7/21/455| title=Linux 3.0| author=Linus Torvalds| date=2011-07-21| publisher=lkml.org}}</ref>): [[Fibre Channel over Ethernet|FCoE]] (by Cisco)
Line 172: Line 172:
== See also ==
== See also ==
-
* [[RTS OS]], [[targetcli]]
+
* {{OS}}, [[targetcli]]
-
* Fabric modules: [[iSCSI]], [[Fibre Channel]], [[Fibre Channel over Ethernet|FCoE]], [[InfiniBand]], [[IBM vSCSI]], [[tcm_loop]]
+
* Fabric modules: [[FCoE]], [[Fibre Channel]], [[IBM vSCSI]], [[iSCSI]], [[iSER]], [[SRP]], [[vHost]]
* Distributions: [[RHEL]] 4/5/6, SLES11, [[CentOS]], [[Debian]], [[Fedora]], [[openSUSE]], [[Ubuntu]], etc.
* Distributions: [[RHEL]] 4/5/6, SLES11, [[CentOS]], [[Debian]], [[Fedora]], [[openSUSE]], [[Ubuntu]], etc.
* Platforms: PC architecture (x86/ia64), [[PlayStation 2]] and [[PlayStation 3]] (Cell), etc.
* Platforms: PC architecture (x86/ia64), [[PlayStation 2]] and [[PlayStation 3]] (Cell), etc.
-
* Low level kernel API: [[configFS]]  
+
* Low level kernel API: [[configFS]]
* Standards: [[SCSI]]
* Standards: [[SCSI]]
Line 185: Line 185:
== External links ==
== External links ==
-
* LIO Wikipedia entries: [http://de.wikipedia.org/wiki/LIO German] [http://en.wikipedia.org/wiki/LIO_Target English]
+
* {{Target}} Wikipedia entries: [http://de.wikipedia.org/wiki/LIO German] [http://en.wikipedia.org/wiki/LIO_Target English]
-
* RTS OS [http://www.risingtidesystems.com/doc/RTS%20OS%20Admin%20Manual.pdf Admin Manual]
+
* {{OS}} [http://www.risingtidesystems.com/doc/RTS%20OS%20Admin%20Manual.pdf Admin Manual]
* RTSlib Reference Guide [[http://www.risingtidesystems.com/doc/rtslib-gpl/html/ HTML]][[http://www.risingtidesystems.com/doc/rtslib-gpl/pdf/rtslib-API-reference.pdf PDF]]
* RTSlib Reference Guide [[http://www.risingtidesystems.com/doc/rtslib-gpl/html/ HTML]][[http://www.risingtidesystems.com/doc/rtslib-gpl/pdf/rtslib-API-reference.pdf PDF]]
* [http://www.scsi4me.com/scsi-connectors.htm Adapters by SCSI connector type]
* [http://www.scsi4me.com/scsi-connectors.htm Adapters by SCSI connector type]

Revision as of 18:14, 28 September 2013

LinuxIO
Logo
LIO 150513.png
Linux SCSI Target
Original author(s) Nicholas Bellinger
Developer(s) Datera, Inc.
Initial release January 14, 2011 (2011-01-14)
Stable release 4.1.0 / June 20, 2012;
7 years ago
 (2012-06-20)
Preview release 4.2.0-rc5 / June 28, 2012;
7 years ago
 (2012-06-28)
Development status Production
Written in C
Operating system Linux
Type SCSI target
License GNU General Public License
Website datera.io
architecture overview.
LinuxIO iSCSI architecture diagram.
SCSI Portal Group and multipath architecture overview.
SCSI standards diagram.
QLogic Fibre Channel running at line rate in target mode with PCIe device passthrough and MSI-X polled interrupts across Linux/SCSI qla2xxx LLD request and response rings.
The IEEE Firewire driver exporting IBLOCK LUNs to a MacOS-X based IEEE-1394/FireWire client.

The LinuxIO has become the Linux block storage standard with kernel version 2.6.38.[1][2] It supports a rapidly growing number of fabric modules, and all existing Linux block devices as backstores.

Contents

Overview

The LinuxIO core is a SCSI engine that implements the semantics of a SCSI target as described in the SCSI Architecture Model (SAM), and supports its comprehensive SPC-3/SPC-4 feature set in a fabric-agnostic way. The SCSI target core does not directly communicate with initiators and it does not directly access data on disk.

The LinuxIO has obtained VMware vSphere 4 Ready certification on Buffalo [PDF] and QNAP [PDF] systems, and vSphere 5 Ready certification on Netgear [PDF] and Pure Storage [PDF] systems.

Native support in OpenStack (setup, code), starting with the Grizzly release, makes the LinuxIO also an attractive storage option for cloud deployments.

The LinuxIO core (target_core.ko, see Linux kernel driver database) was released with the Linux kernel 2.6.38 on January 14, 2011 (2011-01-14).[3]

Setup

targetcli provides a comprehensive, powerful and easy CLI tool to configure and manage LinuxIOs. targetcli was developed by Datera, Inc..

Fabric modules

Fabric modules implement the "frontend" of the SCSI target. They "speak" specific protocols that transport SCSI commands. The Fabric Hardware Abstraction Layer (F-HAL) allows all protocol-specific processing to be encapsulated in fabric modules. The following fabric modules are available:

Backstores

Backstores implement the "backend" of the LinuxIO. They implement the methods of accessing data on disk. A backstore subsystem plugin is a physical storage object that provides the block device underlying a SCSI Endpoint.

Backstore objects can be added via the Storage Hardware Abstraction Layer (S-HAL) that brings storage hardware into the LinuxIO engine as raw block devices, on which the Linux stack just works (including complex functionality such as software RAID, LVM, snapshots, virtualization, etc.).

The LinuxIO supports the SCSI-3 standard for all backstore devices (block devices and/or VFS):

The SCSI functionality is implemented directly in the target engine in a fabric-agnostic way, including a number of high-end features, such as Persistent Reservations (PRs) and Asymmetric Logical Unit Assignment (ALUA), following the SPC-4 standard.

The backstore devices (FILEIO, IBLOCK, pSCSI, RAMDISK, etc.) report the underlying HW limitiations for things like TCQ depth, MaxSectors, TaskAbortedStatus, UA Interlocking, etc. All of these values are available as attributes in the targetcli device context.

Specifications

The following specifications are available as T10 Working Drafts:

Glossary

Inclusion in Linux distributions

The LinuxIO and targetcli are included in most Linux distributions per default. Here is an overview over the most popular distributions:

Distribution Version[Linux 1] Release Archive Install Source git[Linux 2] Documentation
CentOS 6.2 2011-12-20 CentOS mirror su -c 'yum install fcoe-target-utils' targetcli-fb.git Tech Notes
Debian 7.0 ("wheezy") TBA Debian pool su -c 'apt-get install targetcli' targetcli
Fedora 16, 17/18 2011-11-08 Fedora Rawhide su -c 'yum install targetcli' targetcli-fb.git Target Wiki
openSUSE 12.1 2011-11-08 Requires manual installation from targetcli.
RHEL 6.2 2011-11-16 Fedora Rawhide su -c 'yum install fcoe-target-utils' targetcli-fb.git Tech Notes
Scientific Linux 6.2 2012-02-16 SL Mirror su -c 'yum install fcoe-target-utils' targetcli-fb.git Tech Notes
SLES SP2 2012-02-15 Requires manual installation from targetcli.
Ubuntu PrecisePangolin v12 2012-04-26 Ubuntu universe su -c 'apt-get install targetcli' targetcli
  1. The distribution release where LIO was included first.
  2. Technical support, and qualified backports to other kernels and distributions are available from Datera.

Timeline

The LinuxIO and fabric modules have gone upstream into the Linux kernel as follows:

Wikipedia

Contact

Please direct all technical discussion on targetcli to the target-devel mailing list (post, subscribe, list info, gmane archive).

If you need assistance, or if you have an SLA with Datera, Inc., please contact the company at:

Please see Support for more information.

See also

Notes

  1. Thorsten Leemhuis (2011-03-02). "Kernel Log: Coming in 2.6.38 (Part 4) - Storage". Heise Online. 
  2. Jonathan Corbet (2010-12-22). "Shooting at SCSI targets". lnw.net. 
  3. Linus Torvalds (2011-03-14). "Linux 2.6.38". lkml.org. 
  4. Mark J. Sullivan (January 2010). Intel® Xeon® Processor C5500/C3500 Series Non-Transparent Bridge. 323328-001. Santa Clara: Intel. 
  5. Linus Torvalds (2011-03-14). "Linux 2.6.38". lkml.org. 
  6. Linus Torvalds (2011-01-14). "Target merge". lkml.org. 
  7. Linus Torvalds (2011-05-18). "Linux 2.6.39". lkml.org. 
  8. Linus Torvalds (2011-07-21). "Linux 3.0". lkml.org. 
  9. Linus Torvalds (2011-10-24). "Linux 3.1". lkml.org. 
  10. Linus Torvalds (2011-07-27). "iSCSI merge". lkml.org. 
  11. Linus Torvalds (2012-03-18). "Linux 3.3 release". lkml.org. 
  12. Linus Torvalds (2012-01-18). "InfiniBand/SRP merge". lkml.org. 
  13. Linus Torvalds (2012-07-21). "Linux 3.5 released". marc.info. 
  14. Linus Torvalds (2012-05-31). "scsi-misc". lkml.org. 
  15. Linus Torvalds (2012-05-22). "usb-target-merge". lkml.org. 
  16. Linus Torvalds (2012-05-23). "sbp-target-merge". lkml.org. 
  17. Linus Torvalds (2012-10-01). "Linux 3.6". lkml.org. 
  18. Linus Torvalds (2012-08-13). "tcm_vhost: Initial merge for vhost level target fabric driver". lkml.org. 
  19. Linus Torvalds (2013-04-28). "Linux 3.9 released". lkml.org. 
  20. Linus Torvalds (2013-06-30). "Linux 3.10". marc.org. 

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