The Linux SCSI Target Wiki
tcm_loop SCSI Emulation Device
|Original author(s)||Nicholas Bellinger|
|Initial release||May 18, 2011|
|Stable release||4.1.0 / June 20, 2012|
|Preview release||4.2.0-rc5 / June 28, 2012|
|License||GNU General Public License|
- See Target for a complete overview over all fabric modules.
It provides full local SCSI device emulation (SPC-3 and SPC-4) for raw block storage objects. It thus makes any raw block device apear to the Target as a full SPC-3/SPC-4 SCSI compliant device with the corresponding CDB-level SAS emulation, for access from any SCSI LLD driver.
tcm_loop minimizes overhead - it delivers >12 GB/s (native) and >2 GB/s (from a single KVM guest, without hardware assist) on Intel Nehalem platforms. This provides e.g., unmodified guest operating systems, such as VMware ESX or VMware vSphere, to use the full SPC-3/SPC-4 SCSI functionality on any type of local raw block storage object they require.
Use targetcli from Datera, Inc. to configure tcm_loop targets. targetcli aggregates service modules via a core library, and exports them through a unified API. It includes the Unified Target to configure single-node SANs independently of their underlying fabric(s).
tcm_loop targets can be configured as described in tcm_loop/targetcli.
The type of SCSI fabric features that are available with tcm_loop (Target mode emulated SAS ports) includes the complete set of SPC-3 logic in the Target engine including advanced features such as PRs, ALUA, etc.
Target 4 tcm_loop also supports high level fabric emulation. That is, depending on which WWN is used to create the configFS group in /sys/kernel/config/target/loopback/$WWN, it configures itself to return iSCSI, SAS or FC device identifiers for the SCSI LUN protocol identifiers in the EVPD 0x83 device identifier page.
The entire corresponding logic resides in target_core_fabric_lib.c, and is shared by the different target fabric modules. The code simply contains magic numbers defined for different protocols in SPC-4, and is commented using pieces directly from SPC-4.
|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|
- RTS OS, targetcli
- ConfigFS: tcm_loop/configFS (low level kernel API)
- iSCSI, Fibre Channel, FCoE, InfiniBand, IBM vSCSI
- ↑ Nicholas Bellinger (10/19/2009). "[TCM_LOOP]: Add a virtual SCSI loopback fabric module". lkml.org.
- ↑ Nicholas Bellinger (3/18/2011). "[SCSI] tcm_loop: Add multi-fabric Linux/SCSI LLD fabric module". lkml.org.