SCST

Last updated
SCST
Stable release
3.6 / January 17, 2022 (2022-01-17)
Repository github.com/SCST-project/scst
Written in C
Operating system Linux
Type Block storage
License GNU General Public License
Website scst.sourceforge.net

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]

Contents

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]

Architecture

SCST Architecture Scst-architecture-diagram.png
SCST Architecture

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:

History

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.

See also

Related Research Articles

<span class="mw-page-title-main">Device driver</span> Computer program that operates or controls a device that is attached to a computer

In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used.

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.

<span class="mw-page-title-main">InfiniBand</span> Network standard

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. By 2014, it was the most commonly used interconnect in the TOP500 list of supercomputers, until about 2016.

<span class="mw-page-title-main">Host adapter</span> Computer hardware device

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.

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).

<span class="mw-page-title-main">UEFI</span> Operating system and firmware specification

Unified Extensible Firmware Interface is a specification that defines the architecture of the platform firmware used for booting and its interface for interaction with the operating system. Examples of firmware that implement the specification are AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O. UEFI replaces the BIOS which was present in the boot ROM of all personal computers that are IBM PC compatible, although it can provide backwards compatibility with the BIOS using CSM booting. Intel developed the original Extensible Firmware Interface (EFI) specification. Some of the EFI's practices and data formats mirror those of Microsoft Windows. In 2005, UEFI deprecated EFI 1.10.

<span class="mw-page-title-main">USB mass storage device class</span>

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.

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.

The iSCSI Extensions for RDMA (iSER) is a computer network protocol that extends the Internet Small Computer System Interface (iSCSI) protocol to use Remote Direct Memory Access (RDMA). RDMA is provided by either the Transmission Control Protocol (TCP) with RDMA services (iWARP) that uses existing Ethernet setup and therefore no need of huge hardware investment, RoCE that does not need the TCP layer and therefore provides lower latency, or InfiniBand. It permits data to be transferred directly into and out of SCSI computer memory buffers without intermediate data copies and without much CPU intervention.

<span class="mw-page-title-main">OpenFabrics Alliance</span> Organization

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.

<span class="mw-page-title-main">Fibre Channel over Ethernet</span> Computer network technology

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.

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.

Oracle VM Server for x86 is the server virtualization offering from Oracle Corporation. Oracle VM Server for x86 incorporates the free and open-source Xen hypervisor technology, supports Windows, Linux, and Solaris guests and includes an integrated Web based management console. Oracle VM Server for x86 features fully tested and certified Oracle Applications stack in an enterprise virtualization environment.

SCSI / ATA Translation (SAT) is a set of standards developed by the T10 subcommittee, defining how to communicate with ATA devices through a SCSI application layer. The standard attempts to be consistent with the SCSI architectural model, the SCSI Primary Commands, and the SCSI Block Commands standards.

<span class="mw-page-title-main">Fusion-io</span> American technology company

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.

<span class="mw-page-title-main">USB Attached SCSI</span> Computer protocol for running the SCSI command set over USB for storage drives

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 initialism 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.

<span class="mw-page-title-main">LIO (SCSI target)</span> Open-source version of SCSI 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 Numbers (LUNs), waits for SCSI commands from a SCSI initiator, and performs required input/output data transfers. LIO supports common storage fabrics, including FCoE, Fibre Channel, IEEE 1394, iSCSI, iSCSI Extensions for RDMA (iSER), SCSI RDMA Protocol (SRP) and USB. It is included in most Linux distributions; native support for LIO in QEMU/KVM, libvirt, and OpenStack makes LIO also a storage option for cloud deployments.

<span class="mw-page-title-main">Converged network adapter</span> Computer input/output device

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.

References

  1. Van Assche, Bart (19 August 2015). SCST, a SCSI Target Framework (PDF). LinuxCon North America 2015. Seattle.
  2. Bolkhovitin, Vladislav (December 20, 2012). "SCST Users".
  3. "New VMmark Cloud Computing World Record set with Cisco UCS, VMware, and Fusion-io". Fusion-io. May 10, 2013. Archived from the original on July 2, 2014. Retrieved August 12, 2018.
  4. "HP Achieves Two New #1 VMmark Virtualization Benchmarks with ION Data Accelerator". Fusion-io. September 12, 2013. Archived from the original on June 16, 2014. Retrieved August 12, 2018.
  5. "HP achieves world records for 2P blade and 2P rack-mount server virtualization performance on VMmark 2.5.1 benchmark" (PDF). HP. October 2013.
  6. "The K2 Tops Two Million IOPS Using a Single All-Flash Storage System". Kaminario. October 4, 2012.
  7. "A tale of two SCSI targets [LWN.net]".
  8. Florian Haas, "Replicate Everything! Highly Available iSCSI Storage with DRBD and Pacemaker", (Linux iSCSI: a Tale of Four Targets section) Linux Journal Issue #217, May 2012
  9. Meyer, David (18 March 2013). "Fusion-io picks up software-defined storage firm ID7 for SCST chops". Gigaom. Retrieved 20 July 2014.
  10. O'Brien, Kevin (18 March 2013). "Fusion-io Acquires ID7, Developers of SCST" . Retrieved 20 July 2014.
  11. "Fusion-io ID7 - Accelerating Shared Storage with Software Defined Solutions". Fusion-io. Archived from the original on August 4, 2014. Retrieved August 12, 2018.
  12. Iyer, Jay (23 July 2014). "SanDisk Completes Acquisition of Fusion-io". SanDisk.
  13. Edge, Jake (April 3, 2012). "2012 Linux Storage, Filesystem, and Memory Management Summit - Day 1".
  14. Van Assche, Bart (December 25, 2012). "More fine-grained locking in SCST".
  15. Bolkhovitin, Vladislav; Van Assche, Bart (September 26, 2012). "SCST README".
  16. Palekar, Ashish; Ganapathy, Narendran; Chadda, Anshul; Russell, Robert D. (2001). "Design and implementation of a Linux SCSI target for storage area networks". Proceedings of the 5th Annual Linux Showcase & Conference. USENIX Association. 5: 11–18. CiteSeerX   10.1.1.61.2706 .
  17. Bolkhovitin, Vladislav. "ANNOUNCE Generic SCSI Target Middle Level for Linux (SCST) with target drivers".
  18. Fujita, Tomonori; Masanori, Ogawara (2004). "Analysis of iSCSI target software". Proceedings of the international workshop on Storage network architecture and parallel I/Os - SNAPI '04. Snapi '04. ACM. pp. 25–32. doi:10.1145/1162628.1162632. ISBN   9781450378222. S2CID   14730273.{{cite book}}: CS1 maint: date and year (link)
  19. Fujita, Tomonori (June 1, 2004). "iSCSI Enterprise Target".
  20. Fujita, Tomonori (March 1, 2005). "ANNOUNCE iSCSI enterprise target software".
  21. Smith, Randy (September 7, 2005). "Chelsio Delivers Next-Generation iSCSI Product Family Featuring Breakthroughs in Performance and Port Density". Chelsio.
  22. Habbinga, Erik (December 13, 2006). "LSI/MPT target driver".
  23. Buechler, Mark R. (November 14, 2006). "Initial scstadmin commit".
  24. Bolkhovitin, Vladislav (August 15, 2007). "Initial iSCSI-SCST commit".
  25. Pham, Vu (May 17, 2008). "Initial SRP target driver commit".
  26. Van Assche, Bart (December 20, 2010). "PATCH 4/7 scst: Add SRP target driver".
  27. Yan, Andi (April 14, 2009). "Target driver for Marvell 88SE64xx(3G) and 88SE94xx(6G) SAS cards".
  28. Bolkhovitin, Vladislav (July 8, 2009). "ANNOUNCE SCST Target driver support for Emulex lpfc FC/FCoE adapters".
  29. Lane, Katherine (September 15, 2009). "SDK Brings Enhanced Value and Expanded Market Opportunity to Data Center Storage Solution Developers". Emulex. Archived from the original on October 15, 2009. Retrieved August 10, 2018.
  30. "TargetConnect Software Developer Kit: Accelerate, Simplify and Enhance Target Driver Development". Emulex. September 15, 2009. Archived from the original on October 14, 2009. Retrieved August 10, 2018.
  31. Eykholt, Joe (February 20, 2010). "Initial FCoE target driver commit".
  32. Van Assche, Bart (December 20, 2010). "PATCH 5/7 ibmvstgt: Port from tgt to SCST".
  33. Van Assche, Bart (May 11, 2011). "PATCH scst: Add implicit ALUA support".
  34. Van Assche, Bart (Mar 17, 2013). "PATCH ib_srpt: Add support for QLogic InfiniBand HCA's".
  35. Burman, Yan (January 21, 2014). "PATCH 0/9 iSER support for SCST".
  36. Grigsby, Duane (May 20, 2014). "QLogic's 16G FC/FCoE HBA support".