mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 10:41:26 +00:00
Web updates
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2008 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
<div id="main">
|
||||
<h1>Features comparison between Linux SCSI targets</h1>
|
||||
|
||||
<p><small>As on October 2009</small></p>
|
||||
<p><small>As on October 2009. Partially updated in August 2010.</small></p>
|
||||
|
||||
<table bgcolor="#F0F0F0" border="1" cellspacing="1" cellpadding="7" style="text-align:center" width="620">
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<td align="left"><b>Upstream kernel</b></td> <td> - </td> <td> Kernel part </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Generic Target Engine</b></td> <td> + </td> <td> + </td> <td> iSCSI only </td> <td> Under development </td>
|
||||
<td align="left"><b>Generic Target Engine</b></td> <td> + </td> <td> + </td> <td> iSCSI only </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Architecture</b></td> <td> Kernel only</td> <td> User space only
|
||||
@@ -74,7 +74,7 @@
|
||||
<tr>
|
||||
<td align="left"><b>Stability</b></td> <td> + </td> <td> +
|
||||
<sup><A HREF="#3">3</A>
|
||||
</sup> </td> <td> + </td> <td> Under development </td>
|
||||
</sup> </td> <td> + </td> <td> ? (no released packages) </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Performance <sup><A HREF="#4">4</A></sup></b></td> <td> ***** <sup>
|
||||
@@ -95,7 +95,7 @@ backend drivers</th> <td> + <sup>
|
||||
transfer values (parallel SCSI, SAS)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Interface with user space</b></td> <td> ProcFS </td> <td> Custom </td> <td> - </td> <td> ConfigFS/IOCTL/ProcFS </td>
|
||||
<td align="left"><b>Interface with user space</b></td> <td> SysFS/ProcFS </td> <td> Custom </td> <td> - </td> <td> ConfigFS/IOCTL/ProcFS </td>
|
||||
</tr>
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ transfer values (parallel SCSI, SAS)</b></td> <td> + </td> <td> - </td> <td
|
||||
<td colspan="5"><b>Major features</b>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td align="left"><b>Target drivers in kernel space</b></td> <td> + </td> <td> + </td> <td> - </td> <td> Under development </td>
|
||||
<td align="left"><b>Target drivers in kernel space</b></td> <td> + </td> <td> + </td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Target drivers in user space</b></td> <td> + </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
@@ -112,15 +112,11 @@ transfer values (parallel SCSI, SAS)</b></td> <td> + </td> <td> - </td> <td
|
||||
<td align="left"><b>Backstorage handlers in kernel space</b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Backstorage handlers in user space</b></td> <td> + </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>Backstorage handlers in user space</b></td> <td> + </td> <td> + </td> <td> - </td> <td> Through STGT </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Local access to emulated backstorage devices
|
||||
<sup><A HREF="#9">9</A></sup></b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Advanced devices access control
|
||||
<sup><A HREF="#10">10</A></sup></b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
<sup><A HREF="#10">10</A></sup></b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Support for Asynchronous Event Notifications
|
||||
@@ -132,14 +128,10 @@ resized through AENs or Unit Attentions (Initiators can instantly see
|
||||
any target reconfiguration in a PnP-like fashion)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Bidirectional Commands</b></td> <td> + <sup>
|
||||
<A HREF="#11">11</A>
|
||||
</sup></td> <td> + </td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>Bidirectional Commands</b></td> <td> +</td> <td> + </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Extended CDB (size >16 bytes)</b></td> <td> + <sup>
|
||||
<A HREF="#11">11</A>
|
||||
</sup></td> <td> + </td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>Extended CDB (size >16 bytes)</b></td> <td> +</td> <td> + </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Descriptor sense support</b></td> <td> + </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
@@ -169,8 +161,7 @@ ORDERED commands</b></td> <td> + </td> <td> + </td> <td> -, <br> data
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Persistent Reservations <br>
|
||||
<small> (Windows 2008 clustering / RHEL5 I/O fencing)</small></b></td> <td> Under testing
|
||||
</td> <td> + <br> (limited
|
||||
<small> (Windows 2008 clustering / RHEL5 I/O fencing)</small></b></td> <td> + </td> <td> + <br> (limited
|
||||
functionality
|
||||
implemented)</td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
@@ -181,6 +172,19 @@ ORDERED commands</b></td> <td> + </td> <td> + </td> <td> -, <br> data
|
||||
<td align="left"><b>Failover Clustering</b></td> <td> + </td> <td> ? </td> <td> + </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Allocated buffers cache</b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Protection against commands with
|
||||
wrong transfer size or transfer direction (may lead to crash or
|
||||
hard lockup)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Protection against DoS'ing target by making it
|
||||
allocate too much memory for buffers and taking it into an OOM state
|
||||
</b></td> <td> + </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>SCSI MIBs</b></td> <td> - </td> <td> - </td> <td> - </td> <td> +-
|
||||
<sup><A HREF="#15">15</A></sup></td>
|
||||
</tr>
|
||||
@@ -213,9 +217,8 @@ ORDERED commands</b></td> <td> + </td> <td> + </td> <td> -, <br> data
|
||||
<td align="left"><b>Marvell (SAS)</b></td> <td> Beta </td> <td> - </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>FCoE</b></td> <td> Under
|
||||
development </td> <td>Under
|
||||
development</td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>FCoE</b></td> <td> Alpha </td> <td>Under
|
||||
development</td> <td> - </td> <td> Alpha </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>LSI (Parallel (Wide) SCSI and Fibre Channel)
|
||||
@@ -227,7 +230,11 @@ ORDERED commands</b></td> <td> + </td> <td> + </td> <td> -, <br> data
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>IBM pSeries Virtual SCSI</b></td> <td> - </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Local access to emulated backstorage devices
|
||||
<sup><A HREF="#9">9</A></sup></b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
|
||||
<tr bgcolor="#E0E0E0">
|
||||
<td colspan="5"> <b>Supported backstorage</b>
|
||||
@@ -243,11 +250,13 @@ ORDERED commands</b></td> <td> + </td> <td> + </td> <td> -, <br> data
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>SCSI pass-through
|
||||
<sup><A HREF="#16">16</A></sup></b></td> <td> + </td> <td> Disks only, single
|
||||
<sup><A HREF="#16">16</A></sup></b></td> <td> + </td> <td> Single
|
||||
initiator only, not
|
||||
enforced <sup>
|
||||
enforced, limited
|
||||
for tapes <sup>
|
||||
<A HREF="#17">17</A>
|
||||
</sup> </td> <td> - </td> <td> Single initiator only, not enforced
|
||||
</sup> </td> <td> - </td> <td> Single initiator only, not enforced,
|
||||
limited for tapes
|
||||
<sup><A HREF="#17">17</A></sup></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -293,14 +302,15 @@ devices (VTL)</b></td> <td> - </td> <td>Experimental</td> <td> - </td> <
|
||||
</sup></td> <td> Kernel only </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Interface with user space</b></td> <td>IOCTL/ProcFS/
|
||||
<td align="left"><b>Interface with user space</b></td> <td>SysFS/IOCTL/ProcFS/
|
||||
Netlink</td> <td> - </td> <td>IOCTL/ProcFS/
|
||||
Netlink</td> <td> ConfigFS/IOCTL/ProcFS </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Zero-copy data send/receive</b></td> <td> Send only<sup>
|
||||
<A HREF="#19">19</A>
|
||||
</sup> </td> <td> None <sup>
|
||||
</sup> </td> <td> In some cases,
|
||||
send only <sup>
|
||||
<A HREF="#8">8</A>
|
||||
</sup> </td> <td> Send only</td> <td> Send only </td>
|
||||
</tr>
|
||||
@@ -312,14 +322,10 @@ devices (VTL)</b></td> <td> - </td> <td>Experimental</td> <td> - </td> <
|
||||
<td align="left"><b>Max ErrorRecoveryLevel</b></td> <td> 0 </td> <td> 0 </td> <td> 0 </td> <td> 2 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Bidirectional Commands</b></td> <td> + <sup>
|
||||
<A HREF="#11">11</A>
|
||||
</sup></td> <td> + </td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>Bidirectional Commands</b></td> <td> + </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Extended CDB (size >16 bytes)</b></td> <td> + <sup>
|
||||
<A HREF="#11">11</A>
|
||||
</sup></td> <td> + </td> <td> - </td> <td> - </td>
|
||||
<td align="left"><b>Extended CDB (size >16 bytes)</b></td> <td> + </td> <td> + </td> <td> - </td> <td> - </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>Support for Asynchronous Event Notifications
|
||||
@@ -336,7 +342,7 @@ reinstatement <sup><A HREF="#20">20</A></sup></b></td> <td> Safe </td> <td> N
|
||||
<tr>
|
||||
<td align="left"><b>Support for <a href="max_outstanding_r2t.txt">
|
||||
MaxOutstandingR2T >1</a> (write performance increase on high latency
|
||||
links)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
links)</b></td> <td> + </td> <td> Partial </td> <td> - </td> <td> + </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><b>iSCSI MIBs</b></td> <td> - </td> <td> - </td> <td> - </td> <td> +-
|
||||
@@ -374,7 +380,8 @@ links)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
<p><A NAME="8"></A> 8. Some zero-copy functionality isn't available from user space, sometimes fundamentally.
|
||||
For instance, zero-copy FILEIO with page cache or zero-copy send to a socket. Also STGT can't use splice() for in-kernel
|
||||
target drivers, because it has memory management in user space. To use splice() with socket-based user space target drivers
|
||||
STGT would need a deep redesign of internal interactions between target drivers, core and backend handlers.</p>
|
||||
STGT would need a deep redesign of internal interactions between target drivers, core and backend handlers. But in
|
||||
some cases STGT can use zero-copy sendfile().</p>
|
||||
|
||||
<p><A NAME="9"></A> 9. Local access to emulated backstorage devices" means that you can access emulated by a SCSI target devices
|
||||
locally on the target host. For instance, you can mount your ISO image from emulated by the target
|
||||
@@ -384,8 +391,6 @@ links)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
of devices from the same target. This feature is required for hardware targets, which don't have ability
|
||||
to create virtual targets.</p>
|
||||
|
||||
<p><A NAME="11"></A> 11. Not well tested, because at the moment there is no backend using this functionality.</p>
|
||||
|
||||
<p><A NAME="12"></A> 12. SCSI requires that if an initiator clears reservation held by another initiator, the reservation holder must be notified
|
||||
about the reservation clearance. Otherwise, several initiators can at the same time change supposed to be protected by the
|
||||
reservation data, which can corrupt them. This is what was called
|
||||
@@ -414,11 +419,14 @@ links)</b></td> <td> + </td> <td> - </td> <td> - </td> <td> + </td>
|
||||
SCSI tape or SATA DVD-RW device to your iSCSI network.</p>
|
||||
|
||||
<p><A NAME="17"></A> 17. STGT and LIO don't emulate all the necessary SCSI host functionality to allow to share SCSI devices
|
||||
in pass-through mode to several initiators. They can only pass SCSI commands from initiators to
|
||||
in pass-through mode to several initiators, although LIO has some necessary processing, but not all.
|
||||
They can only pass SCSI commands from initiators to
|
||||
SCSI devices and responses back. This is safe only with a single initiator. This limitation
|
||||
isn't enforced anyhow and both STGT and LIO don't issue any warning about it, so an user will not be notified about this
|
||||
limitation and can quietly corrupt his/her data. You can find more technical information about it
|
||||
<a href="http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html">here</a>.</p>
|
||||
<a href="http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html">here</a>.
|
||||
Also neither STGT, nor LIO in pass-through mode do the necessary sense processing for tape devices to
|
||||
correctly return residual information, so tapes can used with them with limited functionality.</p>
|
||||
|
||||
<p><A NAME="18"></A> 18. You can find a proposal how to implement zero-copy FILEIO in SCST on the <a href="contributing.html#ZC_READ">
|
||||
Contributing</a> page.</p>
|
||||
|
||||
@@ -113,7 +113,8 @@
|
||||
iscsi-scstd.conf file in /etc, but using corresponding SCST facilities. This is because now responsibilities
|
||||
are divided (as it logically should be) between the target driver (iSCSI-SCST) and the SCSI target core (SCST),
|
||||
where target driver is responsible for handling targets with their parameters, and SCST core is responsible for handling
|
||||
backstorage.</p>
|
||||
backstorage. You can also use a migration tool developed by Scalable Informatics Inc., which will convert your IET machine
|
||||
to an iSCSI-SCST machine. See README for more details.</p>
|
||||
|
||||
<p>The latest stable version is 1.0.1.1. Requires Linux kernel version 2.6.16.x or higher and SCST version 1.0.1.1 or higher.
|
||||
Tested mostly on i386 and x86_64, but should work on any other supported by Linux platform.</p>
|
||||
|
||||
Reference in New Issue
Block a user