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.0 / September 19, 2010|
|Preview release||4.0.0-rc5 / October 18, 2010|
|Type||SCSI Target engine|
|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 Target supports the SCSI-3 standard for storage devices from Target/IBLOCK, Target/FILEIO, Target/PSCSI, 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 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 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.
- Command Descriptor Block (CDB): The standard format for SCSI commands. CDBs are commonly 6, 10, or 12 bytes long, though they can be 16 bytes or of variable length.
- Challenge Handshake Authentication Protocol (CHAP): An authentication technique for confirming the identity of one computer to another. Described in RFC 1994.
- Connection Identifier (CID): A 16-bit number, generated by the Initiator, that uniquely identifies a connection between two iSCSI devices. This number is presented during the login phase.
- Endpoint: The combination of an iSCSI Target Name with an iSCSI TPG (IQN + Tag).
- Extended Unique Identifier (EUI): A 64-bit number that uniquely identifies every device in the world. The format consists of 24 bits that are unique to a given company, and 40 bits assigned by the company to each device it builds.
- Initiator: The originating end of a SCSI session. Typically a controlling device such as a computer.
- Internet Protocol Storage (IPS): The class of protocols or devices that use the IP protocol to move data in a storage network. FCIP, iFCP, and iSCSI are all examples of IPS protocols.
- 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.
- Multipath I/O (MPIO): A method by which data can take multiple redundant paths between a server and storage.
- Network Portal: The combination of an iSCSI Endpoint with an IP address plus a TCP port. The TCP port number for the iSCSI protocol defined by IANA is 3260.
- Organizationally Unique Identifier (OUI) is a 24-bit number that is purchased from the IEEE Registration Authority. This identifier uniquely identifies a vendor, manufacturer, or other organization (referred to by the IEEE as the “assignee”) globally or worldwide and effectively reserves a block of each possible type of derivative identifier (such as MAC addresses, group addresses, Subnetwork Access Protocol protocol identifiers, etc.) for the exclusive use of the assignee, see OUI Wikipedia entry. The OUI is subsequently used by the assignee to create particular instances of these identifiers for various purposes, such as the identification of a particular piece of equipment.
- SCSI Architectural Model (SAM): A document that describes the behavior of SCSI in general terms, allowing for different types of devices communicating over various media.
- Target: The receiving end of a SCSI session, typically a device such as a disk drive, tape drive, or scanner.
- Target Group: A collection of fabric module SCSI target endpoints containing SCSI target ports that provide access to individual storage objects.
- Target Port: The combination of an iSCSI Endpoint with one or more LUNs.
- Target Portal Group (TPG): A list of IP addresses and TCP port numbers that determines which interfaces a specific iSCSI target will listen to.
- Target Session Identifier (TSID): A 16-bit number, generated by the target, that uniquely identifies a session between the initiator and the target. This value is created during the login process, and is sent to the initiator with a Login Response PDU.
- 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:
- Original format: addresses are assigned to manufacturers by the IEEE standards committee, and are built into the device at build time, similar to an Ethernet MAC address. The first 2 bytes are either hex 10:00 or 2x:xx (where the x's are vendor-specified) followed by the 3-byte vendor identifier and 3 bytes for a vendor-specified serial number
- New addressing schema: the first nibble is either hex 5 or 6 followed by a 3-byte vendor identifier and 36 bits for a vendor-specified serial number
|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)