SCST is a
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
licensed
SCSI target
In computer data storage, a SCSI initiator is the endpoint that initiates a SCSI session, that is, sends a SCSI command. The initiator usually does not provide any Logical Unit Numbers (LUNs).
On the other hand, a SCSI target is the endpoint that ...
software stack.
The design goals of this software stack are high performance, high reliability, strict conformance to existing
SCSI
Small Computer System Interface (SCSI, ) is a set of standards for physically connecting and transferring data between computers and peripheral devices. The SCSI standards define commands, protocols, electrical, optical and logical interface ...
standards, being easy to extend and easy to use. SCST does not only support multiple SCSI protocols (
iSCSI
Internet Small Computer Systems Interface or iSCSI ( ) is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP ...
,
FC,
SRP, ...) but also supports multiple local storage interfaces (SCSI pass-through,
block
Block or blocked may refer to:
Arts, entertainment and media Broadcasting
* Block programming, the result of a programming strategy in broadcasting
* W242BX, a radio station licensed to Greenville, South Carolina, United States known as ''96.3 ...
I/O and file I/O) and also storage drivers implemented in user-space via the scst_user driver.
In order to reach maximum performance SCST has been implemented as a set of kernel drivers. SCST is often combined with
RAID
Raid, RAID or Raids may refer to:
Attack
* Raid (military), a sudden attack behind the enemy's lines without the intention of holding ground
* Corporate raid, a type of hostile takeover in business
* Panty raid, a prankish raid by male college ...
,
data deduplication
In computing, data deduplication is a technique for eliminating duplicate copies of repeating data. Successful implementation of the technique can improve storage utilization, which may in turn lower capital expenditure by reducing the overall amou ...
and/or
high-availability cluster
High-availability clusters (also known as HA clusters, fail-over clusters) are groups of computers that support server applications that can be reliably utilized with a minimum amount of down-time. They operate by using high availability softwa ...
software to augment its functionality. The SCST software stack is the basis software of many
SAN systems. Several world records have been set with SAN systems based on SCST.
SCST competes with
LIO Target
In computing, Linux-IO (LIO) Target is an open-source implementation of the SCSI target that has become the standard one included in the Linux kernel. Internally, LIO does not initiate sessions, but instead provides one or more Logical Unit Nu ...
for the same purpose of providing a generic SCSI target module inside the Linux kernel. For the narrower purpose providing a Linux
iSCSI target
Internet Small Computer Systems Interface or iSCSI ( ) is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP ...
, the older IET and STGT modules also enjoy industry support.
Between 2013 and 2017 SCST was primarily maintained by
SanDisk
SanDisk is a brand for flash memory products, including memory cards and readers, USB flash drives, solid-state drives, and digital audio players, manufactured and marketed by Western Digital. The original company, SanDisk Corporation was acquir ...
personnel, after
Fusion-io
Fusion-io, Inc. was a computer hardware and software systems company (acquired by SanDisk Corporation in 2014) based in Cottonwood Heights, Utah, that designed and manufactured products using flash memory technology. The Fusion was marketed ...
acquired the start-up ID7 in 2013, a driving force behind SCST and after
SanDisk
SanDisk is a brand for flash memory products, including memory cards and readers, USB flash drives, solid-state drives, and digital audio players, manufactured and marketed by Western Digital. The original company, SanDisk Corporation was acquir ...
acquired
Fusion-io
Fusion-io, Inc. was a computer hardware and software systems company (acquired by SanDisk Corporation in 2014) based in Cottonwood Heights, Utah, that designed and manufactured products using flash memory technology. The Fusion was marketed ...
in 2014.
Architecture
SCST consists of three groups of modules:
* The SCST core, a protocol-independent engine for processing SCSI commands.
* Target drivers which receive SCSI commands from a SCSI initiator, pass these SCSI to the SCST core and send back replies to the initiator.
* Storage drivers a.k.a. device handlers which interact with the storage medium. The supported local storage interfaces are SCSI, block device, file and scst_user. scst_user is an SCST-specific protocol that allows efficient implementation of storage drivers in user space.
Configuration of all these modules happens via a
sysfs
sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel subsystems, hardware devices, and associated device drivers from the kernel's device model to user space through virtual files. In addition ...
interface. Although direct configuration of SCST via its sysfs interface is convenient, the tool called scstadmin allows to control SCST via its sysfs interface and also to save and restore the SCST configuration.
The following design aspects help SCST to reach the high performance this project is known for:
* The number of threads per storage device that processes SCSI commands is configurable.
* All target driver and storage driver functions invoked by the SCST core are asynchronous, at least when the Linux kernel allows this. It is e.g. not yet possible to perform asynchronous or direct I/O from inside the Linux kernel.
* One
finite-state machine
A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
is associated with each SCSI command. This allows a single command thread to process multiple SCSI commands concurrently.
* Even when using multiple threads per storage device all these threads share the same I/O scheduler context. This sharing improves performance significantly when using e.g. the
CFQ I/O scheduler.
* A scatter-gather vector cache. This cache avoids having to allocate memory via the kernel for each SCSI command.
* Lockless access to certain data structures needed to process SCSI commands. This also means that I/O has to be suspended before any of the data structures that are accessed without locking can be modified.
* SCSI commands can be submitted by a target driver to the SCST core from softirq context. This results in a lower number of context switches compared to having to submit SCSI commands from thread context.
History
In the year 2000 a SCSI target framework was developed by the
University of New Hampshire InterOperability Laboratory
The University of New Hampshire InterOperability Laboratory (UNH-IOL) is an independent test facility that provides interoperability and standards conformance testing for networking, telecommunications, data storage, and consumer technology produ ...
(UNH-IOL). Although the UNH-IOL SCSI target implementation only
supports the
iSCSI
Internet Small Computer Systems Interface or iSCSI ( ) is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP ...
protocol, it was designed such that support for other storage protocols would be easy to add.
In 2004 the SCST project was announced, providing
Fibre Channel
Fibre Channel (FC) is a high-speed data transfer protocol providing in-order, lossless delivery of raw block data. Fibre Channel is primarily used to connect computer data storage to servers in storage area networks (SAN) in commercial data cen ...
and iSCSI support. The initial iSCSI target in SCST was based on the UNH-IOL iSCSI target implementation.
Around that time an alternative iSCSI target software stack was developed by Ardis Technologies.
The iSCSI Enterprise Target software, announced in 2005, is a further evolution of the Ardis stack.
Later in 2005 Chelsio announced an SCST iSCSI target driver for the Chelsio T2 Ethernet adapter family.
In 2006 a target driver for LSI/MPT cards was added.
Later in this year the scstadmin tool was added. This tool allows to save and restore the SCST configuration from or to a file.
In 2007 the UNH-IOL iSCSI target patch in the SCST project was replaced by a fork of IET.
In 2008 an
SRP target driver was donated by Mellanox. Later on this driver was optimized by Bart Van Assche.
In 2009 Marvell donated a target driver for their SAS cards.
Also in 2009 a target driver for Emulex
Fibre Channel
Fibre Channel (FC) is a high-speed data transfer protocol providing in-order, lossless delivery of raw block data. Fibre Channel is primarily used to connect computer data storage to servers in storage area networks (SAN) in commercial data cen ...
/
FCoE
Fibre Channel over Ethernet (FCoE) is a computer network technology that encapsulates Fibre Channel frames over Ethernet networks. This allows Fibre Channel to use 10 Gigabit Ethernet networks (or higher speeds) while preserving the Fibre Channel ...
adapter cards was announced by Emulex.
The same year a sysfs interface has been added to SCST next to the already existing procfs interface.
In 2010 an
FCoE
Fibre Channel over Ethernet (FCoE) is a computer network technology that encapsulates Fibre Channel frames over Ethernet networks. This allows Fibre Channel to use 10 Gigabit Ethernet networks (or higher speeds) while preserving the Fibre Channel ...
target driver was donated by Cisco and Bart Van Assche ported the
IBM System p
The IBM System p is a high-end line of RISC (Power)/UNIX-based servers. It was the successor of the RS/6000 line, and predecessor of the IBM Power Systems server series.
History
The previous RS/6000 line was originally a line of workstations and ...
SCSI target driver to SCST.
In 2011 implicit ALUA support was added to the SCST core and to the scstadmin configuration tool. The three init scripts (scst, iscsi-scst and qla2x00t) were merged into a single init script, simplifying installation and management of SCST.
In 2013 support for QLogic InfiniBand HCA's was added in the SRP target driver.
In January 2014 Mellanox donated an iSER target driver implementation to the SCST project.
In May 2014 QLogic made a 16 Gbit/s QLogic target driver available and also announced to take over maintainership of the SCST QLogic target driver.
In 2016 support for asynchronous buffered and direct file I/O and also a more powerful latency measurement infrastructure were added.
In 2019 the SCST core was modified such that I/O keeps running at full speed if a LUN or storage device is added or removed.
See also
*
Fibre Channel
Fibre Channel (FC) is a high-speed data transfer protocol providing in-order, lossless delivery of raw block data. Fibre Channel is primarily used to connect computer data storage to servers in storage area networks (SAN) in commercial data cen ...
*
Fibre Channel over Ethernet
Fibre Channel over Ethernet (FCoE) is a computer network technology that encapsulates Fibre Channel frames over Ethernet networks. This allows Fibre Channel to use 10 Gigabit Ethernet networks (or higher speeds) while preserving the Fibre Channel ...
(FCoE)
*
InfiniBand
InfiniBand (IB) is a computer networking communications standard used in high-performance computing that features very high throughput and very low latency. It is used for data interconnect both among and within computers. InfiniBand is also used ...
*
iSCSI
Internet Small Computer Systems Interface or iSCSI ( ) is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP ...
*
SCSI RDMA Protocol In computing the SCSI RDMA Protocol (SRP) is a protocol that allows one computer to access SCSI devices attached to another computer via remote direct memory access (RDMA). (SRP)
References
{{reflist, 2
External links
Enterprise Storage OS(ESOS) - An open source, high performance, block-level storage platform.
* Bill Childers
OpenFiler: an Open-Source Network Storage Appliance ''Linux Journal'' issue 181, May 2009.
* Errol Neal
SSD + ZFS/bcache/EnhanceIO + SCST = Hybrid Storage Array? ha-guru.com, 22 July 2014.
Free software
Linux kernel-related software
SCSI
Storage software