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:
Vladislav Bolkhovitin
2010-08-26 13:32:45 +00:00
parent fe447b1c3e
commit c430798dbe
2 changed files with 50 additions and 41 deletions

View File

@@ -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>

View File

@@ -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>