Web fixes and new images from Daniel Fernandes <dfernandes1978@hotmail.com>
[mirror/scst/.git] / www / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
3 <head>\r
4 <meta name="Keywords" content="Generic SCSI Target Subsystem for Linux, SCST, SCSI target" />\r
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
6 <meta name="author" content="Daniel Fernandes"/>\r
7 <meta name="Robots" content="index,follow" />\r
8 <meta name="verify-v1" content="N5TwpSXr8cNkQf0gvE3F3sv+TPHL15k4dTo+ZQCeV9Q=" />\r
9 <link rel="stylesheet" href="images/Orange.css" type="text/css" />      \r
10 <title>SCST: A Generic SCSI Target Subsystem for Linux</title>\r
11 </head>\r
12 \r
13 <body>\r
14 <div id="wrap"> \r
15         <div id="header">       \r
16                 <div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>\r
17                 <h2 id="slogan">Generic SCSI Target Subsystem for Linux</h2>    \r
18         </div>\r
19         <div id="menu">\r
20                 <ul>\r
21                         <li id="current"><a href="index.html">Home</a></li>
22                         <li><a href="http://www.sourceforge.net/projects/scst">Main/News</a></li>\r
23                         <li><a href="targets.html">Drivers</a></li>\r
24                         <li><a href="downloads.html">Downloads</a></li>\r
25                         <li><a href="contributing.html">Contributing</a></li>\r
26                         <li><a href="comparison.html">Comparison</a></li>                       \r
27                         <li><a href="solutions.html">Solutions</a></li>
28                 </ul>\r
29         </div>  \r
30         <div id="content-wrap">\r
31                         <div id="main">\r
32                                 <h1>Generic SCSI Target Subsystem for Linux</h1>
33                                                 \r
34                                 <p>The <strong>generic SCSI target subsystem for Linux (SCST)</strong> is an alternative
35                                         implementation of a SCSI target subsystem for Linux. It provides unified,
36                                         consistent interface between SCSI target drivers and 
37                                         Linux kernel as well as between Linux kernel and storage backend
38                                         handlers, connecting target drivers with real or emulated storage backend.
39                                         
40                                 <p>SCST allows creation of sophisticated storage devices, which  provide advanced 
41                                         functionality, like <strong>replication</strong>, <strong>thin provisioning</strong>,
42                                         <strong>deduplication</strong>, <strong>high availability</strong>,
43                                         <strong>automatic backup</strong>, etc. Another class of such devices
44                                         are <strong>Virtual Tape Libraries</strong> (VTL)
45                                         as well as other disk-based backup solutions. SCST created devices not
46                                         limited by IP networking only. They can use any link which supports
47                                         SCSI-style data exchange, including <strong>Fibre Channel</strong>,
48                                         <strong>iSCSI</strong>, <strong>SAS</strong>,
49                                         <strong>InfiniBand</strong> and <strong>parallel (Wide) SCSI</strong>. It might
50                                         well be that your favorite storage appliance running SCST in the firmware.</p>
51
52                                 <p>SCST project consists from a set of subprojects: <strong>generic SCSI target mid-layer itself (SCST core)</strong>
53                                         with a set of <strong>device handlers</strong> as well as <strong>target drivers</strong>
54                                         and <strong>user space utilities</strong>.
55                                 
56                                 <h1>Features of SCST Core</h1>
57                                 <ul>                                    \r
58                                         <li><span>SCST core has simple, easy to use interface with target drivers. 
59                                                                  SCST core performs all required pre- and post- processing of incoming requests as well as 
60                                                                  necessary error recovery.</span></li>\r
61                                         <li><span>SCST core undertakes most problems, related to execution contexts, thus practically eliminating one of the most 
62                                                                  complicated problem in the kernel drivers development. For example, target drivers for QLogic 
63                                                                  22xx/23xx adapters and for InfiniBand SRP are only about 2300 lines of code long.</span></li>
64                                         <li><span>Very low overhead, fine-grained locks and simplest commands processing path allow to reach 
65                                                                  maximum possible performance and scalability. Particularly, incoming requests can be processed in 
66                                                                  the caller's context or in one of the internal SCST core's tasklets without any
67                                                                  extra context switches.</span></li>
68                                         <li><span>Device handlers, i.e. plugins, architecture allows various I/O 
69                                                                  modes in backstorage handling. For example, pass-through device handlers allows to use real 
70                                                                  SCSI hardware and vdisk device handler allows to use files as virtual disks.</span></li>
71                                         <li><span>Advanced per-initiator devices visibility management (LUN masking) allows different 
72                                                                  initiators to see different set of devices with different access permissions. For instance, 
73                                                                  initiator A could see exported from target T devices X and Y read-writable, and initiator B from 
74                                                                  the same target T could see devices Y read-only and Z read-writable.
75                                                                  This feature is required for hardware targets, which don't have ability to create
76                                                                  virtual targets (SAS adapters, for instance).</span></li>
77                                         <li><span>SCST core emulates necessary functionality of SCSI host adapter, because from remote initiators' point of view 
78                                                                  a SCSI target acts as a SCSI host with its own devices. This is especially important in pass-through mode with 
79                                                                  one to many relationship, i.e. when multiple initiators can connect to the exported pass-through 
80                                                                  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> 
81                                                                  message in thread "Question for pass-through target design" in linux-scsi mailing list. Some of the emulated functions are the following:
82                                                                  <ul>
83                                                                         <li><span>Generation of necessary UNIT ATTENTIONs, their storage and delivery to all connected 
84                                                                                                  remote initiators.</span></li>                                                          
85
86                                                                         <li><span>RESERVE/RELEASE functionality.</span></li>
87
88                                                                         <li><span>All types of RESETs and other task management functions.</span></li>
89
90                                                                         <li><span>REPORT LUNS command as well as SCSI address space management in order to have consistent 
91                                                                                                  address space on all remote initiators, since local SCSI devices could not know about each
92                                                                                                  other to report via REPORT LUNS command. Additionally, SCST core responds with error on all 
93                                                                                                  commands to non-existing devices and provides access control, so different remote 
94                                                                                                  initiators could see different set of devices.</span></li>
95
96                                                                         <li><span>Other necessary functionality (task attributes, etc.) as specified in SAM-2, SPC-2, SAM-3,
97                                                                                                  SPC-3 and other SCSI standards.</span></li>
98                                                                  </ul>
99                                                                  </span></li>
100
101                                         <li><span>SCST core has multithreaded design and complete SMP support, so, if necessary, all your CPU cores will participate in the commands
102                                                                  processing.</span></li>
103                                         <li><span>Well documented.</span></li>                                                  \r
104                                 </ul>                                   
105                                 <p>Interoperability between remote and local SCSI initiators (i.e. sd, st, etc.) is the additional issue that SCST is going to 
106                                 address (it is not implemented yet). It is necessary, because local SCSI initiators can change the state of the 
107                                 device, for example RESERVE the device, or some of its parameters and that could be done behind SCST, i.e. remote initiators
108                                 will not know about it, which could 
109                                 lead to various problems, including data corruption. Thus, RESERVE/RELEASE commands, locally generated 
110                                 UNIT ATTENTIONs, etc. should be intercepted and passed through SCST core.</p>                   
111                                         
112                                 <h1>SCST core supports the following I/O modes</h1>
113                                 <ul>
114                                         <li><span><strong>Pass-through mode</strong> with one to many relationship, i.e. when multiple initiators can 
115                                                 connect to the exported pass-through devices, for virtually all SCSI devices types: <strong>disks (type 0), 
116                                                 tapes (type 1), processors (type 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and RAID 
117                                                 controllers (type 0xC)</strong>. In this mode you can, for instance, share your parallel SCSI tape or SATA
118                                                 DVD-RW device to your iSCSI network.</span></li>
119                                 <li><span><strong>FILEIO mode</strong>, which allows to use files on file systems or block devices as virtual 
120                                         remotely available SCSI disks or CDROMs with benefits of the Linux <strong>cache</strong>.</span></li>
121                                 <li><span><strong>BLOCKIO mode</strong>, which performs direct block IO with a block device, bypassing 
122                                         page-cache for all operations. This mode works well with high-end storage HBAs and for applications that 
123                                         either do not need caching between application and disk or need the large block throughput.</span></li>
124                                 <li><span><strong>User space mode</strong> using scst_user device handler, which allows to implement in the 
125                                         user space virtual SCSI devices in the SCST environment.</span></li>
126                                 <li><span><strong>"Performance" device handlers</strong> as well as <strong>NULLIO</strong> mode provide
127                                         a way for direct performance measurements without overhead of actual data
128                                         transferring from/to underlying SCSI device.
129                                         </span></li>
130                                 </ul>                   \r
131                         </div>\r
132                         <div id="rightbar">\r
133                                 <h1>Documentation</h1>
134                                 <p><a href="scst_pg.html">HTML</a></p>
135                                 <p><a href="scst_pg.pdf">PDF</a></p>
136                                 <p><a href="iscsi-scst-howto.txt">HOWTO For iSCSI-SCST</a></p>
137                                 <p><a href="qla2x00t-howto.html">HOWTO For QLogic Target Driver</a></p>
138                                 <p><a href="http://lpfcxxxx.sourceforge.net/HOWTO.lpfc">HOWTO For Emulex lpfc Target Driver</a></p>
139                                 <p><a href="scst_user_spec.txt">SCST User Interface Description</a></p>
140                                 <p><a href="sgv_cache.txt">SCST SGV Cache Description</a></p>
141                                 <h1>SCST 0.9.6 graphs</h1>
142                                 <p><a href="images/init_scst.png">init_scst</a></p>
143                                 <p><a href="images/scst_cmd_thread.png">scst_cmd_thread</a></p>                         
144                                 <p><a href="images/scst_mgmt_cmd_thread.png">scst_mgmt_cmd_thread</a></p>
145                                 <p><a href="images/scst_mgmt_thread.png">scst_mgmt_thread</a></p>
146                                 <p>by Ming Zhang</p>
147                                 <h1>QUESTIONS</h1>
148                                 <p>If you have any questions you can ask them via<br><a href="https://lists.sourceforge.net/lists/listinfo/scst-devel">
149                                         scst-devel mailing list</a><br><br> 
150                                         See <a href="http://sourceforge.net/mail/?group_id=110471">mailing lists page</a> for more info about SCST mailing 
151                                         lists.</p>
152                                 <h1>SourceForge</h1>\r
153                                 <p><a href="http://sourceforge.net">
154                                         <img src="http://sourceforge.net/sflogo.php?group_id=110471&amp;type=2" alt="SourceForge.net Logo" border="0">
155                                         </a></p>                \r
156                         </div>\r
157         </div>\r
158 </div>          \r
159 <!-- footer starts here -->             \r
160                 <div id="footer">\r
161                         <p>\r
162                         &copy; Copyright 2004-2009 <b><font color="#EC981F">Vladislav Bolkhovitin & others.</font>&nbsp;&nbsp;\r
163                         Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         \r
164                         \r
165                         </p>            \r
166                 </div>  \r
167 <!-- footer ends here -->\r
168 </body>\r
169
170 <!-- Piwik -->
171 <script type="text/javascript">
172 var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/scst/" : "http://apps.sourceforge.net/piwik/scst/");
173 document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
174 </script><script type="text/javascript">
175 piwik_action_name = '';
176 piwik_idsite = 1;
177 piwik_url = pkBaseURL + "piwik.php";
178 piwik_log(piwik_action_name, piwik_idsite, piwik_url);
179 </script>
180 <object><noscript><p><img src="http://apps.sourceforge.net/piwik/scst/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
181 <!-- End Piwik Tag -->
182
183 </html>