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 (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 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 as T10 Working Drafts:
- 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.
- 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.
|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
- wetpaint.com Fun storage stuff (Ming Zhang)