The Linux SCSI Target Wiki
The Target is the generic multiprotocol target engine of LIO. Template:AdSense right
Multiprotocol Target Engine
|Original author(s)||Nicholas Bellinger|
|Developer(s)||RisingTide Systems LLC|
|Initial release||January 14, 2011|
|Stable release||4.1.0 / June 20, 2012|
|Preview release||4.2.0-rc5 / June 28, 2012|
|License||GNU General Public License|
The LIO target (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 (such as Target/PSCSI, Target/IBLOCK, Target/FILEIO, Target/RAMDISK), and it operates with a number of protocol-specific fabric modules (such as iSCSI, FCoE, Fibre Channel, InfiniBand).
The high-speed tcm_loop SCSI emulation device can serve any type of raw hardware to local applications and virtual machines as a fully SCSI SPC-4 compliant block device, including PR, ALUA, etc. emulation.
The Target supports the SCSI-3 standard for storage devices from Target/IBLOCK, Target/FILEIO, Target/PSCSI, and Target/RAMDISK subsystem plugins. All SCSI functionality has been implemented in the target engine in a fabric agnostic way, including a number of high-end features, such as Persistent Reservations (PR) and ALUA, which have been available from LIO 3.0, following the SPC-4 standard.
The LIO 3.0 CLI manual describes a simple userspace shell (lio-utils) for LIO v3.0 (Target+iSCSI). It also describes how to setup a number of different subsystem storage object backstores for LIO LUN endpoints:
- 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.
Lastly, the Target engine configuration is mapped into Target/configFS, where it can be configured manually from user space by using inter- and intra-module symbolic links.
The following specifications are available as T10 Working Drafts:
- SCSI Architecture Model - 2 (SAM-2): SAM-2 describes the second generation of the SCSI Architecture Model. Status: Published, 9/11/2002
- SCSI Architecture Model - 3 (SAM-3): SAM-3 describes the third generation of the SCSI Architecture Model. Status: Published, 9/21/2004
- SCSI Architecture Model - 4 (SAM-4): SAM-4 describes the fourth generation of the SCSI Architecture Model. Status: Published, 5/8/2008
- 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
- Small Computer System Interface - 2 (SCSI-2): SCSI-2 defines the second generation of the Small Computer System Interface. Status: Published, 9/7/1993
- Backstore: A physical storage object that provides the actual storage underlying an SCSI Endpoint.
- Endpoint: The combination of an iSCSI Target Name with an iSCSI TPG (IQN + Tag).
- Initiator: The originating end of a SCSI session. Typically a controlling device such as a computer.
- iSCSI Qualified Name (IQN): A name format for iSCSI that uniquely identifies every device in the world (e.g.
- Initiator Session Identifier (ISID): A 48-bit number, generated by the Initiator, that uniquely identifies a session between the Initiator and the Target. This value is created during the login process, and is sent to the target with a Login PDU.
- Target: The receiving end of a SCSI session, typically a device such as a disk drive, tape drive, or scanner.
- Target Port: The combination of an iSCSI Endpoint with one or more LUNs.
- World Wide Name (WWN) or World Wide Identifier (WWID) is a unique identifier which identifies a particular Fibre Channel, ATA or SAS target. Each WWN is an 8 byte number derived from an IEEE OUI and vendor-supplied information, see also WWN Wikipedia entry. There are two formats of WWN defined by the IEEE:
|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)
- RFC 1994: PPP Challenge Handshake Authentication Protocol (CHAP)
- OUI Wikipedia entry
- SCSI Wikipedia entry
- SCSI Tutorial
- SCSI/iSCSI/RAID/SAS Information Sheet
- 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
- WWN Wikipedia entry
- Anatomy of the Linux SCSI subsystem
- List of Adapters by SCSI connector type
- wetpaint.com Fun storage stuff (Ming Zhang)