The Linux SCSI Target Wiki
The Target is the generic multiprotocol target engine of LIO.
Generic Target Engine
|Original author(s)||Nicholas Bellinger|
|Developer(s)||RisingTide Systems LLC|
|Initial release||March 15, 2007|
|Stable release||3.5 / November 1, 2010|
|Preview release||4.0.0-rc5 / November 15, 2010|
|Type||SCSI Target engine|
|License||GNU General Public License|
The LIO target storage engine (
target_core_mod.ko) is the generic multiprotocol target engine of LIO.
Architecturally, it can run on a number of different Linux environments, allows access to storage objects from the SCSI, block and VFS subsystems (Target/PSCSI, Target/IBLOCK, Target/FILEIO, Target/RAMDISK, etc.), and it operates with a number of protocol-specific fabric modules (iSCSI, FCoE, Fibre Channel, etc.).
The Target engine is mapped into Target/configFS, where it can be configured from user space by using inter- and intra-module symbolic links.
- lio-utils: basic Target configuration tools.
- Target CLI: basic Target v3.x CLI operations using tcm_node.py from lio-utils.
- iSCSI CLI: basic iSCSI v3.x CLI operations using lio_node.py and lio_dump.py from lio-utils.
- HOWTO: starting the Target.
The Target supports the SCSI-3 standard for virtual storage devices from Target/IBLOCK, Target/FILEIO, and Target/RAMDISK subsystem plugins. Some of the most notable functionality includes Persistent Reservations (PR) and ALUA, which have been implemented in LIO 3.0, following the SPC-4 standard.
SCSI-3 and greater revisions are supported using the Target/PSCSI subsystem plugin for Linux/SCSI passthrough, but only from control CDBs capable by the device firmware. Linux/SCSI block devices can take advantage of PR and ALUA functionality via the tcm_loop loopback device.
The following specifications are available from the T10 drafts website:
- SCSI Primary Commands - 2 (SPC-2): contains the second-generation definition of the basic commands for all SCSI devices. SPC-2 is used in conjuction with a standard for the specific device type. In 2006, the ANSI SPC-2 standard was replaced with ISO/IEC 14776-452:2005, which is available through ANSI. Status: Published, 7/18/2001
- SCSI Primary Commands - 3 (SPC-3): contains the third-generation definition of the basic commands for all SCSI devices. SPC-3 is used in conjuction with a standard for the specific device type. Status: Published, 5/4/2005
- SCSI Primary Commands - 4 (SPC-4): contains the fourth-generation definition of the basic commands for all SCSI devices. SPC-4 is used in conjuction with a standard for the specific device type. Status: Development, 11/16/2010
|Timeline of the LinuxIO|
|Feature||LIO Core||Loop back||FCoE||iSCSI||Perf|| SRP||CM WQ|| FC|
|vHost||Perf||Misc||16 GFC||iSER||Misc||VAAI||Misc|| DIF Core|
|DIF iSER||DIF FC vhost||TCMU Xen||Misc||Misc||virtio 1.0||Misc||NVMe OF|
- ATA over Ethernet (AoE)
- FibreChannel over Ethernet (FCoE)
- FibreChannel (FC)
- InfiniBand (IB)
- iSCSI Extensions for RDMA (iSER)
- Internet Storage Name Service (iSNS)
- Internet Wide Area RDMA Protocol (iWarp)
- Serial attached SCSI (SAS)
- Service Location Protocol (SLP)
- SCSI RDMA Protocol (SRP)
- Storage Area Network (SAN)
- SCSI Wikipedia entry
- T10 Technical Committee (SCSI standards)
- T10 Technical Committee - Protocols and Physical Layers
- T10 Primary Commands (SPC): using SPC-3/4
- T10 Block Commands (SBC) using SBC-3
- SCSI Tutorial
- SCSI/iSCSI/RAID/SAS Information Sheet
- Anatomy of the Linux SCSI subsystem
- List of Adapters by SCSI connector type