Stable release | 3.8 / January 15, 2024 |
---|---|
Repository | github |
Written in | C |
Operating system | Linux |
Type | Block storage |
License | GNU General Public License |
Website | scst |
SCST is a GPL licensed SCSI target software stack. The design goals of this software stack are high performance, high reliability, strict conformance to existing SCSI standards, being easy to extend and easy to use. SCST does not only support multiple SCSI protocols (iSCSI, FC, SRP, ...) but also supports multiple local storage interfaces (SCSI pass-through, block I/O and file I/O) and also storage drivers implemented in user-space via the scst_user driver. [1]
In order to reach maximum performance SCST has been implemented as a set of kernel drivers. SCST is often combined with RAID, data deduplication and/or high-availability cluster software to augment its functionality. The SCST software stack is the basis software of many SAN systems. [2] Several world records have been set with SAN systems based on SCST. [3] [4] [5] [6]
SCST competes with LIO Target for the same purpose of providing a generic SCSI target module inside the Linux kernel. [7] For the narrower purpose providing a Linux iSCSI target, the older IET and STGT modules also enjoy industry support. [8]
Between 2013 and 2017 SCST was primarily maintained by SanDisk personnel, after Fusion-io acquired the start-up ID7 in 2013, a driving force behind SCST [9] [10] [11] and after SanDisk acquired Fusion-io in 2014. [12]
SCST consists of three groups of modules:
Configuration of all these modules happens via a sysfs 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:
In the year 2000 a SCSI target framework was developed by the University of New Hampshire InterOperability Laboratory (UNH-IOL). Although the UNH-IOL SCSI target implementation only supports the iSCSI protocol, it was designed such that support for other storage protocols would be easy to add. [16]
In 2004 the SCST project was announced, providing Fibre Channel and iSCSI support. The initial iSCSI target in SCST was based on the UNH-IOL iSCSI target implementation. [17] Around that time an alternative iSCSI target software stack was developed by Ardis Technologies. [18]
The iSCSI Enterprise Target software, announced in 2005, is a further evolution of the Ardis stack. [19] [20] Later in 2005 Chelsio announced an SCST iSCSI target driver for the Chelsio T2 Ethernet adapter family. [21]
In 2006 a target driver for LSI/MPT cards was added. [22] Later in this year the scstadmin tool was added. This tool allows to save and restore the SCST configuration from or to a file. [23]
In 2007 the UNH-IOL iSCSI target patch in the SCST project was replaced by a fork of IET. [24]
In 2008 an SRP target driver was donated by Mellanox. [25] Later on this driver was optimized by Bart Van Assche. [26]
In 2009 Marvell donated a target driver for their SAS cards. [27]
Also in 2009 a target driver for Emulex Fibre Channel/FCoE adapter cards was announced by Emulex. [28] [29] [30]
The same year a sysfs interface has been added to SCST next to the already existing procfs interface.
In 2010 an FCoE target driver was donated by Cisco [31] and Bart Van Assche ported the IBM System p SCSI target driver to SCST. [32]
In 2011 implicit ALUA support was added to the SCST core and to the scstadmin configuration tool. [33] 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. [34]
In January 2014 Mellanox donated an iSER target driver implementation to the SCST project. [35]
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. [36]
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.
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 network. iSCSI facilitates data transfers over intranets and to manage storage over long distances. It can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval.
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 as either a direct or switched interconnect between servers and storage systems, as well as an interconnect between storage systems. It is designed to be scalable and uses a switched fabric network topology. Between 2014 and June 2016, it was the most commonly used interconnect in the TOP500 list of supercomputers.
In computer hardware a host controller, host adapter or host bus adapter (HBA) connects a computer system bus which acts as the host system to other network and storage devices. The terms are primarily used to refer to devices for connecting SCSI, SAS, NVMe, Fibre Channel and SATA devices. Devices for connecting to FireWire, USB and other devices may also be called host controllers or host adapters.
A World Wide Name (WWN) or World Wide Identifier (WWID) is a unique identifier used in storage technologies including Fibre Channel, Parallel ATA, Serial ATA, SCSI and Serial Attached SCSI (SAS).
TCP offload engine (TOE) is a technology used in some network interface cards (NIC) to offload processing of the entire TCP/IP stack to the network controller. It is primarily used with high-speed network interfaces, such as gigabit Ethernet and 10 Gigabit Ethernet, where processing overhead of the network stack becomes significant. TOEs are often used as a way to reduce the overhead associated with Internet Protocol (IP) storage protocols such as iSCSI and Network File System (NFS).
Unified Extensible Firmware Interface is a specification for the firmware architecture of a computing platform. When a computer is powered on, the UEFI-implementation is typically the first that runs, before starting the operating system. Examples include AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O.
The USB mass storage device class is a set of computing communications protocols, specifically a USB Device Class, defined by the USB Implementers Forum that makes a USB device accessible to a host computing device and enables file transfers between the host and the USB device. To a host, the USB device acts as an external hard drive; the protocol set interfaces with a number of storage devices.
ATA over Ethernet (AoE) is a network protocol developed by the Brantley Coile Company, designed for simple, high-performance access of block storage devices over Ethernet networks. It is used to build storage area networks (SANs) with low-cost, standard technologies.
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 to providing information about various devices and kernel subsystems, exported virtual files are also used for their configuration.
Kernel-based Virtual Machine (KVM) is a free and open-source virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the mainline Linux kernel in version 2.6.20, which was released on February 5, 2007. KVM requires a processor with hardware virtualization extensions, such as Intel VT or AMD-V. KVM has also been ported to other operating systems such as FreeBSD and illumos in the form of loadable kernel modules.
The OpenFabrics Alliance is a non-profit organization that promotes remote direct memory access (RDMA) switched fabric technologies for server and storage connectivity. These high-speed data-transport technologies are used in high-performance computing facilities, in research and various industries.
On Linux, network block device (NBD) is a network protocol that can be used to forward a block device from one machine to a second machine. As an example, a local machine can access a hard disk drive that is attached to another computer.
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 while preserving the Fibre Channel protocol. The specification was part of the International Committee for Information Technology Standards T11 FC-BB-5 standard published in 2009. FCoE did not see widespread adoption.
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). The SRP protocol is also known as the SCSI Remote Protocol. The use of RDMA makes higher throughput and lower latency possible than what is generally available through e.g. the TCP/IP communication protocol.
Fusion-io, Inc. was a computer hardware and software systems company based in Cottonwood Heights, Utah, that designed and manufactured products using flash memory technology. The Fusion ioMemory was marketed for applications such as databases, virtualization, cloud computing, big data. Their ioDrive product was considered around 2011 to be one of the fastest storage devices on the market.
USB Attached SCSI (UAS) or USB Attached SCSI Protocol (UASP) is a computer protocol used to move data to and from USB storage devices such as hard drives (HDDs), solid-state drives (SSDs), and thumb drives. UAS depends on the USB protocol, and uses the standard SCSI command set. Use of UAS generally provides faster transfers compared to the older USB Mass Storage Bulk-Only Transport (BOT) drivers.
NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer's non-volatile storage media usually attached via the PCI Express bus. The initial NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCIe add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices.
The Linux-IOTarget (LIO) is an open-source Small Computer System Interface (SCSI) target implementation included with the Linux kernel.
A converged network adapter (CNA), also called a converged network interface controller (C-NIC), is a computer input/output device that combines the functionality of a host bus adapter (HBA) with a network interface controller (NIC). In other words, it "converges" access to, respectively, a storage area network and a general-purpose computer network.
Enterprise Storage OS, also known as ESOS, is a Linux distribution that serves as a block-level storage server in a storage area network (SAN). ESOS is composed of open-source software projects that are required for a Linux distribution and several proprietary build and install time options. The SCST project is the core component of ESOS; it provides the back-end storage functionality.