<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="Keywords" content="Generic SCSI Target Subsystem for Linux, SCST, SCSI target">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Daniel Fernandes">
<meta name="Robots" content="index,follow">
<meta name="verify-v1" content="N5TwpSXr8cNkQf0gvE3F3sv+TPHL15k4dTo+ZQCeV9Q=">
<link rel="stylesheet" href="images/Orange.css" type="text/css">
<title>SCST: A Generic SCSI Target Subsystem for Linux</title>
</head>

<body>
<div id="wrap">
	<div id="header">
		<div class="logoimg"></div><h1 id="logo"><span class="orange">&nbsp;</span></h1>
		<h2 id="slogan">Generic SCSI Target Subsystem for Linux</h2>
	</div>

	<div id="menu">
		<ul>
			<li id="current"><a href="index.html">Home</a></li>
			<li><a href="https://github.com/SCST-project/scst">Main</a></li>
			<li><a href="https://github.com/SCST-project/scst/releases">News</a></li>
			<li><a href="targets.html">Drivers</a></li>
			<li><a href="downloads.html">Downloads</a></li>
			<li><a href="contributing.html">Contributing</a></li>
			<li><a href="comparison.html">Comparison</a></li>
			<li><a href="users.html">Users</a></li>
		</ul>
	</div>

	<div id="content-wrap">
	  		<div id="main">
				<h1>Generic SCSI Target Subsystem for Linux</h1>

				<p>The generic SCSI target subsystem for Linux (SCST) allows creation of sophisticated storage devices
					from any Linux box. Those
					devices can provide advanced
					functionality, like replication, thin provisioning,
					deduplication, high availability,
					automatic backup, etc. Another class of such devices
					are Virtual Tape Libraries (VTL)
					as well as other disk-based backup solutions.</p>
				<p>SCST devices can use any link which supports
					SCSI-style data exchange: <strong>iSCSI</strong>, <strong>Fibre Channel</strong>, <strong>FCoE</strong>,
					<strong>SAS</strong>,
					<strong>InfiniBand (SRP)</strong>, <strong>Wide (parallel) SCSI</strong>, etc.</p>
				<p>It might
					well be that your favorite storage appliance is running SCST in the firmware.</p>

				<p>SCST project consists from a set of subprojects: generic SCSI target mid-layer itself (SCST core)
					with a set of device handlers as well as target drivers
					and user space utilities.

				<h1>Features of SCST Core</h1>
				<ul>
					<li><span>SCST core provides unified,
					consistent interface between SCSI target drivers and
					Linux kernel as well as between Linux kernel and storage backend
					handlers, connecting target drivers with real or emulated storage backend.</span></li>
					<li><span>SCST core performs all required pre- and post- processing of incoming requests as well as
						 necessary error recovery.</span></li>
					<li><span>SCST core undertakes most problems, related to execution contexts, thus practically eliminating one of the most
								 complicated problem in the kernel drivers development. For example, target drivers for Marvell
								 SAS adapters or for InfiniBand SRP are less 3000 lines of code long.</span></li>
					<li><span>Very low overhead and fine-grained locks allow to reach the
								 maximum performance and scalability. Particularly, incoming requests can be processed in
								 the caller's context or in one of the internal SCST core's tasklets without any
								 extra context switches.</span></li>
					<li><span>Device handlers architecture allows various I/O
								 modes in backstorage handling. For example, pass-through device handlers allow to export real
								 SCSI hardware and vdisk device handler allows to export files as virtual disks.</span></li>
					<li><span>Advanced per-initiator devices visibility management (LUN masking) allows different
								 initiators to see different set of devices with different access permissions. For instance,
								 initiator A could see exported from target T devices X and Y read-writable, and initiator B from
								 the same target T could see devices Y read-only and Z read-writable.
								 This feature is required for hardware targets, which don't have ability to create
								 virtual targets (SAS adapters, for instance).</span></li>
					<li><span>SCST core emulates necessary functionality of SCSI host adapter, because from remote initiators' point of view
								 a SCSI target acts as a SCSI host with its own devices. This is especially important in pass-through mode with
								 one to many relationship, i.e. when multiple initiators can connect to the exported pass-through
								 devices. You can find more deep elaboration why it is needed in <a href="http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html">this</a>
								 message in thread "Question for pass-through target design" in linux-scsi mailing list. Some of the emulated functions are the following:</span>
								 <ul>
									<li><span>Generation of necessary UNIT ATTENTIONs, their storage and delivery to all connected
												 remote initiators.</span></li>

									<li><span>RESERVE/RELEASE functionality.</span></li>

									<li><span>All types of RESETs and other task management functions.</span></li>

									<li><span>REPORT LUNS command as well as SCSI address space management in order to have consistent
												 address space on all remote initiators, since local SCSI devices could not know about each
												 other to report via REPORT LUNS command. Additionally, SCST core responds with error on all
												 commands to non-existing devices and provides access control, so different remote
												 initiators could see different set of devices.</span></li>

									<li><span>Other necessary functionality (task attributes, etc.) as specified in SCSI standards.</span></li>
								 </ul>
					</li>

					<li><span>SCST core has multithreaded design and complete SMP support, so, if necessary, all your CPU cores will participate in the commands
								 processing.</span></li>
					<li><span>Well documented.</span></li>
				</ul>
				<p>Interoperability between remote and local SCSI initiators (i.e. sd, st, etc.) is the additional issue that SCST is going to
				address (it is not implemented yet). It is necessary, because local SCSI initiators can change the state of the
				device, for example RESERVE the device, or some of its parameters and that could be done behind SCST, i.e. remote initiators
				will not know about it, which could
				lead to various problems, including data corruption. Thus, RESERVE/RELEASE commands, locally generated
				UNIT ATTENTIONs, etc. should be intercepted and passed through SCST core.</p>

				<p>You can find comparison of SCST with other SCSI targets on the <a href="comparison.html">Comparison</a> page.
				Some highlights what it can mean for end users you can find on the <a href="target_iscsi.html">iSCSI-SCST</a> page.

				<h1>SCST core supports the following I/O modes</h1>
				<ul>
					<li><span>Pass-through mode with one to many relationship, i.e. when multiple initiators can
						connect to the exported pass-through devices, for virtually all SCSI devices types: disks (type 0),
						tapes (type 1), processors (type 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and RAID
						controllers (type 0xC). In this mode you can, for instance, share your parallel SCSI tape or SATA
						DVD-RW device to your iSCSI network.</span></li>
    				<li><span>FILEIO mode, which allows to use files on file systems or block devices as virtual
    					remotely available SCSI disks or CDROMs with benefits of the Linux cache.</span></li>
    				<li><span>BLOCKIO mode, which performs direct block IO with a block device, bypassing
    					page-cache for all operations. This mode works well with high-end storage HBAs and for applications that
    					either do not need caching between application and disk or need the large block throughput.</span></li>
    				<li><span>User space mode using scst_user device handler, which allows to implement in the
    					user space high performance virtual SCSI devices. Comparing with fully in-kernel dev handlers
    					this mode has very low overhead (few %%).</span></li>
    				<li><span>Performance testing device handlers as well as NULLIO mode to provide
    					a way for direct performance measurements without overhead of actual data
    				        transfers from/to underlying SCSI devices.
    					</span></li>
				</ul>

				<h1>Certification</h1>

				<p>SCST core engine has passed VMware certification as part of
				<a href="http://scalecomputing.com/products">Scale&rsquo;s Intelligent Clustered Storage</a> technology
				and <a href="http://www.iss-integration.com/supercore.html">ISS STORCIUM</a> solution. It also has passed
				VMware and Microsoft certification as part of <a href="https://www.sandisk.com/business/datacenter/products/flash-software/ion-accelerator">SanDisk ION Accelerator</a>
				and storage arrays developed by <a href="http://www.open-e.com/">Open-E, Inc</a>.</p>

				<p>In October 2012 Hewlett-Packard ProLiant BL465c Gen8 witrh SCST-based storage earned the maximum
				score 59.99@62 tiles in <a href="http://www.vmware.com/a/vmmark">VMmark Version 2.1.1</a>.
				In June 2016 this result was updated by <a href="http://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/vmmark/2016-06-07-HPE-ProLiant-DL580G9.pdf">HPE ProLiant DL580 Gen9</a></p>
	  		</div>
			<div id="rightbar">
				<h1>Documentation</h1>
				<p><a href="scst_pg.html">HTML</a></p>
				<p><a href="scst_pg.pdf">PDF</a></p>
				<p><a href="https://events.static.linuxfound.org/sites/events/files/slides/lcna15_bvanassche.pdf">SCST overview slides</a></p>
				<p><a href="http://monklinux.blogspot.com/2012/02/scst-configuration-how-to-using-gentoo.html">Gentoo HOWTO</a></p>
				<p><a href="iscsi-scst-howto.txt">HOWTO For iSCSI-SCST</a></p>
				<p><a href="SCST_Gentoo_HOWTO.txt">Gentoo HOWTO For iSCSI-SCST</a></p>
				<p><a href="qla2x00t-howto.html">HOWTO For QLogic Target Driver</a></p>
				<p><a href="sgv_cache.html">SCST SGV Cache Description</a></p>
				<p><a href="http://scst.sourceforge.net/scst_user_spec.pdf">SCST user space device handler interface description</a></p>
				<h1>Articles</h1>
				<p>By Marc Smith:</p>
				<p><a href="http://marcitland.blogspot.com/2011/03/accelerating-vdi-using-scst-and-ssds.html">Accelerating VDI Using SCST and SSDs</a></p>
				<p><a href="http://marcitland.blogspot.com/2013/04/building-using-highly-available-esos.html">Building &amp; Using a Highly Available ESOS Disk Array</a></p>
				<p><a href="http://marcitland.blogspot.com/2014/07/open-storage-dual-controller-oss-disk.html">Open Storage: Dual-Controller OSS Disk Array</a></p>
				<h1>SCST 0.9.6 graphs</h1>
				<p><a href="images/init_scst.png">init_scst</a></p>
				<p><a href="images/scst_cmd_thread.png">scst_cmd_thread</a></p>
				<p><a href="images/scst_mgmt_cmd_thread.png">scst_mgmt_cmd_thread</a></p>
				<p><a href="images/scst_mgmt_thread.png">scst_mgmt_thread</a></p>
				<p>all by Ming Zhang</p>
				<h1>QUESTIONS</h1>
				<p>If you have any questions you can ask them via<br><a href="http://lists.sourceforge.net/lists/listinfo/scst-devel">
					scst-devel mailing list</a><br><br>
					See <a href="http://sourceforge.net/mail/?group_id=110471">mailing lists page</a> for more info about SCST mailing
					lists.</p>
				<h1>&nbsp;</h1>
				<p><a href="http://sourceforge.net/donate/index.php?group_id=110471">
				<img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project"> </a></p>
				<h1>&nbsp;</h1>
				<p><a href="http://validator.w3.org/check?uri=referer">
					<img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>
  				</p>
				<p><a href="http://jigsaw.w3.org/css-validator/check/referer">
        			<img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
				</p>
			</div>
	</div>
</div>
<!-- footer starts here -->
<div id="footer">
	<p>&copy; Copyright 2004 - 2021<b><font class="names"> Vladislav Bolkhovitin, Bart Van Assche &amp; others</font></b>&nbsp;&nbsp;
	Design by: <b><font class="names">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</div>
<!-- footer ends here -->
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/scst/" : "http://apps.sourceforge.net/piwik/scst/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://apps.sourceforge.net/piwik/scst/piwik.php?idsite=1" alt="piwik"></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>
