Вы находитесь на странице: 1из 137

Contents

Articles
SCSI Active terminator Advanced SCSI Programming Interface SCSI architectural model SCSI CDB SCSI check condition SCSI connector SCSI contingent allegiance condition Domain validation Electrical termination Enclosure Services Interface Hard Disk 20SC Host adapter HyperSCSI iSCSI iSCSI Boot Firmware Table ISCSI Conformance Testing and Testing Tool Requirement iSCSI Extensions for RDMA Key Code Qualifier Layer Jump Recording List of SCSI message codes Logical block addressing Logical Unit Number Mount Rainier (packet writing) MultiMedia Commands NCR 5380 NCR 53C9x Parallel SCSI Persistent binding SAF-TE SCSI / ATA Translation SCSI command SCSI diagnostic pages SCSI element codes 1 8 9 10 11 13 13 18 19 20 22 24 25 27 28 35 35 39 41 47 48 49 52 54 56 56 57 58 64 66 67 67 72 73

SCSI element status codes SCSI Enclosure Services SCSI Format Unit Command SCSI high byte termination SCSI host adapter SCSI initiator and target SCSI Inquiry Command SCSI log pages SCSI Log Select Command SCSI Log Sense Command SCSI mode pages SCSI Mode Select Command SCSI Mode Sense Command SCSI Pass Through Interface SCSI Pass-Through Direct SCSI Peripheral Device Type SCSI RDMA Protocol SCSI Read Capacity Command SCSI Read Commands SCSI Receive Diagnostic Results Command SCSI Report LUNs Command SCSI Request Sense Command SCSI Send Diagnostic Command SCSI standalone enclosure services SCSI Start Stop Unit Command SCSI Status Code SCSI terminating resistor SCSI Test Unit Ready Command SCSI Write Commands Sense Key Serial attached SCSI Serial Storage Architecture Single Connector Attachment Tagged Command Queuing USB Attached SCSI Very-high-density cable interconnect World Wide Name

74 74 76 77 78 79 80 82 82 83 84 85 86 88 90 91 92 93 94 97 98 99 101 102 103 104 105 105 106 109 115 121 122 123 126 127 127

References
Article Sources and Contributors Image Sources, Licenses and Contributors 130 133

Article Licenses
License 134

SCSI

SCSI
Small Computer System Interface (SCSI, /skzi/ SKUZ-ee)[1] is a set of standards for physically connecting and transferring data between computers and peripheral devices. The SCSI standards define commands, protocols, and electrical and optical interfaces. SCSI is most commonly used for hard disks and tape drives, but it can connect a wide range of other devices, including scanners and CD drives, although not all controllers can handle all devices. The SCSI standard defines command sets for specific peripheral device types; the presence of "unknown" as one of these types means that in theory it can be used as an interface to almost any device, but the standard is highly pragmatic and addressed toward commercial requirements. SCSI is an intelligent, peripheral, buffered, peer to peer interface. It The icon/logo used for SCSI. hides the complexity of physical format. Every device attaches to the SCSI bus in a similar manner. Up to 8 or 16 devices can be attached to a single bus. There can be any number of hosts and peripheral devices but there should be at least one host. SCSI uses handshake signals between devices, SCSI-1, SCSI-2 have the option of parity error checking. Starting with SCSI-U160 (part of SCSI-3) all commands and data are error checked by a CRC32 checksum. The SCSI protocol defines communication from host to host, host to a peripheral device, peripheral device to a peripheral device. However most peripheral devices are exclusively SCSI targets, incapable of acting as SCSI initiatorsunable to initiate SCSI transactions themselves. Therefore peripheral-to-peripheral communications are uncommon, but possible in most SCSI applications. The Symbios Logic 53C810 chip is an example of a PCI host interface that can act as a SCSI target.

History
SCSI was derived from "SASI", the "Shugart Associates System Interface", developed c. 1978 and publicly disclosed in 1981.[2] A SASI controller provided a bridge between a hard disk drive's low-level interface and a host computer, which needed to read blocks of data. SASI controller boards were typically the size of a hard disk drive and were usually physically mounted to the drive's chassis. SASI, which was used in mini- and early microcomputers, defined the interface as using a 50-pin flat ribbon connector which was adopted as the SCSI-1 connector. SASI is a fully compliant subset of SCSI-1 so that many, if not all, of the then-existing SASI controllers were SCSI-1 compatible.[3] Larry Boucher is considered to be the "father" of SASI and SCSI due to his pioneering work first at Shugart Associates and then at Adaptec.[4] Until at least February 1982, ANSI developed the specification as "SASI" and "Shugart Associates System Interface;"[5] however, the committee documenting the standard would not allow it to be named after a company. Almost a full day was devoted to agreeing to name the standard "Small Computer System Interface," which Boucher intended to be pronounced "sexy", but ENDL's[6] Dal Allan pronounced the new acronym as "scuzzy" and that stuck.[4] A number of companies such as NCR Corporation, Adaptec and Optimem were early supporters of the SCSI standard.[5] The NCR facility in Wichita, Kansas is widely thought to have developed the industry's first SCSI chip; it worked the first time.[7]

SCSI The "small" part in SCSI is historical; since the mid-1990s, SCSI has been available on even the largest of computer systems. Since its standardization in 1986, SCSI has been commonly used in the Amiga, Apple Macintosh and Sun Microsystems computer lines and PC server systems. Apple started using Parallel ATA (also known as IDE) for its low-end machines with the Macintosh Quadra 630 in 1994, and added it to its high-end desktops starting with the Power Macintosh G3 in 1997. Apple dropped on-board SCSI completely (in favor of IDE and FireWire) with the (Blue & White) Power Mac G3 in 1999. Sun has switched its lower end range to Serial ATA (SATA). SCSI has never been popular in the low-priced IBM PC world, owing to the lower cost and adequate performance of ATA hard disk standard. However, SCSI drives and even SCSI RAIDs became common in PC workstations for video or audio production. Recent versions of SCSI Serial Storage Architecture (SSA), SCSI-over-Fibre Channel Protocol (FCP), Serial Attached SCSI (SAS), Automation/Drive Interface Transport Protocol (ADT), and USB Attached SCSI (UAS) break from the traditional parallel SCSI standards and perform data transfer via serial communications. Although much of the documentation of SCSI talks about the parallel interface, most contemporary development effort is on serial SCSI. Serial SCSI has a number of advantages over parallel SCSI: faster data rates, hot swapping (some but not all parallel SCSI interfaces support it), and improved fault isolation. The primary reason for the shift to serial interfaces is the clock skew issue of high speed parallel interfaces, which makes the faster variants of parallel SCSI susceptible to problems caused by cabling and termination. iSCSI preserves the basic SCSI paradigm, especially the command set, almost unchanged, through embedding of SCSI-3 over TCP/IP. SCSI is popular on high-performance workstations and servers. RAIDs on servers have almost always used SCSI hard disks, though a number of manufacturers now offer SATA-based RAID systems as a cheaper option. Instead of SCSI, desktop computers and notebooks more typically use ATA interfaces for internal hard disk drives, and USB, eSATA, and FireWire connections for external devices. As of 2012 SCSI interfaces had become impossible to find for laptop computers. Adaptec had years before produced PCMCIA SCSI interfaces, but when PCMCIA was superseded by the ExpressCard discontinued their PCMCIA line without supporting ExpressCard. Ratoc produced USB and Firewire to SCSI adaptors, but ceased production when the integrated circuits required were discontinued. Drivers for existing PCMCIA interfaces were not produced for newer operating systems.

Interfaces
SCSI is available in a variety of interfaces. The first, still very common, was parallel SCSI (now also called SPI), which uses a parallel electrical bus design. As of 2008, SPI is being replaced by Serial Attached SCSI (SAS), which uses a serial design but retains other aspects of the technology. Many other interfaces which do not rely on complete SCSI standards still implement the SCSI command protocol; others (such as iSCSI) drop physical implementation entirely while retaining the SCSI architectural model. iSCSI, for example, uses TCP/IP as a transport mechanism.
Two SCSI connectors.

SCSI interfaces have often been included on computers from various manufacturers for use under Microsoft Windows, Mac OS, Unix, Commodore Amiga and Linux operating systems, either implemented on the motherboard or by the means of plug-in adaptors. With the advent of SAS and SATA drives, provision for SCSI on motherboards is being discontinued. A few companies still market SCSI interfaces for motherboards supporting PCIe and PCI-X.

SCSI

Parallel SCSI
Interface Alternative Specification Connector [8] names document Width Clock[9] (bits) Bandwidth Bandwidth [10] [11] (MB/s) (Mbit/s) Maximum Electrical

[14] Impedance Voltage Length Length Length Devices [13] HVD [] [V] (single LVD [12] ended)

SCSI-1

Narrow SCSI

SCSI-1 [15] (1986) SCSI-2 (1994)

IDC50; Centronics C50 IDC50; Centronics C50 2 x 50-pin (SCSI-2); 1 x 68-pin (SCSI-3) IDC50

5MHz

5 MB/s

40 Mbit/s

6m

NA

25m

SE 90 6 [16]

Fast SCSI

10MHz 10 MB/s

80 Mbit/s

3m

NA

25m

SE 90 6 [16]

Fast-Wide SCSI

SCSI-2; SCSI-3 SPI [15] (1996) Fast-20

16

10MHz 20 MB/s

160 Mbit/s

3m

NA

25m

16

SE 90 6 [16]

Ultra SCSI Ultra Wide SCSI

SCSI-3 [15] SPI SCSI-3 [15] SPI

20MHz 20 MB/s

160 Mbit/s

1.5 m 3m

NA NA NA NA NA 12m

25m NA 25m NA NA 25m

8 4 16 8 4 8

SE 90 6 [16] SE 90 6 [16]

68-pin

16

20MHz 40 MB/s

320 Mbit/s

NA 1.5 m 3m

Ultra2 SCSI Ultra2 Wide SCSI Ultra3 SCSI

Fast-40

SCSI-3 50-pin SPI-2 (1997) SCSI-3 SPI-2

40MHz 40 MB/s

320 Mbit/s

NA

LVD 125 [16] 10 LVD 125 [16] 10

68-pin; 16 80-pin (SCA/SCA-2) 68-pin; 16 80-pin (SCA/SCA-2) 68-pin; 16 80-pin (SCA/SCA-2) 16

40MHz 80 MB/s

640 Mbit/s

NA

12m

25m

16

Ultra-160; Fast-80 wide

SCSI-3 SPI-3 [15] (1999) SCSI-3 SPI-4 [15] (2002)

40MHz 160 MB/s DDR

1280 Mbit/s NA

12m

NA

16

LVD 125 [16] 10

Ultra-320 Ultra-4; SCSI Fast-160

80MHz 320 MB/s DDR

2560 Mbit/s NA

12m

NA

16

LVD 125 [16] 10

Ultra-640 Ultra-5 SCSI

SCSI-3 68-pin; SPI-5 (2003) 80-pin

160MHz 640 MB/s DDR

5120 Mbit/s

16

Other SCSI interfaces

SCSI

Interface Alternative Specification Connector Width Clock[9] names document (bits) Throughput [10] (MB/s) SSA SSA 40 FC-AL 1Gb FC-AL 2Gb FC-AL 4Gb SAS 1.1 SAS 2.0 iSCSI 1 1 1 200MHz 40 MB/s[17][18] 400MHz 80 MB/s[17][18] 1GHz [18][19] 100 MB/s [18][19] 200 MB/s [18][19] 400 MB/s [18][19] 300 MB/s [18][19] 600 MB/s

Maximum Throughput [11] (Mbit/s) 320 Mbit/s 640 Mbit/s 800 Mbit/s Length [12] Devices [14]

25 m 25 m 500m/3km

96 96 [20] 127

2GHz

1600 Mbit/s

500m/3km

[20] 127

4GHz

3200 Mbit/s

500m/3km 6m 6m

[20] 127

1 1

3GHz 6GHz

2400 Mbit/s 4800 Mbit/s

16,256 16,256

[21] [21]

Implementation- and network-dependent

Cabling
SCSI Parallel Interface
Internal parallel SCSI cables are usually ribbons, with two or more 50, 68, or 80pin connectors attached. External cables are typically shielded (but may not be), with 50 or 69pin connectors at each end, depending upon the specific SCSI bus width supported.[22] The 80pin Single Connector Attachment (SCA) is typically used for hot-pluggable devices, where external cables are not usually required.
Bus terminator with top cover removed.

Serial attached SCSI


Serial attached SCSI uses a modified Serial ATA data and power cable.

iSCSI
iSCSI (Internet Small Computer System Interface) usually uses Ethernet connectors and cables as its physical transport, but can run over any physical transport capable of transporting IP.

USB Attached SCSI


USB Attached SCSI allows SCSI devices to use the Universal Serial Bus.

Automation/Drive Interface
The Automation/Drive Interface Transport Protocol (ADT) is used to connect removable media devices, such as tape drives, with the controllers of the libraries (automation devices) in which they are installed. The ADI standard specifies the use of RS-422 for the physical connections. The second-generation ADT-2 standard defines iADT, use

SCSI of the ADT protocol over IP (Internet Protocol) connections, such as over Ethernet. The Automation/Drive Interface Commands standards (ADC, ADC-2, and ADC-3) define SCSI commands for these installations.

SCSI command protocol


In addition to many different hardware implementations, the SCSI standards also include an extensive set of command definitions. The SCSI command architecture was originally defined for parallel SCSI buses but has been carried forward with minimal change for use with iSCSI and serial SCSI. Other technologies which use the SCSI command set include the ATA Packet Interface, USB Mass Storage class and FireWire SBP-2. In SCSI terminology, communication takes place between an initiator and a target. The initiator sends a command to the target, which then responds. SCSI commands are sent in a Command Descriptor Block (CDB). The CDB consists of a one byte operation code followed by five or more bytes containing command-specific parameters. At the end of the command sequence, the target returns a status code byte, such as 00h for success, 02h for an error (called a Check Condition), or 08h for busy. When the target returns a Check Condition in response to a command, the initiator usually then issues a SCSI Request Sense command in order to obtain a key code qualifier (KCQ) from the target. The Check Condition and Request Sense sequence involves a special SCSI protocol called a Contingent Allegiance Condition. There are 4 categories of SCSI commands: N (non-data), W (writing data from initiator to target), R (reading data), and B (bidirectional). There are about 60 different SCSI commands in total, with the most commonly used being: Test unit ready: Queries device to see if it is ready for data transfers (disk spun up, media loaded, etc.). Inquiry: Returns basic device information. Request sense: Returns any error codes from the previous command that returned an error status. Send diagnostic and Receive diagnostic results: runs a simple self-test, or a specialised test defined in a diagnostic page. Start/Stop unit: Spins disks up and down, or loads/unloads media (CD, tape, etc.). Read capacity: Returns storage capacity. Format unit: Prepares a storage medium for use. In a disk, a low level format will occur. Some tape drives will erase the tape in response to this command. SCSI Read format capacities: Retrieve the data capacity of the device. Read (four variants): Reads data from a device. Write (four variants): Writes data to a device. Log sense: Returns current information from log pages. Mode sense: Returns current device parameters from mode pages. Mode select: Sets device parameters in a mode page.

Each device on the SCSI bus is assigned a unique SCSI identification number or ID. Devices may encompass multiple logical units, which are addressed by logical unit number (LUN). Simple devices have just one LUN, more complex devices may have multiple LUNs. A "direct access" (i.e. disk type) storage device consists of a number of logical blocks, addressed by Logical Block Address (LBA). A typical LBA equates to 512 bytes of storage. The usage of LBAs has evolved over time and so four different command variants are provided for reading and writing data. The Read(6) and Write(6) commands contain a 21-bit LBA address. The Read(10), Read(12), Read Long, Write(10), Write(12), and Write Long commands all contain a 32-bit LBA address plus various other parameter options. The capacity of a "sequential access" (i.e. tape-type) device is not specified because it depends, amongst other things, on the length of the tape, which is not identified in a machine-readable way. Read and write operations on a sequential access device begin at the current tape position, not at a specific LBA. The block size on sequential access devices can either be fixed or variable, depending on the specific device. Tape devices such as half-inch 9-track tape,

SCSI DDS (4mm tapes physically similar to DAT), Exabyte, etc., support variable block sizes.

Device identification
In modern SCSI transport protocols, there is an automated process for "discovery" of the IDs. SSA initiators "walk the loop" to determine what devices are connected and then assigns each one a 7-bit "hop-count" value. Fibre Channel Arbitrated Loop (FC-AL) initiators use the LIP (Loop Initialization Protocol) to interrogate each device port for its WWN (World Wide Name). For iSCSI, because of the unlimited scope of the (IP) network, the process is quite complicated. These discovery processes occur at power-on/initialization time and also if the bus topology changes later, for example if an extra device is added. On a parallel SCSI bus, a device (e.g. host adapter, disk drive) is identified by a "SCSI ID", which is a number in the range 07 on a narrow bus and in the range 015 on a wide bus. On earlier models a physical jumper or switch controls the SCSI ID of the initiator (host adapter). On modern host adapters (since about 1997), doing I/O to the adapter sets the SCSI ID; for example, the adapter often contains a BIOS program that runs when the computer boots up and that program has menus that let the operator choose the SCSI ID of the host adapter. Alternatively, the host adapter may come with software that must be installed on the host computer to configure the SCSI ID. The traditional SCSI ID for a host adapter is 7, as that ID has the highest priority during bus arbitration (even on a 16 bit bus). The SCSI ID of a device in a drive enclosure that has a backplane is set either by jumpers or by the slot in the enclosure the device is installed into, depending on the model of the enclosure. In the latter case, each slot on the enclosure's back plane delivers control signals to the drive to select a unique SCSI ID. A SCSI enclosure without a back plane often has a switch for each drive to choose the drive's SCSI ID. The enclosure is packaged with connectors that must be plugged into the drive where the jumpers are typically located; the switch emulates the necessary jumpers. While there is no standard that makes this work, drive designers typically set up their jumper headers in a consistent format that matches the way that these switches implement. Note that a SCSI target device (which can be called a "physical unit") is often divided into smaller "logical units." For example, a high-end disk subsystem may be a single SCSI device but contain dozens of individual disk drives, each of which is a logical unit (more commonly, it is not that simplevirtual disk devices are generated by the subsystem based on the storage in those physical drives, and each virtual disk device is a logical unit). The SCSI ID, WWN, etc. in this case identifies the whole subsystem, and a second number, the logical unit number (LUN) identifies a disk device within the subsystem. It is quite common, though incorrect, to refer to the logical unit itself as a "LUN."[23] Accordingly, the actual LUN may be called a "LUN number" or "LUN id".[24] Setting the bootable (or first) hard disk to SCSI ID 0 is an accepted IT community recommendation. SCSI ID 2 is usually set aside for the floppy disk drive while SCSI ID 3 is typically for a CD-ROM drive.[25]

Device Type
While all SCSI controllers can work with read/write storage devices, i.e. disk and tape, some will not work with some other device types; older controllers are likely to be more limited[26], sometimes by their driver software, and more Device Types were added as SCSI evolved. Even CD-ROMs are not handled by all controllers. Device Type is a 5-bit field reported by a SCSI Inquiry Command; defined SCSI Peripheral Device Types include, in addition to many varieties of storage device, printer, scanner, communications device, and a catch-all "processor" type for devices not otherwise listed.

SCSI

SCSI enclosure services


In larger SCSI servers, the disk-drive devices are housed in an intelligent enclosure that supports SCSI Enclosure Services (SES). The initiator can communicate with the enclosure using a specialized set of SCSI commands to access power, cooling, and other non-data characteristics.

References
[1] Field. The Book of SCSI. pp.1. [2] ANSI Draft SASI Standard, Rev D, February 17, 1982, pg. ii states, "9/15/81 first presentation to ANSI committee X3T9-3 (2 weeks following announcement in Electronic Design)." [3] ANSI SCSI Standard, X3.131-1986, June 23, 1986, 2nd, foreword. [4] "How Computer Storage Became a Modern Business," Computer History Museum, March 9, 2005 (http:/ / www. youtube. com/ watch?v=OiLUIJ3ke-o) [5] Working document for ANSI meeting on March 3, 1982, "SASI SHUGART ASSOCIATES SYSTEM INTERFACE, Revision D, February 17, 1982" [6] ENDL Inc. Home Page (http:/ / www. endl. com/ ) [7] NCR Collection (LSI Logic)at Smithsonian Museum (http:/ / smithsonianchips. si. edu/ ncr/ scsi-1. htm) [8] Specifications are maintained by the T10 subcommittee of the International Committee for Information Technology Standards. [9] Clock rate in MHz for SPI, or bitrate (per second) for serial interfaces [10] In megabytes per second, not megabits per second [11] In megabits per second, not megabytes per second [12] For daisy-chain designs, length of bus, from end to end; for point-to-point, length of a single link [13] LVD cabling may be up to 25m when only a single device is attached to the host adapter [14] Including any host adapters (i.e., computers count as a device) [15] The SCSI-1 specification has been withdrawn and is superseded by SCSI-2. The SCSI-3 SPI specification has been withdrawn and is superseded by SPI-2. The SCSI-3 SPI-3 and SPI-4 specifications have been withdrawn and are superseded by SPI-5. "T10 Withdrawn Standards and Technical Reports" (http:/ / www. t10. org/ drafts. htm#OBSOLETE). . Retrieved March 18, 2010. [16] "Random Problems Encountered When Mixing SE and LVD SCSI Standards" (http:/ / support. microsoft. com/ kb/ 285013). . Retrieved May 7, 2008. [17] spatial reuse [18] full duplex [19] per direction [20] 500 meters for multi-mode, 3 kilometers for single-mode [21] 128 per expander [22] SCSI Standards & Cables for the "normal"* person (http:/ / www. ramelectronics. net/ scsi_cables__. ep) [23] "na_lun(1) Manual page for "lun" on NetApp DataONTAP". NetApp. July 7, 2009. "The lun command is used to create and manage luns[...]" [24] "na_lun(1) Manual page for "lun" on NetApp DataONTAP". NetApp. July 7, 2009. "If a LUN ID is not specified, the smallest number [...] is automatically picked." [25] Groth, David; Dan Newland (January 2001). A+ Complete Study Guide (2nd Edition) (http:/ / www. bookfinder4u. com/ IsbnSearch. aspx?isbn=0782128025& mode=direct). Alameda, CA, USA: l Sybex. pp.183. ISBN0-7821-4244-3. . [26] An example of an old SCSI interface which supported only named mass storage devices (http:/ / h30097. www3. hp. com/ docs/ base_doc/ DOCUMENTATION/ V40F_HTML/ MAN/ MAN7/ 0003____. HTM)

SCSI

Bibliography
Pickett, Joseph P., et al. (ed), ed. (2000). The American Heritage Dictionary of the English Language (AHD) (http://www.bartleby.com/61/) (Fourth Edition ed.). Houghton Mifflin Company. ISBN0-395-82517-2. Field, Gary; Peter Ridge, John Lohmeyer, Gerhard Islinger, Stefan Groll (2000). The Book of SCSI (2nd Edition ed.). No Starch Press. ISBN1-886411-10-7.

External links
SCSI Tutorial (http://www.pacificcable.com/SCSI-Tutorial.html) SCSI Details, Wiring, Compaq/HP (http://www.delec.com/guide/scsi/) All About SCSI (http://www.datapro.net/techinfo/scsi_doc.html) T10 Technical Committee (http://www.t10.org/) (SCSI standards) SCSITA terminology (http://www.scsita.org/terms-and-terminology.html) "Storage Cornucopia" SCSI links, maintained by a consultant (http://www.bswd.com/cornucop.htm) SCSI/iSCSI/RAID/SAS Information Sheet (http://www.woodsmall.com/SCSI.htm) SCSI basics (http://www.pcnineoneone.com/howto/scsi1.html) SCSI and ATA pinouts (http://pinouts.ru/pin_HD.shtml)

Anatomy of the Linux SCSI subsystem (http://www.ibm.com/developerworks/linux/library/l-scsi-subsystem/ ?ca=dgr-lnxw57LinuxSCSIsub&S_TACT=105AGX59&S_CMP=GR) List of Adapters by SCSI connector type (http://www.scsi4me.com/scsi-connectors.htm) SCSI Library (http://www.scsilibrary.com/) SCSI connector photos (http://www-304.ibm.com/systems/support/supportsite.wss/ docdisplay?brandind=5000008&lndocid=MIGR-4AQSCA)

Active terminator
An active terminator is a type of single ended SCSI terminator with a built-in voltage regulator to compensate for variations in terminator power.

Advanced SCSI Programming Interface

Advanced SCSI Programming Interface


In computing, ASPI (Advanced SCSI Programming Interface) is an application programming interface originated by Adaptec which standardizes communication on a computer bus between a SCSI host adapter on the one hand and SCSI (and ATAPI) peripherals on the other.

History
ASPI was developed by Adaptec in the early 1990s. It was originally designed to support SCSI drives. Support for ATAPI interface (such as IDE) was later added. Microsoft licensed the interface for use with Windows 9x series. At the same time Microsoft developed SCSI Pass Through Interface (SPTI), an in-house substitute that worked on the NT platform. Microsoft did not include ASPI in Windows 2000/XP, in favor of its own SPTI. Users may still download ASPI from Adaptec. A number of CD/DVD applications also continue to offer their own implementations of ASPI layer.

Driver
ASPI was provided by the following drivers.
Operating System DOS Windows 3.1x ASPI4DOS.SYS WINASPI.DLL Driver Filename Bundled No No Yes No Unknown

Windows 95, 98 and ME WNASPI32.DLL, WINASPI.DLL, APIX.VXD and ASPIENUM.VXD Windows NT, 2000, XP FreeDOS WNASPI32.DLL, ASPI32.SYS USBASPI.SYS

External links
Adaptec's ASPI driver
Adaptec ASPI driver [1], FAQ [2]

Non-Adaptec ASPI drivers


Nero ASPI driver [3] Frog ASPI driver [4] Mekugi ASPI driver [5] Pinnacle Systems ASAPI driver [6]

Advanced SCSI Programming Interface

10

Technical information
Technical reference (ASPI for Win32) [7] ASPI Layer setup [8]

Tips
Bart's page about ASPI [9]

References
[1] [2] [3] [4] [5] [6] [7] [8] [9] http:/ / www. adaptec. com/ en-US/ speed/ software_pc/ aspi/ aspi_471a2_exe. htm http:/ / ask. adaptec. com/ scripts/ adaptec_tic. cfg/ php. exe/ enduser/ std_adp. php?p_faqid=2671 ftp:/ / ftp6. nero. com/ NeroAspiEn. exe http:/ / www. frogaspi. org/ download. htm http:/ / come. to/ t_chan/ MekugiAspi/ MekugiAspi. htm ftp:/ / ftp. pinnaclesys. de/ driver/ pc/ InstantCDDVD/ ASAPI. exe http:/ / www. zianet. com/ jgray/ dat/ files/ ASPI32. pdf http:/ / www. doom9. org/ aspi. htm http:/ / www. nu2. nu/ aspi/

SCSI architectural model


The SCSI architectural model provides an abstract view of the way that SCSI devices communicate. It is intended to show how the different SCSI standards are inter-related. The main concepts and terminology of the SCSI architectural model are: Only the externally observable behavior is defined in SCSI standards. The relationship between SCSI devices is described by a client-server service-delivery model. The client is called a SCSI initiator and the server is called a SCSI target. A SCSI domain consists of at least one SCSI device, at least one SCSI target and at least one SCSI initiator interconnected by a service delivery subsystem. A SCSI device has one or more SCSI ports, and a SCSI port may have an optional SCSI port identifier (SCSI ID or PID). A SCSI device can have an optional SCSI device name which must be unique within the SCSI domain in which the SCSI device has SCSI ports. This is often called a World Wide Name. Note that the "world" may only consist of a very small number of SCSI devices. A SCSI target consists of one or more SCSI logical unit numbers (LUNs). A LUN may have dependent LUNs embedded within it. This can recur up to a maximum nesting depth of four addressable levels. There are three type of SCSI ports: initiator ports, target ports and target/initiator ports. A SCSI device may contain any combination of initiator ports, target ports and target/initiator ports. SCSI distributed objects are considered to communicate in a three layer model: The highest level of abstraction is the SCSI Application Layer (SAL) where an initiator and a target are considered to communicate using SCSI commands sent via the SCSI application protocol. The SCSI Transport Protocol Layer (STPL) is where an initiator and a target are considered to communicate using a SCSI transport protocol. Examples of SCSI transport protocols are Fibre Channel, SSA and the SCSI Parallel Interface. The lowest level is the SCSI Interconnect Layer (SIL) where an initiator and a target are considered to communicate using an interconnect.

SCSI architectural model A SCSI task is represented by an I_T_L_Q nexus. This is where one Initiator Port talks to one Target Port, addressing one LUN and together they execute one task (identified by Q).

11

External links
SCSI architectural model [1] T10 Technical Committee [2] list of all SCSI standards

References
[1] http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=sam4r05. pdf [2] http:/ / www. t10. org/

SCSI CDB
In SCSI standards for transferring data between computers and peripheral devices, often computer storage, commands are sent in a Command Descriptor Block (CDB). Each CDB can be a total of 6, 10, 12, or 16 bytes, but later versions of the SCSI standard also allow for variable-length CDBs. The CDB consists of a one byte operation code followed by some command-specific parameters. The parameters need not be a full byte long, and the parameter length varies from one command to another. The available commands, with links to articles describing the detailed structure of many of them, are listed in the article section SCSI command#List of SCSI commands. Typical CDB structures, for the 6- and 16-byte SCSI Request Sense Command, opcode 3, are: 6-byte CDB:
bit 7 6 5 4 3 2 1 0 byte 0 1 2 3 4 5 Operation code = 03h LUN Reserved Reserved Reserved Allocation length Control

16-byte CDB:
bit 7 6 5 4 3 2 1 0 byte 0 1 2 3 4 5 6 7 Logical Block (LSB) Addition CBP information Addition CBP information Operation code = 03h LUN Service Action

Logical Block (MSB)

SCSI CDB

12
8 9 10 11 12 13 14 15 Allocation length (LSB) Misc. CDB data Control Addition CBP information Addition CBP information Allocation length (MSB)

An example with different allocation of bits to parameters is the 6-byte SCSI Mode Sense Command:[1]
bit 7 6 5 byte 0 1 2 3 4 5 LUN PC 4 3 2 1 0

Operation code = 1Ah Reserved DBD Reserved Page code Reserved Allocation length Control

See SPC-4 (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r34. pdf, free registration required) for more information.

References
[1] SCSI Command Reference, pp.97-100.

SCSI check condition

13

SCSI check condition


In computer terminology, a Check Condition occurs when a SCSI device needs to report an error. SCSI communication takes place between an initiator and a target. The initiator sends a command to the target which then responds. SCSI commands are sent in a Command Descriptor Block (CDB). At the end of the command the target returns a Status Code byte which is usually 00h for success, 02h for a Check Condition (error), or 08h for busy. When the target returns a Check Condition in response to a command, the initiator usually then issues a SCSI Request Sense command in order to obtain more information. During the time between the reporting of a Check Condition and the issuing of a Request Sense command, the target is in a special state called a Contingent Allegiance Condition.

SCSI connector
A SCSI connector is used to connect computer parts that use a system called SCSI to communicate with each other. Generally, two connectors, designated male and female, plug together to form a connection which allows two components, such as a computer and a disk drive, to communicate with each other. SCSI connectors can be electrical connectors or optical connectors. There have been a large variety of SCSI connectors in use at one time or another in the computer industry. Probably no computer interconnect (with the possible exception of RS-232 serial) has caused as much confusion. Twenty-five years of evolution and three major revisions of the standards resulted in requirements for Parallel SCSI connectors that could handle an 8, 16 or 32 bit wide bus running at 5, 10 or 20 Mbit/s, with conventional or differential signaling. Serial SCSI added another three transport types, each with one or more connector types. Manufacturers have frequently chosen connectors based on factors of size, cost, or convenience at the expense of compatibility. SCSI often makes use of cables to connect devices together; in a typical example, a socket on a computer motherboard would have one end of a cable plugged into it, while the other end of the cable plugged into a disk drive or other device. This would mean that four connectors were involved in wiring the disk drive and computer together: the connector on the motherboard, the connectors at each end of the cable, A "Mac Stack" of external SCSI devices and the connector on the disk drive. It is sometimes possible to have displaying various SCSI connectors cables which have different types of connectors on them, and some cables can have as many as 16 connectors (allowing 16 devices to be wired together). Some types of connectors are typically used inside a computer or disk drive case, while others are used to connect a computer to a separate device such as a scanner or external disk drive.

SCSI connector

14

Nomenclature
Many connector designations consist of an abbreviation for the connector family, followed by a number indicating the number of pins. For example, "CN36" (also written "CN-36" or "CN36") would be a 36-pin Centronics-style connector. For some connectors (such as the D-subminiature family) use of the hyphen or space is more common, for others (like the "HD50") less so.

Parallel SCSI
Parallel SCSI allows for attachment of up to 16 devices to the SCSI bus, thus cables may have up to 16 connectors. It is unusual, however, for external cables (those that run between enclosures) to have more than 2.

Internal
IDC Header Early generations of SCSI hard drive assemblies generally had two connectors (power and communication) for 8-bit units, and either two or three connectors for 16-bit units. The power connector was typically the same 4-pin female Molex connector used in many other internal computer devices. The communication connectors on the drives were usually a 50 (for 8-bit SCSI) or 68 pin male (for 16-bit SCSI) "IDC header" which has two rows of pins, 0.1inches apart. This connector has no retaining screws to secure the connectors together, and ribbon cables are both inconveniently wide and somewhat delicate, so this connector style was primarily used for connections inside of a computer or peripheral enclosure (as opposed to connecting two enclosures to each other). Thus it is often called an "internal SCSI connector." It is worth noting that this type of header was used for most internal connections in a typical desktop PC until recent times, including the 40-pin (two rows of 20) version used for ATA disk drives. While the female connector is slotted such that a cable with a matching keyed male connector can not be inserted upside-down, some manufacturers (including Sun Microsystems) supplied internal cables with male connectors that did not have the key, allowing for incorrect (and possibly damaging) connections. In most cases, the host adapter would have a similar header-style connection. In some cases, though, the host adapter end of the cable would use a different connector. For example, in the Sun 260 series chassis (used for the Sun 3/260 and Sun 4/260 computers), the connector was the same 3-row 96-pin connector used to attach peripheral cards to the VMEbus backplane. SCA Eventually, there was a desire to combine power and data signals into a single connector. This allows for quick drive replacement, more reliable connections, and is more compact. Most parallel SCSI disk-drives now utilize an 80-pin SCA (Single Connector Attachment) connector. This connector includes a power connection and also has long and short pins which enable hot swapping. Note that this connector is primarily found on disk drive HDA's (and of course the mating enclosure backplane connector).

SCSI connector

15

External
Most typically, external drive enclosures will have female connectors, while cables will have two male connectors. As with everything SCSI, there are exceptions. First Generation Standardization was perhaps less consistent in the early days of SCSI manufacture. Early SCSI interfaces commonly used a 50-pin micro ribbon Assorted SCSI Connectors connector. This connector is similar to the 36-pin connector used by Centronics for the parallel interface on their printers, thus the connector became popularly known as "Centronics SCSI" or "CN-50". It is also referred to as a "SCSI-1 connector"; since many connectors have been used for SCSI-1, this can be confusing. Apple used DB-25 connectors, which, having only 25 pins rather than 50, were less expensive to make, but compromised functionality. Further, DB-25s were commonly used for RS-232 serial cables and also to connect parallel printers, meaning that users might accidentally try to use completely inappropriate cables, since the printer and serial cables would fit the connector properly and be hard to visually distinguish. The DB-25's only advantage was that it was smaller than a CN50. Sun Microsystems and Data General used a 50-pin 3-row DD-50 connector, which was sometimes incorrectly called a "DB-50" or "HDB-50". Sun also used DB-25s on a few products. Digital Equipment Corporation mostly used the CN-50, but the VAXstation 3100 and DECstation 3100/2100 made use of a MALE 68-pin connector on the rear of the workstation. This connector looks like it would be a high density Wide SCSI-2 connector, but is actually

SCSI-1 card with an external Centronics port which requires a terminator, from an Acorn computer.

Old Macintosh DB25 SCSI Port

8-bit SCSI-1. Apple Macintosh laptops used a squarish external SCSI connector called an HDI-30 (High Density Interconnect) on the laptop itself (not on the peripheral end of the cable, unless two laptops were being connected). These machines also had the interesting ability to become "SCSI slaves" (officially known as "SCSI Disk Mode" in Apple documentation), meaning that they could appear to be disk drives when attached to another computer's SCSI controller (a feature later reimplemented over FireWire and Thunderbolt for later, non-SCSI Mac hardware). IBM's early RS6000 workstations sometimes used a "High Density Centronics" connector, which was a Centronics-style connector with smaller pins and shell. For some reason it had 60 pins, and is thus known as the "HDCN60"

Macintosh HDI-30 SCSI Male Connector

Certain Japanese digital camera manufacturers wanted to put SCSI into their equipment, but conventional connectors would have been too large. Like IBM, they used a miniaturized Centronics connector, but this one had 50 pins, and

SCSI connector was called the "HPCN50". Some manufacturers used a DC-37 connector, often incorrectly referred to as a DB-37. These will most commonly be seen on three-cable systems, which are typically 16-bit or 32-bit "Wide SCSI" systems. Extra confusion is generated here since this connector was also frequently used with SMD disk drives, which are completely incompatible with SCSI drives. Post SCSI-2 As time went on, some manufacturers desired connectors even smaller than the SCSI-2 connector. One such in somewhat common use was the VHDCI (Very High Density Cable Interconnect) connector, also known as an "AMP HPCN68M" (a manufacturer part number), and sometimes as "SCSI-5". There are 68 pins on the connector in two rows; the pins are 0.8mm apart. This connector is reputed to suffer fewer bent pins than the 68-pin SCSI-2 connector despite its minuscule pins. Interoperability

16

SCA-2 connector on Fujitsu MAP3735NC

There are adapters between most types of parallel SCSI connector, and some companies will manufacture custom cables to guarantee having the correct connectors. An adapter from narrow to wide must include termination to work properly. Different SCSI standards use the same SCSI connectors as in HVD and LVD SCSI (High Voltage Differential and Low Voltage Differential) . HVD uses 15V while LVD uses 3.3V, so connecting an HVD device to an LVD host bus adaptor can blow the line drivers on the HBA, likewise an HVD HBA connected to an LVD device. Similarly, connecting a (slow) SE single-ended device onto a (fast) LVD SCSI chain will cause the HBA to sync down to the lowest speed. While interconnectivity of a number of devices may look straightforward, there are many pitfalls, and with older SE devices the cabling length becomes an issue as signal degrades.

Drive Caddies
Many manufacturers have devised systems in which a SCSI disk drive or other device was placed in a small "caddy" container (also called a "drive sled"), which carried connections for both power and data. The caddy or canister would be placed in a larger enclosure. Some of these systems allowed for hot swap (drives could be replaced with the system running), while others allowed "warm swap", in which the SCSI bus was "quiesced" (meaning all drive activity was stopped) but remained powered on with devices ready. Digital Equipment Corporation's StorageWorks products were one system of this type. DEC briefly allowed third parties to license this system, but reversed the decision after less than a year; as a result, third-party StorageWorks products are quite rare. Compaq also made a drive caddy system for the Proliant line of servers. Compaq purchased DEC, and Hewlett-Packard later purchased Compaq, and the Proliant and StorageWorks names were reused on other storage products, including later hot-swap systems.

SCA 80 pin Connector - on hot-plug drive (HP/Compaq or DELL)

Some of these caddy systems were OEM manufactured, which means that the same product could appear with numerous brand names and model identifications. These Hot-Plug drives in caddies generally use 80 pin SCA connectors (HP,Compaq, DELL from SCSI-3 to Ultra-320)

SCSI connector

17

Serial SCSI
Serial SCSI disk-drives have recently been introduced. They use smaller connectors due to the reduced number of signals required. There are three types of physical layer transports specified: Fibre Channel, also called FC SAS, Serial Attached SCSI SSA, the Serial Storage Architecture Additionally, there is the iSCSI transport, which is not present on the drives themselves, but is used to connect devices using TCP/IP networks. The drives themselves would use one of the other three connector types.

Connectors on the Drives (Internal)


Fibre Channel FC-AL disk-drives include a 40-pin SCA-2 connector SSA disk-drives include a "unitized" composite connector SAS disk-drives have an SFF 8482 connector. This is "form factor compatible" with the connector on SATA disk drives, meaning that a SATA drive may be installed in an SAS drive bay, and the enclosure can use the Serial ATA Tunneling Protocol (STP) to make use of the drive. There are keyed parts to the connector on an SAS drive that will prevent it from being inserted into a SATA drive bay. There is no defined iSCSI disk-drive connector

SAS drive connector - internal

External Connectors
Fibre Channel FC-AL cables initially used DE-9 connectors (electrical) or SC connectors (optical) More recent FC-AL cables use HSSDC connectors (electrical) or LC connectors (optical). Many FC-AL products now use an intermediate device called a GBIC (GigaBit Interface Converter) which allows more flexibility. GBICs can interconnect with a range of SFP (Small Form-factor Pluggable) connectors. SAS interconnections use either SFF 8484 multilane unshielded serial attachment connector (internal connector) SFF 8470 multilane copper connector, also known as an Infiniband connector (external connector) SFF 8087 Molex iPASS unshielded mini-multilane, reduced width internal connector SFF 8088 Molex iPASS shielded mini-multilane, reduced width external connector SSA cables are terminated with 9-pin micro-D connectors iSCSI may be interconnected by any means used to build a TCP/IP network, since the SCSI commands are simply being carried over TCP/IP.
An SFF-8484 connector.

SCSI connector

18

Drive Caddies
The situation is fundamentally similar to that of Parallel SCSI drive caddies; there have been a range of manufacturers, and the caddies themselves contain a generic device (with one of the standard internal connectors) which can be removed and replaced.

External links
Pictures of SSA connectors [1] Pictures of FC-AL connectors [2] Pictures of SAS connectors [3]

References
[1] http:/ / www. volex. com/ index. php?option=content& task=view& id=116 [2] http:/ / www. cs-electronics. com/ fibre-channel-cables. htm [3] http:/ / www. assembletech. com/ products/ sas/ sas. htm

SCSI contingent allegiance condition


On a computer SCSI connection, a contingent allegiance condition occurs while a SCSI device reports an error. SCSI communication takes place between an initiator and a target. The initiator sends a command to the target which then responds. At the end of the command the target returns a Status Code byte which is usually 0 for success, 2 for a Check Condition (error), or 8 for busy. When the target returns a Check Condition in response to a command, the initiator usually then issues a SCSI Request Sense command in order to obtain more information. During the time between the reporting of a Check Condition and the issuing of the Request Sense command, the target is in the special state called the contingent allegiance condition.

Details
While a target is in a contingent allegiance condition it must retain the sense information that relates to the error that caused it to enter that condition. This can be a complex issue in configurations which contain more than one initiator. A well-designed target may be able to maintain sense data for one initiator while servicing commands from another initiator. If a check condition then needs to be reported to a second or third initiator then this may become prohibitively difficult. The SCSI definition of the contingent allegiance condition allows the target to use the busy response to incoming commands and to suspend servicing of any recent commands that are still in its execution queue. The events that can cause a target to enter the contingent allegiance condition are Target responds to a SCSI command with a check condition 02h Target responds to a SCSI command with command terminated 22h An unexpected disconnect The events that can cause a target to exit the contingent allegiance condition are Target receives a hard reset Target receives an abort message Target receives a bus device reset message Target receives any command from the relevant initiator

SCSI contingent allegiance condition

19

Extended contingent allegiance condition


When the target needs to perform a long error-recovery procedure (typically one that lasts more than one second) it can enter the extended contingent allegiance condition. This may be necessary in high performance systems or in cases where there is a danger that initiator may reset the target after a short timeout interval, thereby aborting the error-recovery procedure. As in the contingent allegiance condition, the target is allowed to use the busy response to incoming commands and to suspend servicing of any recent commands that are still in its execution queue. When a target enters the extended contingent allegiance condition it will send an Initiate Recovery message to the initiator. The SCSI events that can cause a target to exit the extended contingent allegiance condition are Target receives a Bus Device Reset Target receives a hard reset Target receives a Release Recovery message from the relevant initiator

Domain validation
Domain Validation is part of the SCSI standard. It describes how to negotiate the best possible transfer agreement between two devices. There are three different messages that can be sent: SDTR (Synchronous Data Transfer Request) WDTR (Wide Data Transfer Request) PPR (Parallel Protocol Request) WDTR is used only to negotiate width (8 or 16 bit). SDTR can be used to negotiate up to Ultra-2 speeds. PPR subsumes the capabilities of both WDTR and SDTR and can negotiate speeds of up to Ultra-640. It can also set various parameters, such as Information Units, Quick Arbitration Select and Double Transition clocking.

Electrical termination

20

Electrical termination
Electrical termination of a signal involves providing a terminator at the end of a wire or cable to prevent an RF signal from being reflected back from the end, causing interference. The terminator is placed at the end of a transmission line or daisy chain bus (such as in SCSI), designed to match impedance and hence minimize signal reflections.

Types of terminators
Passive Passive terminators consist of a simple resistor. Limited usage for highspeed applications. There are two types: a resistor between signal and ground like in Ethernet, or a resistor from the positive rail to signal and a resistor from the signal to negative rail like in SCSI. Active Active terminators consist of a voltage regulator that keeps the voltage used for the terminating resistor(s) at a constant level. Forced Perfect Termination (FPT) Forced Perfect Termination can be used on single ended buses where diodes remove over and undershoot conditions. The signal is locked between two actively regulated voltage levels, which results in superior performance over a standard active terminator.

10BASE2 cable end Terminator.

Applications
SCSI
All parallel SCSI units use terminators. SCSI is primarily used for storage and backup.

Controller Area Network


Controller area network, commonly known as CAN Bus, uses terminators consisting of a 120 ohm resistor.
SCSI terminator.

Electrical termination

21

Dummy load
Dummy loads are commonly used in HF to EHF frequency circuits.

Ethernet coaxial 50 ohm


10BASE2 networks absolutely must have proper termination with a 50 ohm BNC terminator. If the bus network is not properly terminated, too much power will be reflected, causing all of the computers on the bus to lose network connectivity.

Antenna network 75 ohm


A terminating resistor for a television coaxial cable is often in the form of a cap, threaded to screw onto an F connector. Antenna cables are sometimes used for internet connections; however RG-6 should not be used for 10BASE2 (which should use RG-58) as the impedance mismatch can cause phasing problems with the baseband signal.

MIL-STD-1553
Terminating resistors values of 78.7 ohms 2 watt 1% are used on the MIL-STD-1553 bus. At the two ends of the bus, resistors connect between the positive (high) and negative (low) signal wires either in internally terminated bus couplers or external connectorized terminators. The MIL-STD-1553B bus must be terminated at both ends to minimize the effects of signal reflections that can cause waveform distortion and disruption or intermittent communications failures. Optionally, a high-impedance terminator (1000 to 3000 ohms) may be used in vehicle applications to simulate a future load from an unspecified device. Connectorized terminators are available with or without safety chains.

Issues
Signal reflection Impedance matching Biasing

External links
MIL-STD-1553B Concepts and Considerations [1] from MilesTek Corporation Terminators [2] from MilesTek Corporation

Other meaning
Electrical termination sometimes refers to manufacturing operations which connect wires together. This includes crimping, soldering, and related operations. See electrical connector.

References
[1] http:/ / www. milestek1553. com/ tech. asp [2] http:/ / www. milestek. com/ search. asp?skw=terminator

Enclosure Services Interface

22

Enclosure Services Interface


The Enclosure Services Interface (ESI) is a computer protocol used in SCSI enclosures. This is part of a chain of connections that allows a host computer to communicate with the enclosure to access its power, cooling, and other non-data characteristics. This overall approach is called SCSI attached enclosure services:

The host computer communicates with the disks in the enclosure via a Serial SCSI interface (which may be either FC-AL or SAS). One of the disk devices located in the enclosure is set up to allow SCSI Enclosure Services (SES) communication through a LUN. The disk-drive then communicates with the SES processor in the enclosure via ESI. The data sent over the ESI interface is simply the contents of a SCSI command and the response to that command. In fault-tolerant enclosures, more than one disk-drive slot has ESI enabled to allow SES communications to continue even after the failure of any of the disk-drives.

ESI electrical interface


The ESI interface was designed to make use of the seven existing "SEL_n" address signals which are used at power-on time for establishing the address (ALPA) of a disk-drive. An extra eighth signal called "-PARALLEL ESI" is used to switch the function of the SEL_n signals.
Signal name SEL_0/D0 SEL_1/D1 SEL_2/D2 SEL_3/D3 Function Data bus bit 0 Data bus bit 1 Data bus bit 2 Data bus bit 3

SEL_4/-ENCL_ACK The enclosure clocks this to acknowledge a read or write data transfer SEL_5/-DSK_RD SEL_6/-DSK_WR The disk-drive clocks this to send a NIBL of data to the enclosure The disk-drive clocks this to receive a NIBL of data from the enclosure

ESI command sequence


A SCSI Send Diagnostic command or Receive Diagnostic Results command is sent from the host computer to the disk-drive to initiate an SES transfer. The Disk-drive then asserts "-PARALLEL ESI" to begin this sequence of ESI bus phases:

Enclosure Services Interface

23

Phase

Function

Discovery phase Disk-drive tests that the enclosure is SFF-8067 compliant Command phase Disk-drive sends the SCSI CDB to the enclosure (similar to the write phase) Either Read phase or Write phase Disk-drive sends diagnostic page data to the enclosure Disk-drive receives diagnostic page data from the enclosure

Finally, the disk-drive deasserts "-PARALLEL ESI". The above sequence is just a simple implementation of a 4-bit wide parallel interface which is used to execute a SCSI transaction. If the CDB is for a Send Diagnostic command then the data is sent to a SCSI diagnostic page in the enclosure. If the CDB is for a SCSI Receive Diagnostic Results command then the data is received from a SCSI diagnostic page. No other CDB types are allowed.

Alternatives to ESI
There are two common alternatives ESI: Standalone Enclosure Services uses a direct connection which does not require ESI SSA enclosures use an interface called DSI which is similar to ESI

Specifications
The definition of the ESI protocols is owned by an ANSI committee and defined in their specifications ANSI SFF-8067 and ANSI SFF-8045.

Hard Disk 20SC

24

Hard Disk 20SC


Hard Disk 20SC

Type Release date Discontinued Operating system Dimensions

Hard Disk September, 1986 ? N/A plastic (Pantone 453 [1] & Platinum)

The Apple Hard Disk 20SC (not to be confused with the Apple Macintosh Hard Disk 20, the first hard drive manufactured by Apple exclusively for the original Macintosh floppy disk drive port interface) was Apple's first SCSI based hard drive for the Apple II family as well as the Macintosh and other third party computers using an industry standard SCSI interface.

History
Released in September 1986 along with the Apple IIGS (which required an optional SCSI interface card to use it), it debuted over 9 months after the introduction of the Macintosh Plus, the first to include Apple's SCSI interface. It was a welcome addition, delivering considerably faster data transfer rates (up to 1.25 megabytes per second)[2] than its predecessors, the Hard Disk 20 (62.5 Kilobytes per second)[3] and ProFile.[4]

Hardware
The 20SC originally contained a half height 5.25" Seagate ST-225N 20MB SCSI hard drive, but was later manufactured with a full-height 3.5" MiniScribe 8425SA 20MB SCSI hard drive. The latter drive was the same size as the drive inside the Macintosh Hard Disk 20, but 10 to 15 MB over what had previously been offered by Apple for the II family. The same drive mechanism would also be offered 6 months later as a built-in drive option on the Macintosh II and SE. It had two standard Centronics 50-pin connectors, one for the System and one for daisy-chaining additional SCSI devices and a SCSI ID selection switch. An external terminator was required if it was the only SCSI device connected. The case itself could accommodate a 3.5" or 5.25" full-height hard drive mechanism. Indeed the case design would be reused unchanged (in Platinum only) for 3 more models introduced the following year: 40SC, 80SC & 160SC (offering respective Megabytes of storage). While the transfer rates were significantly higher due to the faster SCSI bus technology, the actual transfer rate varied from computer to computer thanks to different SCSI implementation based on developing industry standards.[5]

Hard Disk 20SC

25

Design
In addition to being the first cross-platform drive offered by Apple it was the first hard drive to use the Snow White design language. Notably, it was the only Snow White product to use the Macintosh beige color and one of the few Apple products to be introduced in two different colors at the same time. Since the Apple IIGS was the first Apple product to debut in the new gray color they called Platinum, the 20SC had to both match it and the beige color of the Macintosh Plus, which it is designed to sit perfectly beneath. In 1987, all Apple products would change to Platinum, which would remain in use for the next 10 years.

References
[1] Tracy, Ed. "History of computer design: Macintosh" (http:/ / www. landsnail. com/ apple/ local/ design/ macintosh. html). . Retrieved 2007-12-30. [2] Apple Hard Disk 20SC: Specifications (Discontinued) (http:/ / docs. info. apple. com/ article. html?artnum=1931) [3] Hard Disk 20: Specification (Discontinued) (http:/ / docs. info. apple. com/ article. html?artnum=1306) [4] ProFile Hard Drive: Specifications (Discontinued) (http:/ / docs. info. apple. com/ article. html?artnum=1128) [5] Apple HD SC: Specifications (Discontinued) (http:/ / docs. info. apple. com/ article. html?artnum=2791)

Host adapter
In computer hardware, a host controller, host adapter, or host bus adapter (HBA) connects a host system (the computer) to other network and storage devices. The terms are primarily used to refer to devices for connecting SCSI, Fibre Channel and eSATA devices, but devices for connecting to IDE, Ethernet, FireWire, USB and other systems may also be called host adapters. Recently, the advent of iSCSI and Fibre Channel over Ethernet has brought about Ethernet HBAs, which are different from Ethernet NICs in that they include TCP Offload Engines. There are also converged HBAs that support both Ethernet and Fibre Channel called Converged Network Adapters (CNAs).

Fibre Channel Host Bus Adapter (64-bit PCI-X card)

SCSI
A SCSI host adapter connects host system to boot from a SCSI device, but also facilitates configuration of the host adapter. Typically a device driver, linked to the operating system, controls the host adapter itself. In a typical parallel SCSI subsystem, each device has assigned to it a SCSI Host Bus Adapter (16-bit ISA card) unique numerical ID. As a rule, the host adapter appears as SCSI ID 7, which gives it the highest priority on the SCSI bus (priority descends as the SCSI ID descends; on a 16-bit or "wide" bus, ID 8 has the lowest priority, a feature that maintains compatibility with the priority scheme of the 8-bit or "narrow" bus). The host adapter usually assumes the role of SCSI initiator, in that it issues commands to other SCSI devices. A computer can contain more than one host adapter, which can greatly increase the number of SCSI devices available. Major SCSI adapter manufacturers are HP, ATTO Technology, Promise Technology, Adaptec, and LSI Logic. LSI, Adaptec, and ATTO currently offer PCIe SCSI adapters which fit in new Apple Mac, on Intel PCs, and low-profile

Host adapter motherboards from companies like HP (which now lack SCSI support due to the inclusion of SAS and/or SATA connectivity)....

26

Fibre Channel
Today, the term host bus adapter (HBA) is most often used to refer to a Fibre Channel interface card. Fibre Channel HBAs are available for all major open systems, computer architectures, and buses, including PCI and SBus (obsolete today). Each HBA has a unique World Wide Name (WWN), which is similar to an Ethernet MAC address in that it uses an OUI assigned by the IEEE. However, WWNs are longer (8 bytes). There are two types of WWNs on a HBA; a node WWN (WWNN), which is shared by all ports on a host bus adapter, and a port WWN (WWPN), which is unique to each port. There are HBA models of different speeds: 1Gbit/s, 2Gbit/s, 4Gbit/s, 8Gbit/s, 10Gbit/s and 20Gbit/s. The major Fibre Channel HBA manufacturers are QLogic and Emulex. As of mid-2009, these vendors shared approximately 90% of the market.[1][2] Other manufacturers include Agilent, ATTO, Brocade, and LSI. HBA is also known to be interpreted as High Bandwidth Adapter in cases of Fibre Channel controllers.

InfiniBand
The term host channel adapter (HCA) is usually used to describe InfiniBand interface cards.

ATA
ATA host adapters are integrated into motherboards of most modern PCs. They are often improperly called disk controllers. The correct term for the component that allows a computer to talk to a peripheral bus is host adapter . A proper disk controller only allows a disk to talk to the same bus.

SAS and SATA


SAS or serial-attached SCSI is the current connectivity to replace the previous generation parallel-attached SCSI (PAS) devices. Ultra320 was the highest level of parallel SCSI available, but SAS has since replaced it as the highest-performing SCSI technology. SATA is a similar technology from the aspect of connection options. HBAs can be created using a single connector to connect both SAS and SATA devices. Major SAS/SATA adapter manufacturers are Promise Technologies, Adaptec, HP, QLogic, Areca, LSI and ATTO Technology.

eSATA
External Serial ATA disk enclosures and drives are increasingly common in the consumer computing market, but not all SATA-compatible motherboards and disk controllers include external SATA ports. As such, adapters to connect external SATA devices to ports on an internal SATA bus are commonly available.

Mainframe I/O channels


In the mainframe field, the terms host adapter or host bus adapter were traditionally not used. A similar goal is achieved since 1960s with a different technique: I/O channel, or simply channel, is a separate processor that can access main memory independently, in parallel with CPU (like later DMA in personal computer field), and that executes its own I/O-dedicated programs when pointed to such by the controlling CPU. Protocols used by I/O channels to communicate with peripheral devices include ESCON and newer FICON.

Host adapter

27

References
[1] Simpson, Dave. "Emulex vs. QLogic: Who's on first?" (http:/ / www. infostor. com/ index/ blogs_new/ dave_simpson_storage/ blogs/ infostor/ dave_simpon_storage/ post987_8533790865885281755. html), InfoStor, 2009-08-14. Market share for Q2 2009 according to a proprietary report from Dell'Oro Group (http:/ / www. delloro. com/ ). [2] Mellor, Chris. "HBA market share shenanigans" (http:/ / www. theregister. co. uk/ 2009/ 08/ 14/ hba_market_shares_2009/ ), The Register, 2009-08-14. Also based on Dell'Oro data.

External links
Fibre Channel Host Bus Adapter API (http://hbaapi.sourceforge.net) SPI Host Adapter - Background Information (http://www.byteparadigm.com/spi-host-adapter-103.html)

HyperSCSI
HyperSCSI was a computer network protocol for accessing storage by sending and receiving SCSI commands. It was developed by researchers at the Data Storage Institute in Singapore in 2000 to 2003.[1] HyperSCSI is unlike iSCSI in that it bypassed the internet protocol suite (TCP/IP) and works directly over Ethernet to form its Storage area network. It skipped the routing, retransmission, segmentation, reassembly, and all the other problems that the TCP/IP suite addresses. Compared to iSCSI, this was meant to give a performance benefit at the cost of IP's flexibility. An independent performance test showed that performance was unstable with network congestion.[2] The similar ATA over Ethernet technology was based on a cheap technology. Since HyperSCSI was in direct competition with the older and well established Fibre Channel, and the standardized iSCSI, it was not adopted by commercial vendors. Some researchers at Huazhong University of Science and Technology noted the failure to provide any transport layer protocol, so implemented a reliability layer in 2007.[3] Another version called HS/IP was developed over the Internet Protocol (IP).[4]

References
[1] W.Y.H. Wang; H.N. Yeo; Y.L. Zhu; T.C. Chong (November 19, 2004). "Design and development of Ethernet-based storage area network protocol". Proceedings of the 12th IEEE International Conference on Networks (IEEE): 4852. doi:10.1109/ICON.2004.1409086. ISBN0-7803-8783-X. [2] Mathias Gug (March 24, 2003). "Performance comparison between iSCSI and other hardware and software solutions" (http:/ / www. slac. stanford. edu/ econf/ C0303241/ proc/ papers/ TUDP001. PDF). Computing in High Energy and Nuclear Physics (La Jolla, California). . Retrieved May 5, 2011. [3] Gongye Zhou; Peng Chen (July 31, 2007). "RH-SCSI: A Reliable HyperSCSI Protocol for Networking Storage". International Conference on Networking, Architecture, and Storage 2007 (IEEE): 2931. doi:10.1109/NAS.2007.45. ISBN0-7695-2927-5. [4] Wang Yonghong. "Network Storage Technology Division: HyperSCSI Overview" (http:/ / www. dsi. a-star. edu. sg/ main/ dev/ mainPage. asp?cid=15006& Lid=0). Data Storage Institute. . Retrieved May 5, 2011.

External links
"Research report 2003: Storage over IP (HyperSCSI)" (http://www.ces.net/doc/2003/research/soip.html). CESNET, Czech Academy of Sciences. Retrieved May 5, 2011. including an introduction and features of HyperSCSI, and a comparison with iSCSI "What the Heck Is HyperSCSI?" (http://www.byteandswitch.com/document.asp?doc_id=40846). Byte and Switch. September 26, 2003. Retrieved May 5, 2011.

iSCSI

28

iSCSI
i In computing, iSCSI ( /askzi/ eye-SKUZ-ee), is an abbreviation of Internet Small Computer System Interface, an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. By carrying SCSI commands over IP networks, iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. iSCSI 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. The protocol allows clients (called initiators) to send SCSI commands (CDBs) to SCSI storage devices (targets) on remote servers. It is a storage area network (SAN) protocol, allowing organizations to consolidate storage into data center storage arrays while providing hosts (such as database and web servers) with the illusion of locally-attached disks. Unlike traditional Fibre Channel, which requires special-purpose cabling, iSCSI can be run over long distances using existing network infrastructure.

Functionality
iSCSI uses TCP (typically TCP ports 860 and 3260). In essence, iSCSI simply allows two hosts to negotiate and then exchange SCSI commands using IP networks. By doing this iSCSI takes a popular high-performance local storage bus and emulates it over wide-area networks, creating a storage area network (SAN). Unlike some SAN protocols, iSCSI requires no dedicated cabling; it can be run over existing IP infrastructure. As a result, iSCSI is often seen as a low-cost alternative to Fibre Channel, which requires dedicated infrastructure except in its FCoE (Fibre Channel over Ethernet) form. However, the performance of an iSCSI SAN deployment can be severely degraded if not operated on a dedicated network or subnet (LAN or VLAN). Although iSCSI can communicate with arbitrary types of SCSI devices, system administrators almost always use it to allow server computers (such as database servers) to access disk volumes on storage arrays. iSCSI SANs often have one of two objectives: Storage consolidation Organizations move disparate storage resources from servers around their network to central locations, often in data centers; this allows for more efficiency in the allocation of storage. In a SAN environment, a server can be allocated a new disk volume without any change to hardware or cabling. Disaster recovery Organizations mirror storage resources from one data center to a remote data center, which can serve as a hot standby in the event of a prolonged outage. In particular, iSCSI SANs allow entire disk arrays to be migrated across a WAN with minimal configuration changes, in effect making storage "routable" in the same manner as network traffic.

Network booting
For general data storage on an already-booted computer, any type of generic network interface may be used to access iSCSI devices. However, a generic consumer-grade network interface is not able to boot a diskless computer from a remote iSCSI data source. Instead it is commonplace for a server to load its initial operating system from a TFTP server or local boot device, and then use iSCSI for data storage once booting from the local device has finished. A separate DHCP server may be configured to assist interfaces equipped with network boot capability to be able to boot over iSCSI. In this case the network interface looks for a DHCP server offering a PXE or bootp boot image. This is used to kick off the iSCSI remote boot process, using the booting network interface's MAC address to direct the computer to the correct iSCSI boot target. Most Intel Ethernet controllers for servers support iSCSI boot. [1]

iSCSI

29

Concepts
Initiator
Further information: SCSI initiator An initiator functions as an iSCSI client. An initiator typically serves the same purpose to a computer as a SCSI bus adapter would, except that instead of physically cabling SCSI devices (like hard drives and tape changers), an iSCSI initiator sends SCSI commands over an IP network. An initiator falls into two broad types: Software initiator A software initiator uses code to implement iSCSI. Typically, this happens in a kernel-resident device driver that uses the existing network card (NIC) and network stack to emulate SCSI devices for a computer by speaking the iSCSI protocol. Software initiators are available for most popular operating systems and are the most common method of deploying iSCSI. Hardware initiator A hardware initiator uses dedicated hardware, typically in combination with software (firmware) running on that hardware, to implement iSCSI. A hardware initiator mitigates the overhead of iSCSI and TCP processing and Ethernet interrupts, and therefore may improve the performance of servers that use iSCSI. Host Bus Adapter An iSCSI host bus adapter (more commonly, HBA) implements a hardware initiator. A typical HBA is packaged as a combination of a Gigabit (or 10 Gigabit) Ethernet NIC, some kind of TCP/IP offload engine (TOE) technology and a SCSI bus adapter, which is how it appears to the operating system. An iSCSI HBA can include PCI option ROM to allow booting from an iSCSI TCP Offload Engine A TCP Offload Engine, or "TOE Card", offers an alternative to a full iSCSI HBA. A TOE "offloads" the TCP/IP operations for this particular network interface from the host processor, freeing up CPU cycles for the main host applications. When a TOE is used rather than an HBA, the host processor still has to perform the processing of the iSCSI protocol layer itself, but the CPU overhead for that task is low. iSCSI HBAs or TOEs are used when the additional performance enhancement justifies the additional expense of using an HBA for iSCSI, rather than using a software-based iSCSI client (initiator).

Target
The iSCSI specification refers to a storage resource located on an iSCSI server (more generally, one of potentially many instances of iSCSI storage nodes running on that server) as a target. "iSCSI target" should not be confused with the term "iSCSI" as the latter is a protocol and not a storage server instance. An iSCSI target is often a dedicated network-connected hard disk storage device, but may also be a general-purpose computer, since as with initiators, software to provide an iSCSI target is available for most mainstream operating systems. Common deployment scenarios for an iSCSI target include:

iSCSI Storage array In a data center or enterprise environment, an iSCSI target often resides in a large storage array, such as a EqualLogic, Isilon, NetApp filer, EMC NS-series , CX4,VNX , VNXe ,VMAX or a HDS HNAS computer appliance. A storage array usually provides distinct iSCSI targets for numerous clients.[2] Software target Nearly all modern mainstream server operating systems (such as BSD, Linux, Solaris or Windows Server) can provide iSCSI target functionality, either as a built-in feature or with supplemental software. Some specific-purpose operating systems (such as FreeNAS, Openfiler or OpenMediaVault) implement iSCSI target support. Logical Unit Number In SCSI terminology, LUN stands for logical unit number. A LUN represents an individually addressable (logical) SCSI device that is part of a physical SCSI device (target). In an iSCSI environment, LUNs are essentially numbered disk drives. An initiator negotiates with a target to establish connectivity to a LUN; the result is an iSCSI connection that emulates a connection to a SCSI hard disk. Initiators treat iSCSI LUNs the same way as they would a raw SCSI or IDE hard drive; for instance, rather than mounting remote directories as would be done in NFS or CIFS environments, iSCSI systems format and directly manage filesystems on iSCSI LUNs. In enterprise deployments, LUNs usually represent slices of large RAID disk arrays, often allocated one per client. iSCSI imposes no rules or restrictions on multiple computers sharing individual LUNs; it leaves shared access to a single underlying filesystem as a task for the operating system.

30

Addressing
Special names refer to both iSCSI initiators and targets. iSCSI provides three name-formats: iSCSI Qualified Name (IQN) Format: The iSCSI Qualified Name is documented in RFC 3720, with further examples of names in RFC 3721. Briefly, the fields are: literal iqn date (yyyy-mm) that the naming authority took ownership of the domain reversed domain name of the authority (org.alpinelinux, com.example, to.yp.cr) Optional ":" prefixing a storage target name specified by the naming authority. From the RFC: Naming String defined by Type Date Auth "example.com" naming authority +--++-----+ +---------+ +-----------------------------+ | || | | | | | iqn.1992-01.com.example:storage:diskarrays-sn-a8675309 iqn.1992-01.com.example iqn.1992-01.com.example:storage.tape1.sys1.xyz iqn.1992-01.com.example:storage.disk2.sys1.xyz
[3]

Extended Unique Identifier (EUI) Format: eui.{EUI-64 bit address} (e.g. eui.02004567A425678D) T11 Network Address Authority (NAA)

iSCSI Format: naa.{NASA 64 or 128 bit identifier} (e.g. naa.52004567BA64678D) IQN format addresses occur most commonly. They are qualified by a date (yyyy-mm) because domain names can expire or be acquired by another entity. The IEEE Registration authority provides EUI in accordance with the EUI-64 standard. NAA is part OUI which is provided by the IEEE Registration Authority. NAA name formats were added to iSCSI in RFC 3980, to provide compatibility with naming conventions used in Fibre Channel and Serial Attached SCSI (SAS) storage technologies. Usually an iSCSI participant can be defined by three or four fields: 1. 2. 3. 4. Hostname or IP Address (e.g., "iscsi.example.com") Port Number (e.g., 3260) iSCSI Name (e.g., the IQN "iqn.2003-01.com.ibm:00.fcd0ab21.shark128") An optional CHAP Secret (e.g., "secretsarefun")

31

iSNS
iSCSI initiators can locate appropriate storage resources using the Internet Storage Name Service (iSNS) protocol. In theory, iSNS provides iSCSI SANs with the same management model as dedicated Fibre Channel SANs. In practice, administrators can satisfy many deployment goals for iSCSI without using iSNS.

Security
Authentication
iSCSI initiators and targets prove their identity to each other using the CHAP protocol, which includes a mechanism to prevent cleartext passwords from appearing on the wire. By itself, the CHAP protocol is vulnerable to dictionary attacks, spoofing, or reflection attacks. If followed carefully, the rules for using CHAP within iSCSI prevent most of these attacks.[4] Additionally, as with all IP-based protocols, IPsec can operate at the network layer. The iSCSI negotiation protocol is designed to accommodate other authentication schemes, though interoperability issues limit their deployment.

Logical network isolation


To ensure that only valid initiators connect to storage arrays, administrators most commonly run iSCSI only over logically-isolated backchannel networks. In this deployment architecture, only the management ports of storage arrays are exposed to the general-purpose internal network, and the iSCSI protocol itself is run over dedicated network segments or virtual LANs (VLAN). This mitigates authentication concerns; unauthorized users aren't physically provisioned for iSCSI, and thus can't talk to storage arrays. However, it also creates a transitive trust problem, in that a single compromised host with an iSCSI disk can be used to attack storage resources for other hosts.

iSCSI

32

Physical network isolation


While iSCSI can be logically isolated from the general network using VLANs only, it is still no different from any other network equipment and may use any cable or port as long as there is a completed signal path between source and target. Just a single cabling mistake by an inexperienced network technician can compromise the barrier of logical separation, and an accidental bridging may not be immediately detected because it does not cause network errors. In order to further differentiate iSCSI from the regular network and prevent cabling mistakes when changing connections, administrators may implement self-defined color coding and labeling standards, such as only using yellow-colored cables for the iSCSI connections and only blue cables for the regular network, and clearly labeling ports and switches used only for iSCSI. While iSCSI could be implemented as just a VLAN cluster of ports on a large multi-port switch that is also used for general network usage, the administrator may instead choose to use physically separate switches dedicated to iSCSI VLANs only, to further prevent the possibility of an incorrectly connected cable plugged into the wrong port bridging the logical barrier.

Authorization
Because iSCSI aims to consolidate storage for many servers into a single storage array, iSCSI deployments require strategies to prevent unrelated initiators from accessing storage resources. As a pathological example, a single enterprise storage array could hold data for servers variously regulated by the SarbanesOxley Act for corporate accounting, HIPAA for health benefits information, and PCI DSS for credit card processing. During an audit, storage systems must demonstrate controls to ensure that a server under one regime cannot access the storage assets of a server under another. Typically, iSCSI storage arrays explicitly map initiators to specific target LUNs; an initiator authenticates not to the storage array, but to the specific storage asset it intends to use. However, because the target LUNs for SCSI commands are expressed both in the iSCSI negotiation protocol and in the underlying SCSI protocol, care must be taken to ensure that access control is provided consistently.

Confidentiality and integrity


For the most part, iSCSI operates as a cleartext protocol that provides no cryptographic protection for data in motion during SCSI transactions. As a result, an attacker who can listen in on iSCSI Ethernet traffic can: reconstruct and copy the files and filesystems being transferred on the wire alter the contents of files by injecting fake iSCSI frames corrupt filesystems being accessed by initiators, exposing servers to software flaws in poorly-tested filesystem code. These problems do not occur only with iSCSI, but rather apply to any SAN protocol without cryptographic security. IP based security protocols, such as IPsec, can provide standards based cryptographic protection to this traffic.

iSCSI

33

Industry support
Operating-system support
The dates that appear in the following table might be misleading. It is known for example that IBM delivered an iSCSI storage device (NAS200i) in 2001 for use with Windows NT, Windows 2000 [5] and Linux [6]
OS First release date 2006-10 2006-06 i5/OS V5R4M0 ESX 3.0, ESX 4.0, ESX 5.0 Version Features

i5/OS VMware ESX AIX Windows

Target, Multipath Initiator, Multipath

2002-10 2003-06

AIX 5.3 TL10, AIX 6.1 TL3 2000, XP Pro, 2003, Vista, 2008, 2008 R2, Windows7, Windows 8, Windows Server 8 NetWare 5.1, 6.5, & OES HP 11i v1, HP 11i v2, HP 11i v3 Solaris 10, OpenSolaris

Initiator, Target Initiator, Target, Multipath

NetWare HP-UX Solaris

2003-08 2003-10 2002-05

Initiator, Target Initiator Initiator, Target, Multipath, iSER Initiator, Target, Multipath, iSER Initiator Initiator (5.0), Target (4.0) Initiator, Target from NetBSD Initiator, Multipath N/A

Linux

2005-06

2.6.12

OpenBSD NetBSD FreeBSD OpenVMS Mac OS X

2009-10 2002-06 2002-08 2002-08 2008-07

4.9 4.0, 5.0 7.0 8.3-1H1 10.4 - 10.7

Target available only as part of Windows Unified Data Storage Server (WUDSS) for Storage Server 2003. Target available in Storage Server 2008 (excepted Basic edition).[7] Target available for Windows Server 2008 R2 as a separate download. Windows Server 8 has built-in iSCSI target version 3.3 (at least in preview versions). MacOS X has neither initiator nor target coming from vendor directly. There are a few MacOS X initiators and targets available but they are from third-party vendors only.

Targets
Most iSCSI targets involve disk, though iSCSI tape and medium-changer targets are popular as well. So far, physical devices have not featured native iSCSI interfaces on a component level. Instead, devices with Parallel SCSI or Fibre Channel interfaces are bridged by using iSCSI target software, external bridges, or controllers internal to the device enclosure. Alternatively, it is possible to virtualize disk and tape targets. Rather than representing an actual physical device, an emulated virtual device is presented. The underlying implementation can deviate drastically from the presented target as is done with virtual tape library (VTL) products. VTLs use disk storage for storing data written to virtual tapes. As with actual physical devices, virtual targets are presented by using iSCSI target software, external bridges, or controllers internal to the device enclosure. In the security products industry, some manufacturers use an iSCSI RAID as a target, with the initiator being either an IP-enabled encoder or camera.

iSCSI

34

Converters and bridges


Multiple systems exist that allow Fibre Channel, SCSI and SAS devices to be attached to an IP network for use via iSCSI. They can be used to allow migration from older storage technologies, access to SANs from remote servers and the linking of SANs over IP networks. An iSCSI gateway bridges IP servers to Fibre Channel SANs. The TCP connection is terminated at the gateway, which is implemented on a Fibre Channel switch or as a standalone appliance.

References
[1] http:/ / www. intel. com/ content/ www/ us/ en/ ethernet-controllers/ ethernet-controllers. html [2] Architecture and Dependability of Large-Scale Internet Services (http:/ / roc. cs. berkeley. edu/ papers/ inet-computing. pdf) David Oppenheimer and David A. Patterson, Berkeley, IEEE Internet Computing, SeptemberOctober 2002. [3] "RFC 3720 - Internet Small Computer Systems Interface (iSCSI), (Section 3.2.6.3.1. Type "iqn." (iSCSI Qualified Name))" (http:/ / tools. ietf. org/ html/ rfc3720#section-3. 2. 6. 3). 2004-04. p.32. . Retrieved 2010-07-16. [4] Satran, Julian; Kalman, Meth; Sapuntzakis, Costa; Zeidner, Efri; Chadalapaka, Mallikarjun (2004-04-02). "RFC 3720" (http:/ / tools. ietf. org/ html/ rfc3720#section-8. 2. 1). . [5] http:/ / www-900. ibm. com/ cn/ support/ library/ storage/ download/ 200i%20iSCSI%20client%20for%20NT& 2000%20Installation& User%20Guide. pdf [6] http:/ / www-900. ibm. com/ cn/ support/ library/ storage/ download/ 200i%20iSCSI%20client%20for%20Linux%20Installation& User%20Guide. pdf [7] http:/ / www. microsoft. com/ windowsserver2008/ en/ us/ WSS08/ iSCSI. aspx

RFCs
RFC 3720 - Internet Small Computer Systems Interface (iSCSI) RFC 3721 - Internet Small Computer Systems Interface (iSCSI) Naming and Discovery RFC 3722 - String Profile for Internet Small Computer Systems Interface (iSCSI) Names RFC 3723 - Securing Block Storage Protocols over IP (Scope: The use of IPsec and IKE to secure iSCSI, iFCP, FCIP, iSNS and SLPv2.) RFC 3347 - Small Computer Systems Interface protocol over the Internet (iSCSI) Requirements and Design Considerations RFC 3783 - Small Computer Systems Interface (SCSI) Command Ordering Considerations with iSCSI RFC 3980 - T11 Network Address Authority (NAA) Naming Format for iSCSI Node Names RFC 4018 - Finding Internet Small Computer Systems Interface (iSCSI) Targets and Name Servers by Using Service Location Protocol version 2 (SLPv2) RFC 4173 - Bootstrapping Clients using the Internet Small Computer System Interface (iSCSI) Protocol RFC 4544 - Definitions of Managed Objects for Internet Small Computer System Interface (iSCSI) RFC 4850 - Declarative Public Extension Key for Internet Small Computer Systems Interface (iSCSI) Node Architecture RFC 4939 - Definitions of Managed Objects for iSNS (Internet Storage Name Service) RFC 5048 - Internet Small Computer System Interface (iSCSI) Corrections and Clarifications RFC 5047 - DA: Datamover Architecture for the Internet Small Computer System Interface (iSCSI) RFC 5046 - Internet Small Computer System Interface (iSCSI) Extensions for Remote Direct Memory Access (RDMA)

iSCSI

35

External links
SCST: A Generic SCSI Target for Linux (includes iSCSI, FC, FCoE, IB) (http://scst.sourceforge.net/)

iSCSI Boot Firmware Table


The iSCSI Boot Firmware Table (iBFT) is a component of the ACPI 3.0b standard that provides operating systems a standard way to boot from software-initiated iSCSI protocol.

External links
The latest ACPI Specification [1] A Microsoft technical document describing the iBFT format in detail [2]

References
[1] http:/ / www. acpi. info/ spec. htm [2] http:/ / www. microsoft. com/ whdc/ system/ platform/ firmware/ ibft. mspx

ISCSI Conformance Testing and Testing Tool Requirement


iSCSI conformance testing is testing to determine whether an iSCSI Initiator/Target meets the iSCSI standard.

SCSI and iSCSI Protocol


The Small Computer System Interface (SCSI) is a family of protocols for communicating with I/O devices, especially storage devices. SCSI is based on client-server model. SCSI clients, called "initiators", issue SCSI commands to request services from components, logical units of a server known as a "target". A "SCSI transport" maps the client-server SCSI protocol to a specific interconnect. An Initiator is one endpoint of a SCSI transport and a target is the other endpoint. Internet Small Computer System Interface (iSCSI) protocol uses TCP/IP as SCSI transport. By transporting SCSI packets over TCP/IP, iSCSI provides an interoperable solution which can take advantage of existing Internet infrastructure, Internet management facilities, and address distance limitations. Unlike traditional Fibre Channel, which requires special-purpose cabling, iSCSI can run on the existing network infrastructure. It has become a popular storage area network (SAN) protocol because of its scalability and economic benefits. The protocol is defined in RFC 3720 and updated in RFC 5048.

ISCSI Conformance Testing and Testing Tool Requirement

36

iSCSI Conformance Testing


With the moving of SCSI transport layer from the traditional reliable bus structure to the far more unreliable TCP/IP network, a fairly reasonable amount of complexity has be introduced into iSCSI: Login/Logout processes are needed. Security/Operational parameters need to be negotiated during login. CHAP or other authentication method may be used during login. Multiple sessions/connections may be required. Multiple error recovery level may be implemented. ...

In one word, although the economic cost of iSCSI may be lower than others, the protocol itself is not that simple. Since the approval of the protocol, iSCSI has been steadily gaining acceptance among end users and storage vendors. Nowadays, there exist a large number of iSCSI initiator/target implementations on the market, either commercial or free/open source. These implementations vary in functionalities and protocol conformance. Conformance testing is testing to determine whether a system meets some specified standard. It's often performed by external organizations, sometimes the standards body itself, to give greater guarantees of compliance. Products tested in such a manner are then advertised as being certified by that external organization as complying with the standard. For iSCSI protocol (or other data networking and storage protocols), The University of New Hampshire InterOperability Laboratory (UNH-IOL) is one of the premier neutral, third-party laboratory who offers test suites for iSCSI conformance testing. As the introduction part in these test suites says: These tests are designed to determine if an iSCSI product conforms to specifications defined in both IETF RFC 3720 iSCSI (hereafter referred to as the iSCSI Standard) as well as updates as contained in IETF RFC 5048 iSCSI Corrections and Clarifications RFC (hereafter referred to as iSCSI Corrections and Clarifications). Successful completion of all tests contained in this suite does not guarantee that the tested device will successfully operate with other iSCSI products. However, when combined with satisfactory operation in the IOLs interoperability test bed, these tests provide a reasonable level of confidence that the Device Under Test (DUT) will function properly in many iSCSI environments. iSCSI conformance testing mainly contains the following aspects: Login Phase Conformance Test negotiation key-value pairs; test various flags: CSG, NSG, C bit, T bit... Full Feature Phase Conformance Test sequence numbers (CmdSN, DataSN, R2TSN); test SCSI Command/Response, Task Management Function Request/Response, Text Request/Response, NOP-In/NOP-Out, SNACK Request... CHAP Conformance Test CHAP fields: CHAP_A, CHAP_C, CHAP_I, CHAP_N, CHAP_R... Multi Connection Conformance Test multi-connection support in connection creation, termination, parameter negotiation, sequence number and task management... Error Recovery Conformance Test Initiator/Target's error recovery support

ISCSI Conformance Testing and Testing Tool Requirement

37

iSCSI Conformance Testing Common Scenarios


Basically two types of actions could be taken to test whether the DUT meets the iSCSI protocol: We do correct things and see if the DUT behaves correctly. In this case, the main task is to send a correct sequence of iSCSI PDUs to the DUT, and to verify the DUT can respond with correct PDUs/PDU fields. We do wrong things and see if the DUT can detect and behave accordingly. In this case, we must modify the PDU sequence sent to the DUT to some extent (e.g., change CmdSN of a command, set an invalid data digest...), and verify the DUT can react according to the protocol (e.g., send a Reject PDU, close the connection...). Some common scenarios can be found in iSCSI conformance testing: iSCSI functional test To test whether an iSCSI task can be executed correctly (Task Management Function, NOP-In/NOP-Out Ping, multiple connections management...) PDU format error For example, this is an error if the W and F bit are both set to 0 in a SCSI Command PDU. PDU session/stage error For example, this is an error if a SCSI Command PDU appears in login stage or discovery session. Header/Data digest error Digest error can cause the Target/Initiator to send Reject/SNACK PDU. Sequence error CmdSN/StatSN/DataSN/R2T each has different scope and different rules. Negotiation error Text parameters should be in key=value format, followed by one NULL ("0x00") delimiter. Each text parameter also has its own stage and negotiation rules. For example, FirstBurstLength must not exceed MaxBurstLength, SendTargets should appear only in Full Feature Phase, etc. Data length error Too much or too little data is sent to the Target. Lost PDU Drop an incoming PDU then SNACK for it, drop an outgoing PDU then retry it. Most of the above scenarios can be emulated by modifying the content of the output PDU. For example, to emulate a data digest error, we just need to change the DataDigest field in the PDU.

iSCSI Conformance Testing Tool Requirement


An iSCSI conformance testing tool can be viewed as an iSCSI Initiator emulator (to test iSCSI Target) or an iSCSI Target emulator (to test iSCSI Initiator). A good iSCSI conformance testing tool should meet the following requirements: Executable test scripts An executable script is needed for each test case. It should be written according to test case description which defines the PDU sequence and verification points. An iSCSI Engine core

ISCSI Conformance Testing and Testing Tool Requirement The iSCSI Engine core is in charge of sending/receiving iSCSI PDUs to/from DUT (Device Under Test). On one side, it accepts input from test script, sending PDUs or verifying check points; on the other, it should understand iSCSI protocol to a certain level so that necessary automation can be achieved, e.g., the automatic generation of iSCSI PDUs (Login/Text Request during negotiation, Nop-Out ping response, ) and some PDU fields (ITT, TTT, CmdSN, data, digest...). PDU format validation For received PDUs, iSCSI Engine core should do validation check to detect malformed PDU. Ability to modify PDU's content Malformed PDUs are often sent to DUT to simulate PDU format error or digest error. Ability to drop PDU PDU could be dropped to simulate lost PDU during transmission. Ability to maintain multiple sessions/connections Just like Error Recovery, multiple sessions/connections support is an advanced field in iSCSI protocol. Result and log Pass or Fail of a test case should have obvious indication. Detailed log is needed for analysis. It would be better to have a graphical interface to analyze PDU dump files. A Batch system A batch system is needed to manage test suites and test cases so that large number of test scripts can run automatically without user intervention.

38

Available iSCSI Conformance Testing Tools


UNH-IOL test service [1] The iSCSI consortium provide a service to test iSCSI products and software from both interoperability and conformance perspectives. Membership is needed for cutting edge testing equipment and IOL testing tools. iSWAT [2] Commercial software. iSWT contains both Initiator and target test modules. Users can develop their own testing scripts. iSCT [3] Commercial software. iSCT is an iSCSI initiator emulator to test protocol conformance of the iSCSI target. It features a batch system to run multiple test cases automatically and a GUI protocol analyzer which mimics WireShark's interface. iSCSISim [4] Open-source software. iSCSISim is also an iSCSI initiator emulator to test iSCSI targets. Written in Python, its capabilities include SCSI command injection, error insertion, and recovery testing.

References
[1] [2] [3] [4] http:/ / www. iol. unh. edu/ services/ testing/ iscsi/ http:/ / www. swattest. com http:/ / www. storagetest. com http:/ / sourceforge. net/ projects/ iscsisim/

iSCSI Extensions for RDMA

39

iSCSI Extensions for RDMA


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). Typically RDMA is provided by either the Transmission Control Protocol (TCP) with RDMA services (iWARP) or InfiniBand. It permits data to be transferred directly into and out of SCSI computer memory buffers (which connects computers to storage devices) without intermediate data copies.

History
An RDMA consortium was announced on May 31, 2002 with a goal of product implementations by 2003.[1] The consortium released their proposal in July, 2003.[2] The protocol specifications were published as drafts in September 2004 in the Internet Engineering Task Force and issued as RFCs in October 2007.[3][4] The OpenIB Alliance was renamed in 2007 to be the OpenFabrics Alliance, and then released an open source software package.[5]

Description
The motivation for iSER is to use RDMA to avoid unnecessary data copying on the target and initiator. The Datamover Architecture (DA) defines an abstract model in which the movement of data between iSCSI end nodes is logically separated from the rest of the iSCSI protocol; iSER is one Datamover protocol. The interface between the iSCSI and a Datamover protocol, iSER in this case, is called Datamover Interface (DI). The main difference between the standard iSCSI and iSCSI over iSER is the execution of SCSI read/write commands. With iSER the target drives all data transfer (with the exception of iSCSI unsolicited data) by issuing RDMA write/read operations, respectively. When the iSCSI layer issues an iSCSI command PDU, it calls the Send_Control primitive, which is part of the DI. The Send_Control primitive sends the STag with the PDU. The iSER layer in the target side notifies the target that the PDU was received with the Control_Notify primitive (which is part of the DI). The target calls the Put_Data or Get_Data primitives (which are part of the DI) to perform an RDMA write/read operation respectively. Then, the target calls the Send_Control primitive to send a response to the initiator. An example is shown in the figures (time progresses from top to bottom). All iSCSI control-type PDUs contain an iSER header, which allows the initiator to advertise the STags that were generated during buffer registration. The target will use the STags later for RDMA read/write operations.

References
READ command execution with iSER [1] "Open Consortium Developing Specifications for Remote Direct Memory Access Over TCP/IP Networks" (http:/ / www. rdmaconsortium. org/ home/

PressReleaseMay31. pdf). press release. May 31, 2002. . Retrieved May 5, 2011. [2] Mike Ko, et al. (July 2003). "iSCSI Extensions for RDMA Specification (Version 1.0)" (http:/ / www.

iSCSI Extensions for RDMA


rdmaconsortium. org/ home/ draft-ko-iwarp-iser-v1. PDF). . Retrieved May 5, 2011. [3] M. Ko et al. (October 2007). "Internet Small Computer System Interface (iSCSI) Extensions for Remote Direct Memory Access (RDMA)". RFC 5046. [4] M. Chadalapaka et al. (October 2007). "DA: Datamover Architecture for the Internet Small Computer System Interface (iSCSI)". RFC 5047. [5] "OpenFabrics Alliance" (http:/ / www. openfabrics. org/ ). official web site. . Retrieved May 4, 2011.

40

WRITE command execution with iSER

Further reading

Mallikarjun Chadalapaka; Hemal Shah; Uri Elzur; Patricia Thaler; Michael Ko (2003). "A study of iSCSI extensions for RDMA (iSER)". Proceedings of the ACM SIGCOMM workshop on Network-I/O convergence (Association for Computing Machinery): 209219. doi:10.1145/944747.944754. Ethan Burns (May 2008). Implementation and Comparison of iSCSI over RDMA (http://www.cs.unh.edu/ burnsthesis.pdf). University of New Hampshire. Retrieved May 5, 2011. Thesis for Master of Science in Computer Science

External links
"RDMA model" (http://www.zurich.ibm.com/sys/rdma/model.html). IBM Research - Zurich. Retrieved May 5, 2011. Mallikarjun Chadalapaka, HP (August 2, 2004). "iSCSI/RDMA: Overview of DA and iSER" (http://www.ietf. org/proceedings/60/slides/ips-1/ips-1.ppt) (ppt). Retrieved May 5, 2011. Peter Dunlap, Sun Microsystems (2008). "OpenSolaris iSCSI Extensions for RDMA (iSER)" (http://www.snia. org/events/storage-developer2008/presentations/wednesday/PeterDunlap_OpenSolaris_iSER.pdf) (ppt). Storage Developers Conference. Retrieved May 5, 2011. iSER and DA Frequently Asked Questions (http://www.rdmaconsortium.org/home/iSER_DA_FAQ.htm)

Key Code Qualifier

41

Key Code Qualifier


KCQ redirects here. For the radio station in Saginaw, Michigan, see WKCQ Key Code Qualifier is a computer term used to describe an error-code returned by a SCSI device. When a SCSI target device returns a check condition in response to a command, the initiator usually then issues a SCSI Request Sense command. This process is part of a SCSI protocol called Contingent Allegiance Condition. The target will respond to the Request Sense command with a set of SCSI sense data which includes three fields giving increasing levels of detail about the error: K - sense key - 4 bits, (byte 2 of Fixed sense data format) C - additional sense code (ASC) - 8 bits, (byte 12 of Fixed sense data format) Q - additional sense code qualifier (ASCQ) - 8 bits, (byte 13 of Fixed sense data format) The initiator can take action based on just the K field which indicates if the error is minor or major. However all three fields are usually logically combined into a 20 bit field called Key Code Qualifier or KCQ. The specification for the target device will define the list of possible KCQ values. In practice there are many KCQ values which are common between different SCSI device types and different SCSI device vendors.

List of common SCSI KCQs


Category No Sense Key ASC ASCQ 0 0 Soft Error 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 5D 01 02 03 09 0B 0C 0C 12 12 14 16 16 16 16 16 17 17 17 00 00 00 00 00 00 01 01 03 01 02 01 00 01 02 03 04 00 01 02 No error No sense - PFA threshold reached Recovered Write error - no index Recovered no seek completion Recovered Write error - write fault Track following error Temperature warning Recovered Write error with auto-realloc - reallocated Recovered Write error - recommend reassign Recovered data without ECC using prev logical block ID Recovered data with ECC using prev logical block ID Recovered Record Not Found Recovered Write error - Data Sync Mark Error Recovered Write error - Data Sync Error - data rewritten Recovered Write error - Data Sync Error - recommend rewrite Recovered Write error - Data Sync Error - data auto-reallocated Recovered Write error - Data Sync Error - recommend reassignment Recovered data with no error correction applied Recovered Read error - with retries Recovered data using positive offset Error Condition

Key Code Qualifier

42
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 17 17 17 17 17 18 18 18 18 18 18 1C 1C 1C 1F 44 5D 04 04 04 04 04 04 31 31 35 3A 3A 3A 4C 03 05 06 07 08 09 00 01 02 05 06 07 00 01 02 00 00 00 00 01 02 03 04 09 00 01 02 00 01 02 00 Recovered data using negative offset Recovered data using previous logical block ID Recovered Read error - without ECC, auto reallocated Recovered Read error - without ECC, recommend reassign Recovered Read error - without ECC, recommend rewrite Recovered Read error - without ECC, data rewritten Recovered Read error - with ECC Recovered data with ECC and retries Recovered Read error - with ECC, auto reallocated Recovered Read error - with ECC, recommend reassign Recovered data using ECC and offsets Recovered Read error - with ECC, data rewritten Defect List not found Primary defect list not found Grown defect list not found Partial defect list transferred Internal target failure PFA threshold reached Not Ready - Cause not reportable. Not Ready - becoming ready Not Ready - need initialise command (start unit) Not Ready - manual intervention required Not Ready - format in progress Not Ready - self-test in progress Not Ready - medium format corrupted Not Ready - format command failed Not Ready - enclosure services unavailable Not Ready - medium not present Not Ready - medium not present - tray closed Not Ready - medium not present - tray open Diagnostic Failure - config not loaded

Not Ready

2 2 2 2 2 2 2 2 2 2 2 2 2

Key Code Qualifier

43
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 02 03 10 11 11 11 11 11 14 16 16 19 19 19 19 19 31 31 01 02 03 09 11 16 19 19 19 31 32 35 35 35 35 35 3E 3E 44 00 00 00 00 01 02 04 0B 01 00 04 00 01 02 03 0E 00 01 00 00 00 00 00 00 00 02 03 00 00 01 02 03 04 05 03 04 00 Medium Error - No Seek Complete Medium Error - write fault Medium Error - ID CRC error Medium Error - unrecovered read error Medium Error - read retries exhausted Medium Error - error too long to correct Medium Error - unrecovered read error - auto re-alloc failed Medium Error - unrecovered read error - recommend reassign Medium Error - record not found Medium Error - Data Sync Mark error Medium Error - Data Sync Error - recommend reassign Medium Error - defect list error Medium Error - defect list not available Medium Error - defect list error in primary list Medium Error - defect list error in grown list Medium Error - fewer than 50% defect list copies Medium Error - medium format corrupted Medium Error - format command failed Hardware Error - no index or sector Hardware Error - no seek complete Hardware Error - write fault Hardware Error - track following error Hardware Error - unrecovered read error in reserved area Hardware Error - Data Sync Mark error in reserved area Hardware Error - defect list error Hardware Error - defect list error in Primary List Hardware Error - defect list error in Grown List Hardware Error - reassign failed Hardware Error - no defect spare available Hardware Error - unsupported enclosure function Hardware Error - enclosure services unavailable Hardware Error - enclosure services transfer failure Hardware Error - enclosure services refused Hardware Error - enclosure services checksum error Hardware Error - self-test failed Hardware Error - unable to update self-test Hardware Error - internal target failure

Medium Error

Hardware Error

4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Key Code Qualifier

44
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1A 20 21 24 25 26 26 26 26 26 2C 35 49 53 53 53 55 55 55 28 29 29 29 29 29 29 29 2A 2A 2A 2A 2A 2A 00 00 00 00 00 00 01 02 03 04 00 01 00 00 01 02 00 01 04 00 00 01 02 03 04 05 06 00 01 02 03 04 05 Illegal Request - parm list length error Illegal Request - invalid/unsupported command code Illegal Request - LBA out of range Illegal Request - invalid field in CDB (Command Descriptor Block) Illegal Request - invalid LUN Illegal Request - invalid fields in parm list Illegal Request - parameter not supported Illegal Request - invalid parm value Illegal Request - invalid field parameter - threshold parameter Illegal Request - invalid release of persistent reservation Illegal Request - command sequence error Illegal Request - unsupported enclosure function Illegal Request - invalid message Illegal Request - media load or eject failed Illegal Request - unload tape failure Illegal Request - medium removal prevented Illegal Request - system resource failure Illegal Request - system buffer full Illegal Request - Insufficient Registration Resources Unit Attention - not-ready to ready transition (format complete) Unit Attention - POR or device reset occurred Unit Attention - POR occurred Unit Attention - SCSI bus reset occurred Unit Attention - TARGET RESET occurred Unit Attention - self-initiated-reset occurred Unit Attention - transceiver mode change to SE Unit Attention - transceiver mode change to LVD Unit Attention - parameters changed Unit Attention - mode parameters changed Unit Attention - log select parms changed Unit Attention - Reservations pre-empted Unit Attention - Reservations released Unit Attention - Registrations pre-empted

Illegal Request

Unit Attention

6 6 6 6 6 6 6 6 6 6 6 6 6 6

Key Code Qualifier

45
6 6 6 6 6 6 6 2F 3F 3F 3F 3F 3F 5D 27 00 1B 25 3F 43 44 45 47 48 49 4B 4E 4F 1D 05 06 07 08 08 08 08 09 09 00 00 01 02 03 05 00 00 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 03 00 01 Unit Attention - commands cleared by another initiator Unit Attention - target operating conditions have changed Unit Attention - microcode changed Unit Attention - changed operating definition Unit Attention - inquiry parameters changed Unit Attention - device identifier changed Unit Attention - PFA threshold reached Write Protect - command not allowed Aborted Command - no additional sense code Aborted Command - sync data transfer error (extra ACK) Aborted Command - unsupported LUN Aborted Command - echo buffer overwritten Aborted Command - message reject error Aborted Command - internal target failure Aborted Command - Selection/Reselection failure Aborted Command - SCSI parity error Aborted Command - initiator-detected error message received Aborted Command - inappropriate/illegal message Aborted Command - data phase error Aborted Command - overlapped commands attempted Aborted Command - due to loop initialisation Miscompare - during verify byte check operation Illegal request Unit attention Data protect LUN communication failure LUN communication timeout LUN communication parity error LUN communication CRC error vendor specific sense key servo fault

Write Protect

Aborted Command B B B B B B B B B B B B B Other E x x x x x x x x x

Key Code Qualifier

46
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 09 0A 0B 0C 0C 0E 12 14 15 15 15 27 29 31 32 32 35 37 3D 3E 40 40 42 4C 5C 5C 5C 65 80 x 04 00 00 00 02 00 00 00 00 01 02 00 00 01 01 02 01 00 00 00 01 02 00 00 00 01 02 00 x 80 head select fault error log overflow aborted command write error write error - auto-realloc failed data miscompare address mark not found for ID field logical block not found random positioning error mechanical positioning error positioning error detected by read of medium write protected POR or bus reset occurred format failed defect list update error no spares available unspecified enclosure services failure parameter rounded invalid bits in identify message LUN not self-configured yet DRAM parity error DRAM parity error power-on or self-test failure LUN failed self-configuration RPL status change spindles synchronised spindles not synchronised voltage fault Vendor specific Vendor specific

References
SPC-4 [1] clause 4.5.6 and annex D.2

References
[1] ftp:/ / ftp. t10. org/ t10/ drafts/ spc4/

Layer Jump Recording

47

Layer Jump Recording


Layer Jump Recording (LJR) is a writing method used for DVD-R DL (Dual Layer). It permits recording the disc per increments called session (see Optical disc authoring), aka multi-session. It also permits a faster closing of the disc by saving extraneous padding when the amount of recorded data does not fill-up the disc. It overcomes these limitations of Sequential Recording (SR), the writing method usually applied to write-once optical media. The layer jump is a switch (jump) between the layer closer to the laser head (referred as L0) to the farther layer (referred as L1), or vice-versa. Jumping layers is already necessary for reading multiple layer optical media (so far market released products are limited to two layers despite some research prototypes having up to eight layers), as well as for recording them with Sequential Recording. However the layer jump during the recording occurs only once, at the position called Middle Area, during a Sequential Recording, while it may occur multiple times with Layer Jump Recording. Two different Layer Jump methods are defined: Manual Layer Jump and Regular Layer Jump. The first require the software to specify to the hardware each jump point from layer zero to layer one (the jump from layer one to layer zero occurring always at the symmetric jump point). The latter requires the software to specify to the hardware only once the jumping interval size. This technology was championed by Pioneer Corporation, optical device manufacturer among things, and introduced to the market in 2005. The physical part of the technology was first specified within DVD Forum, and then a matching device command set was introduced to the Mt Fuji specification (which eventually was replicated within the MMC specification). Later the Layer Jump Recording impacted the UDF file system specification. Unlike most recording methods, Layer Jump Recording was not unanimously adopted by optical driver manufacturer. The limited backward compatibility with legacy optical devices, complexity of device firmware implementation, need of significant software update for support and the slightly awkward writing sequencing, slowed down the adoption. In 2006, drives supporting the Layer Jump Recording methods were released by Pioneer itself, Plextor, BenQ, Lite-On, and Sony. The technology was also supported by optical drive chipsets from key manufacturer MediaTek. The technology is supported by multiple recording software, but also not unanimously supported. Nero, Sonic/Roxio, CyberLink and Ulead Systems claim support for Layer Jump Recording in their software.

External links
Mt Fuji Commands for Multimedia Devices Version 8, 5.18.1.1 Three Recording Modes for DVD-R DL disc [1] by the SFF Committee Nero - First To Support Layer-Jump Recording (LJR) of dual-layer DVD-R media [2] CyberLink Partners with MediaTek to Deliver DVD-R Dual Layer Recording [3] Ulead Taking Advantage of the Increased Capacity of Dual and Double Layer Media [4]

Layer Jump Recording

48

References
[1] [2] [3] [4] ftp:/ / ftp. avc-pioneer. com/ Mtfuji_8/ Spec/ FUJI8R100. zip http:/ / www. nero. com/ enu/ pressreleases. html?id=248 http:/ / www. cyberlink. com/ prog/ company/ press-news-content. do?pid=865 http:/ / www. ulead. com. tw/ ulead/ UDNews/ preview. cfm?ID=376& FS=us& template=PressReleases. htm

List of SCSI message codes


A SCSI Message Code is a computer term which defines how SCSI devices send interface management information. The message code comprises one or more bytes.

List of SCSI Message Codes


00 01nnyy... 010203ee COMMAND COMPLETE EXTENDED MESSAGE - nn is the length, yy is the extended message code WIDE DATA TRANSFER REQUEST where ee is the transfer width exponent

010301pprr SYNCHRONOUS DATA TRANSFER REQUEST - where pp is the period and rr is the REQ/ACK offset 010500aaaa MODIFY DATA POINTER - where aaaa is added to the current data pointer 01nn02... 02 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 20 21 22 230i 24-2F 80-FF SAVE PTRS DISCONNECT INITIATOR DETECTED ERROR ABORT MESSAGE REJECT NO OPERATION MESSAGE PARITY ERROR LINKED COMMAND COMPLETE LINKED COMMAND COMPLETE (WITH FLAG) BUS DEVICE RESET ABORT TAG CLEAR QUEUE INITIATE RECOVERY RELEASE RECOVERY TERMINATE I/O PROCESS SIMPLE QUEUE TAG HEAD OF QUEUE TAG ORDERED QUEUE TAG IGNORE WIDE RESIDUE - where i is the number of bytes to ignore Reserved for two-byte messages IDENTIFY

Logical block addressing

49

Logical block addressing


Logical block addressing (LBA) is a common scheme used for specifying the location of blocks of data stored on computer storage devices, generally secondary storage systems such as hard disks. LBA is a particularly simple linear addressing scheme; blocks are located by an integer index, with the first block being LBA 0, the second LBA 1, and so on. IDE standard included 22-bit LBA as an option, which was further extended to 28-bit with the release of ATA-1 (1994) and to 48-bit with the release of ATA-6 (2003). Most hard drives released after 1996 implement logical block addressing.

Overview
In logical block addressing, only one number is used to address data, and each linear base address describes a single block. The LBA scheme replaces earlier schemes which exposed the physical details of the storage device to the software of the operating system. Chief among these was the cylinder-head-sector (CHS) scheme, where blocks were addressed by means of a tuple which defined the cylinder, head, and sector at which they appeared on the hard disk. CHS did not map well to devices other than hard disks (such as tapes and networked storage), and was generally not used for them. CHS was used in early MFM and RLL drives, and both it and its successor Extended Cylinder-Head-Sector (ECHS) were used in the first ATA drives. However, current disk drives use zone bit recording, where the number of sectors per track depends on the track number. Even though the disk drive will report some CHS values as sectors per track (SPT) and heads per cylinder (HPC), they have little to do with the disk drive's true geometry. LBA was first introduced in SCSI as an abstraction. While the drive controller still addresses data blocks by their CHS address, this information is generally not used by the SCSI device driver, the OS, filesystem code, or any applications (such as databases) that access the "raw" disk. System calls requiring block-level I/O pass LBA definitions to the storage device driver; for simple cases (where one volume maps to one physical drive), this LBA is then passed directly to the drive controller. In RAID devices and SANs and where logical drives (LUNs) are composed via LUN virtualization and aggregation, LBA addressing of individual disk should be translated by a software layer to provide uniform LBA addressing for the entire storage device.

Enhanced BIOS
The earlier IDE standard from Western Digital introduced 22 bit LBA; in 1994, the ATA-1 standard allowed for 28 bit addresses in both LBA and CHS modes. The CHS scheme used 16 bits for cylinder, 4 bits for head and 8 bits for sector, counting sectors from 1 to 255. This means the reported number of heads never exceeds 16 (0-15), the number of sectors can be 255 (1-255; though 63 is often the largest used) and the number of cylinders can be as large as 65,536 (0-65535), limiting disk size to 128 GiB (137.4 GB), assuming 512 byte sectors. These values can be accessed by issuing the ATA command "Identify Device" (ECh) to the drive.[1] However IBM BIOS implementation defined in the INT 13H disk access routines used quite a different 24-bit scheme for CHS addressing, with 10 bits for cylinder, 8 bits for head, and 6 bits for sector, or 1024 cylinders, 256 heads, and 63 sectors.[2] This INT 13H implementation had pre-dated the ATA standard, as it was introduced when the IBM PC had only floppy disk storage, and when hard disk drives were introduced on the IBM PC/XT, INT 13H interface could not be practically redesigned due to backward compatibility issues. Overlapping ATA CHS mapping with BIOS CHS mapping produced the lowest common denominator of 10:4:6 bits, or 1024 cylinders, 16 heads, and 63 sectors, which gave the practical limit of 10241663 sectors and 528 Mbytes (504MiB), assuming 512 byte

Logical block addressing sectors. In order for BIOS to overcome this limit and successfully work with large hard drives, a CHS translation scheme had to be implemented in BIOS disk I/O routines which would convert between 24-bit CHS used by INT 13H and 28-bit CHS numbering used by ATA. The translation scheme was called Large or Bit Shift Translation. This method would remap 16:4:8 bit ATA cylinders and heads to 10:8:6 bit scheme used by INT 13H, generating much more "virtual" drive heads than the physical disk reported. This increased the practical limit to 102425663 sectors, or 8.4 Gbytes (7.8GiB). To further overcome this limit, INT 13H Extensions were introduced with BIOS Enhanced Disk Drive Services specification, which removed practical limits on disk size for operating systems which are aware of this new interface, such as DOS 7.0 component in Windows 95. This Enhanced BIOS subsystem supports LBA addressing with LBA or LBA-Assist method, which uses native 28-bit LBA for addressing ATA disks and performs CHS conversion as needed. The Normal or None method reverts to the earlier 10:4:6 bit CHS mode which does not support addressing more than 528 Mbytes. Until the release of ATA-2 standard in 1996, there were a handful of large hard drives which did not support LBA addressing, so only Large or Normal methods could be used. However using the Large method also introduced portability problems, as different BIOSes often used different and incompatible translation methods, and hard drives partitioned on a computer with BIOS from a particular vendor often could not be read on a computer with a different make of BIOS. The solution was to use conversion software such as OnTrack Disk Manager, EZ-Drive, etc., which installed to the disk's OS loader and replaced INT 13H routines at boot time with custom code. This software could also enable LBA and INT 13H Extensions support for older computers with non LBA-compliant BIOSes. The current 48-bit LBA scheme, introduced in 2003 with ATA-6 standard, allows addressing up to 128 PiB. Current PC-Compatible computers support INT 13H Extensions, which use 64-bit structures for LBA addressing and should encompass any future extension of LBA addressing, though modern operating systems implement direct disk access and do not use the BIOS subsystems, except at boot load time. However, the common DOS style Master boot record partition table only supports disk partitions up to 2 TiB in size. For large partitions this needs to be replaced by another scheme for instance the GUID Partition Table which has the same 64-bit limit as the current INT 13H Extensions.

50

CHS conversion
LBA and CHS equivalence with 16 heads per cylinder
LBA Value 0 1 2 62 945 1007 1008 1070 1071 1133 CHS Tuple 0, 0, 1 0, 0, 2 0, 0, 3 0, 0, 63 0, 15, 1 0, 15, 63 1, 0, 1 1, 0, 63 1, 1, 1 1, 1, 63

Logical block addressing

51
1134 2015 2016 16,127 16,128 32,255 32,256 1, 2, 1 1, 15, 63 2, 0, 1 15, 15, 63 16, 0, 1 31, 15, 63 32, 0, 1

16,450,559 16319, 15, 63 16,514,063 16382, 15, 63

CHS (cylinder/head/sector) tuples can be mapped to LBA address with the following formula:

where, C, H and S are the cylinder number, the head number, and the sector number LBA is the logical block address HPC is the maximum number of heads per cylinder (reported by disk drive, typically 16 for 28-bit LBA) SPT is the maximum number of sectors per track (reported by disk drive, typically 63 for 28-bit LBA)

LBA addresses can be mapped to CHS tuples with the following formula:

where mod is the modulo operation, i.e. the remainder, and is integer division, i.e. the quotient of the division. According to the ATA specifications, "If the content of words (61:60) is greater than or equal to 16,514,064 then the content of word 1 [the number of logical cylinders] shall be equal to 16,383."[1] Therefore for LBA 16450559, an ATA drive may actually respond with the CHS tuple (16319, 15, 63), and the number of cylinders in this scheme must be much larger than 1024 allowed by INT 13H.[3]

OS dependencies
Operating systems that are sensitive to BIOS-reported drive geometry include Solaris, DOS and Windows NT family, where NTLDR (NT, 2000, XP, Server 2003) or WINLOAD (Vista, Server 2008, Windows 7 and Server 2008 R2) use Master boot record which addresses the disk using CHS; x86-64 and Itanium versions of Windows can partition the drive with GUID Partition Table which uses LBA addressing. Some operating systems do not require any translation because they do not use geometry reported by BIOS in their boot loaders. Among these operating systems are BSD, Linux, Mac OS X, OS/2 and ReactOS.

Logical block addressing

52

References
[1] Working Draft of ATA/ATAPI-5 (http:/ / www. t10. org/ t13/ project/ d1321r3-ATA-ATAPI-5. pdf) Sections 6.2.1 and 8.12 of the T13 Technical Committee's, 29 February 2000. [2] KB224526: Windows NT 4.0 supports maximum of 7.8-GB system partition (http:/ / support. microsoft. com/ kb/ q224526/ en-us) [3] Though CHS addressing definitely uses the mathematical concept of tuple, it may also be considered an example of the general scheme called mixed radix by viewing its cylinders, heads and sectors as having different numerical bases; e.g., cylinders counting from 0 to 1023, heads from 0 to 254 and sectors from 1 to 63.

External links
LBAs explained (http://www.dewassoc.com/kbase/hard_drives/lba.htm) LBA and CHS format, LBA mapping (http://www.boot-us.com/gloss11.htm) CHS to LBA Translation Tutorial (http://www.viralpatel.net/taj/tutorial/chs_translation.php) CHS/LBA conversion utility (http://homepage2.nifty.com/cars/misc/chs2lba.html) Microsoft article on 7.8GB limit on NT 4.0 (http://support.microsoft.com/kb/q224526/) Hard Drive Size Limitations and Barriers (http://www.dewassoc.com/kbase/hard_drives/ drive_size_barrier_limitations_2.htm)

Upgrading and Repairing PC's (http://books.google.com/books?id=E1p2FDL7P5QC&pg=RA1-PA527& lpg=RA1-PA527&dq=bit+shifting+lba&source=bl&ots=M1poB75_cv& sig=3q6B9DsqOj08xkvE0iE6iiake44&hl=en&ei=HuABS5u6DpPNngefzYwR&sa=X&oi=book_result& ct=result&resnum=10&ved=0CEAQ6AEwCQ#v=onepage&q=bit shifting lba&f=false), by Scott Mueller. Pages 524-531. Source for 48-bit LBA Information (http://www.48bitlba.com/)

Logical Unit Number


In computer storage, a logical unit number or LUN is a number used to identify a logical unit, which is a device addressed by the SCSI protocol or similar protocols such as Fibre Channel or iSCSI. A LUN may be used with any device which supports read/write operations, such as a tape drive, but is most often used to refer to a logical disk as created on a SAN. Though not technically correct, the term "LUN" is often also used to refer to the drive itself.[1]

Examples
To provide a practical example, a typical disk array has multiple physical SCSI ports, each with one SCSI target address assigned. An administrator may format the disk array as a RAID and then partition this RAID into several separate storage-volumes. To represent each volume, a SCSI target is configured to provide a logical unit. Each SCSI target may provide multiple logical units and thus represent multiple volumes, but this does not mean that those volumes are concatenated. The computer that accesses a volume on the disk array identifies which volume to read or write with the LUN of the associated logical unit. In another example: a single disk-drive has one physical SCSI port. It usually provides just a single target, which in turn usually provides just a single logical unit whose LUN is zero. This logical unit represents the entire storage of the disk drive.

Logical Unit Number

53

Use
How to select a LUN: In the early versions of SCSI, an initiator delivers a Command Data Block (CDB) to a target (physical unit) and within the CDB is a 3-bit LUN field to identify the logical unit within the target. In current SCSI, the initiator delivers the CDB to a particular logical unit, so the LUN appears in the transport layer data structures and not in the CDB. LUN vs. SCSI Device ID: The LUN is not the only way to identify a logical unit. There is also the SCSI Device ID, which identifies a logical unit uniquely in the world. Labels or serial numbers stored in a logical unit's storage volume often serve to identify the logical unit. However, the LUN is the only way for an initiator to address a command to a particular logical unit, so initiators often create, via a discovery process, a mapping table of LUN to other identifiers. Context sensitive: The LUN identifies a logical unit only within the context of a particular initiator. So two computers that access the same disk volume may know it by different LUNs. LUN 0: There is one LUN which is required to exist in every target: zero. The logical unit with LUN zero is special in that it must implement a few specific commands, most notably Report LUNs, which is how an initiator can find out all the other LUNs in the target. But LUN zero need not provide any other services, such as a storage volume. Many SCSI targets contain only one logical unit (so its LUN is necessarily zero). Others have a small number of logical units that correspond to separate physical devices and have fixed LUNs. A large storage system may have up to thousands of logical units, defined logically, by administrative command, and the administrator may choose the LUN or the system may choose it.

cXtXdXsX nomenclature in Unix


From the computer perspective, SCSI LUN is only a part of the full SCSI address. The full device's address is made from the: c-part: controller ID of the host bus adapter, t-part: target ID identifying the SCSI target on that bus, d-part: disk ID identifying a LUN on that target, s-part: slice ID identifying a specific slice on that disk.

In the Unix family of operating systems, these IDs are often combined into a single "name". For example, /dev/dsk/c1t2d3s4 would refer to controller 1, target 2, disk 3, slice 4. Presently Solaris, HP-UX, NCR, and others continue to use "cXtXdXsX" nomenclature, while AIX has abandoned it in favor of more familiar names.

Other uses
The term logical unit number also applies to an input/output access channel within certain programming languages.

Fortran I/O
For example, in FORTRAN, some input/output statements such as the READ or WRITE statements contain an ordered pair of numbers which identifies the LUN of the file or other data source or destination, and (usually) also, the FORMAT of the data to be read or written, as in this example: WRITE (5,32) where 5 is the LUN of the target file or device, and 32 is the label of the FORMAT statement for the write.

Logical Unit Number

54

References
[1] James Long, Storage networking protocol fundamentals (http:/ / books. google. co. uk/ books?id=zEFrqPrcZI8C& pg=PA111),

Mount Rainier (packet writing)


Mount Rainier (MRW) is a format for writable optical discs which provides the packet writing and defect management. Its goal is the replacement of the floppy disk. It is named after Mount Rainier, a volcano near Seattle, Washington, USA. Mount Rainier can be used only with drives that explicitly support it (a part of SCSI/MMC and can work over ATAPI), but works with standard CD-R, CD-RW, DVD+/-R and DVD+/-RW media. The physical format of MRW disks is a layer placed in between the file system (e.g. UDF or FAT32) imposed by the operating system or the packet writing software used to write or read the disk and the physical layer which determines how data is written to or extracted from the optical disc. This is transparently managed internally by drive's firmware which remaps physical drive blocks into a virtual and defect-free space. Therefore the host computer does not see the physical format of the disk, only a sequence of data blocks capable of holding any filesystem.

Design
The time needed for the disk formatting is shortened to about one minute by the background formatting capabilities of the drive. Formatting allocates some sectors at the end of the disk for defect management. Defective sectors are recorded at a table in the lead-in (an administrative area) and in a copy of the table in the lead-out. From the host computer's perspective, an MRW disc provides a defect-free block-accessible device, upon which any host supported filesystem may be written. Such filesystems may be FAT32, NTFS, etc., but the preferred format is usually UDF 1.02, as this file format is widely supported. An MRW-formatted CD-RW with a UDF filesystem gives approximately 500 MB free space. Mt. Rainier allows write access to a disc within seconds after insertion and spin-up, even while a background formatting sequence is taking place. Before this technology, a user would have to wait for the formatting to complete before writing any data to a new disc. It is even possible to read (but not write) MRW disks without an MRW-compatible drive; A "remapper" device driver is needed, an example of which is EasyWrite Reader for Windows. An alternative to MRW is to physically format a disc in UDF 1.5 or higher using the spared build. This is achieved by the use of specialized packet writing software, or operating systems that support UDF versions 1.5 and above. MRW capabilities overlap somewhat with that of UDF 1.5+.

Advantages and disadvantages


Advantages of MRW over UDF 1.5+ include: fast background formatting of the media finer grained packet size of 2K versus 64K file system independence does not depend on the host system to perform defect management

Advantage of UDF 1.5+ over MRW include: more portable, as UDF 1.5+ alone does not need specialized drive hardware to write, and the computer needs neither an MRW driver for a MRW-capable optical drive nor an MRW reader for drives that are incapable of

Mount Rainier (packet writing) reading MRW natively, reducing software overhead.

55

Operating system support


Mount Rainier is implemented natively in Windows Vista and Windows 7.[1] Linux has built-in MRW support since kernel version 2.6.2 (2004). Amiga OS4 supports this natively since the first beta appeared in 2004. Support for reading this format was also added to Mac OS X. Operating systems that don't support MRW natively (notably Windows XP and prior versions) need third-party software to read and write MRW-formatted discs, and these tend to be the same packet writing utilities which allow native UDF filesystems to be written to optical media. Some optical disk software, such as IsoBuster, can support Mount Rainier on non-MR drives.[2] The EasyWrite logo is the marketing symbol created by Philips for CD drives that are Mount Rainier compatible. CD-MRW stands for Compact Disc Mount Rainier Read/Write.

External links
Mount Rainier Support in Linux [3]

References
[1] Upgrading and Repairing PCs - Scott Mueller (http:/ / books. google. co. uk/ books?id=Ml1UGe9IuLkC& pg=PT841& lpg=PT841& dq="windows+ 7"+ cd-mrw& source=bl& ots=FeG74BbKxj& sig=9kDDF3CyANc-tTaGAkRBFUAjWd0& hl=en& ei=sQDpTqWMPMrBhAez0eykDw& sa=X& oi=book_result& ct=result& redir_esc=y#v=onepage& q=cd-mrw& f=false) Alternate link (http:/ / www. quepublishing. com/ articles/ article. aspx?p=1746162& seqNum=6) [2] IsoBuster featurews page (http:/ / www. isobuster. com/ isobuster. php) - "Support for Mount Rainier CD-RW and DVD+RW discs in MRW compatible and non-MRW compatible drives. Auto detection and automatic remapping which can be switched off or forced at all times. Built in MRW remapper / reader. (Built in Method 3 remapper)" [3] http:/ / www. thehaus. net/ AltOS/ Linux/ ht-mtrainier. shtml

MultiMedia Commands

56

MultiMedia Commands
MultiMedia Commands defines a SCSI/ATAPI based command set for accessing multimedia features on devices capable of such functionality. T10 subcommittee is responsible for developing it as well as other SCSI command set standards.

External links
MMC-6 [1] sixth generation CD, DVD, HD DVD and Blu-ray Discs command set. MMC-5 [2] fifth generation CD, DVD, HD DVD and Blu-ray Discs command set. MMC-4 [3] fourth generation CD and DVD command set. MMC-3 [4] third generation CD and DVD command set. MMC-2 [5] second generation CD and DVD command set. MMC [6] first generation CD-ROM command set.

References
[1] http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc6r00. pdf [2] [3] [4] [5] [6] http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc5r04. pdf http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc4r05a. pdf http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc3r10g. pdf http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc2r11a. pdf http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=mmc-r10a. pdf

NCR 5380
The NCR 5380 is an early SCSI controller chip developed by NCR Microelectronics. It was popular due to its simplicity and low cost. The 5380 was used in the Macintosh Plus and in numerous SCSI cards for personal computers, including the Amiga and Atari TT. The 5380 was second sourced by several chip makers, including AMD and Zilog. The NCR 5380 also made a significant appearance in Digital Equipment Corporation's VAX computers, where it was featured on various Q-Bus modules and as an integrated SCSI controller in numerous MicroVAX, VAXstation and VAXserver computers.

NCR 53C9x

57

NCR 53C9x
The NCR 53C9x is a family of application-specific integrated circuits (ASIC) produced by the former NCR Corporation for implementing the SCSI protocol in hardware. The 53C9x is a low-cost solution and was therefore widely adopted by OEMs in various motherboard and peripheral device designs. The original 53C90 lacked direct memory access (DMA) capability, an omission that was addressed in the 53C90A and later in the 53C94 and 53C96 versions. The 53C90(A) supported the SCSI-1 protocol and implemented the eight bit bus. The 53C94 supported SCSI-2 features, as well as SCSI-1, and the 53c96 added support for the high voltage differential (HVD) bus. QLogic FAS216 and Emulex ESP100 chips are a drop-in replacement for the NCR 53C94. The 53C90A and 53C94/96 were also produced under license by Advanced Micro Devices (AMD). A list of systems which include the 53C9x chipset includes: 53C94 Sun Microsystems SPARCstations and the SPARCclassic DEC 3000 AXP DECstations and the PMAZ-A TURBOchannel card MIPS Magnum Power Macintosh G3 (often used as a secondary SCSI controller with MESH (Macintosh Enhanced SCSI Hardware) as the primary) 53C96 Macintosh Quadra 650 Macintosh LC475

Parallel SCSI

58

Parallel SCSI
Parallel SCSI (formally, SCSI Parallel Interface, or SPI) is one of the interface implementations in the SCSI family. In addition to being a data bus, SPI is a parallel electrical bus: There is one set of electrical connections stretching from one end of the SCSI bus to the other. A SCSI device attaches to the bus but does not interrupt it. Both ends of the bus must be terminated.

History
The first two formal SCSI standards, SCSI-1 and SCSI-2, Centronics 50 SCSI plug included parallel SCSI as a central part of the protocol. The SCSI-3 standard then split the framework into separate layers so parallel SCSI is now just one of a number of available implementations. See the main SCSI article for a complete list. As with all types of SCSI bus, parallel SCSI communication takes place between an initiator and a target. The original SCSI-1 version of the parallel bus was 8 bits wide (plus a ninth parity bit). The SCSI-2 standard allowed for faster operation (10MHz) and wider buses (16-bit or 32-bit). The 16-bit option became the most popular, as the 32-bit option was more expensive and was thus hardly ever used. At 10MHz with a bus width of 16 bits it is possible to achieve a data rate of 20 MB/s. Subsequent extensions to the SCSI standard allowed for faster speeds: 20MHz, 40MHz, 80MHz, 160MHz and most recently 320MHz. At 320MHz x 16 bits there is a theoretical maximum peak data rate of 640 MB/s.

Standards
Parallel SCSI is not a single standard, but a suite of closely related standards which, unfortunately, have confusing names. There are a dozen SCSI interface names, most with ambiguous wording (like Fast SCSI, Fast Wide SCSI, Ultra SCSI, and Ultra Wide SCSI); three SCSI standards, each of which has a collection of modular, optional features; several different connector types; and three different types of voltage signalling. The leading SCSI card manufacturer, Adaptec, has manufactured over 100 varieties of SCSI cards over the years. In actual practice, many experienced technicians simply refer to SCSI devices by their bus bandwidth (i.e. SCSI 320 or SCSI 160) in Megabytes per second. SCSI has evolved since its introduction. Before summarizing the evolution, a distinction should be made between the terminology used in the SCSI standard itself, as promulgated by the T10 committee of INCITS, and common parlance, as codified by the SCSI trade association, SCSITA. As of 2003, there have only been three SCSI standards: SCSI-1, SCSI-2, and SCSI-3. All SCSI standards have been modular, defining various capabilities which manufacturers can include or not. Individual vendors and SCSITA [1] have given names to specific combinations of capabilities. For example, the term "Ultra SCSI" is not defined anywhere in the standard, but is used to refer to SCSI implementations that signal at twice the rate of "Fast SCSI." Such a signalling rate is not compliant with SCSI-2 but is one option allowed by SCSI-3. Similarly, no version of the standard requires low-voltage-differential (LVD) signalling, but products called Ultra-2 SCSI include this capability. This terminology is helpful to consumers, because "Ultra-2 SCSI" device has a better-defined set of capabilities than simply identifying it as "SCSI-3." Starting with SCSI-3, the SCSI standard has been maintained as a loose collection of standards, each defining a certain piece of the SCSI architecture, and bound together by the SCSI Architectural Model. This change divorces

Parallel SCSI SCSI's various interfaces from the command set, allowing devices that support SCSI commands to use any interface (including ones not otherwise specified by T10), and also allowing the interfaces that are defined by T10 to develop on their own terms. This change is also why there is no "SCSI-4". No version of the standard has ever specified what kind of connector should be used. See "Connectors," below.

59

SCSI-1
The original standard that was derived from SASI and formally adopted in 1986 by ANSI. SCSI-1 features an 8-bit parallel bus (with parity), running asynchronously at 3.5 MB/s or 5 MB/s in synchronous mode, and a maximum bus cable length of 6 meters (just under 20 feetcompared to the 18inch (0.45 meter) limit of the ATA interface). A rarely seen variation on the original standard included a high-voltage differential (HVD) implementation whose maximum cable length was 25 meters.

SCSI-2
This standard was introduced in 1994 and gave rise to the Fast SCSI and Wide SCSI variants. Fast SCSI doubled the maximum transfer rate to 10 MB/s and Wide SCSI doubled the bus width to 16 bits on top of that to reach a maximum transfer rate of 20 MB/s. However, these improvements came at the cost of reducing maximum cable length to 3 meters. SCSI-2 also specified a 32-bit version of Wide SCSI, which used 2 16-bit cables per bus; this was largely ignored by SCSI device makers because it was expensive and unnecessary, and was officially retired in SCSI-3.

SCSI-3
Before Adaptec and later SCSITA codified the terminology, the first parallel SCSI devices that exceeded the SCSI-2 capabilities were simply designated SCSI-3. These devices, also known as Ultra SCSI and fast-20 SCSI, were introduced in 1996. The bus speed doubled again to 20 MB/s for narrow (8 bit) systems and 40 MB/s for wide (16-bit). The maximum cable length stayed at 3 meters but single-ended Ultra SCSI developed an undeserved reputation for extreme sensitivity to cable length and condition (faulty cables, connectors or terminators were often to blame for instability problems). Unlike other SCSI standards, SCSI-3 requires active termination.

Ultra-2
This standard was introduced c. 1997 and featured a low-voltage differential (LVD) bus. For this reason ultra-2 is sometimes referred to as LVD SCSI. LVD's greater resistance to noise allowed a maximum bus cable length of 12 meters. At the same time, the data transfer rate was increased to 80 MB/s. Ultra-2 SCSI actually had a relatively short lifespan, as it was soon superseded by Ultra-3 (Ultra-160) SCSI.

Ultra-3
Also known as Ultra-160 SCSI and introduced toward the end of 1999, this version was basically an improvement on the ultra-2 standard, in that the transfer rate was doubled once more to 160 MB/s by the use of double transition clocking. Ultra-160 SCSI offered new features like cyclic redundancy check (CRC), an error correcting process, and domain validation.

Parallel SCSI

60

Ultra-320
This is the Ultra-160 standard with the data transfer rate doubled to 320 MB/s. The latest working draft for this standard is revision 10 and is dated May 6, 2002. Nearly all SCSI hard drives being manufactured at the end of 2003 were Ultra-320 devices.

Ultra-640
Ultra-640 (otherwise known as Fast-320) was promulgated as a standard (INCITS 367-2003 or SPI-5) in early 2003. Ultra-640 doubles the interface speed yet again, this time to 640 MB/s. Ultra-640 pushes the limits of LVD signaling; the speed limits cable lengths drastically, making it impractical for more than one or two devices. Because of this, most manufacturers have skipped over Ultra640 and are developing for Serial Attached SCSI instead.

SCSI signals
In addition to the data bus and parity signals, a parallel SCSI bus contains nine control signals[2]:
Signal name BSY Busy SEL Select RST Reset C/D Control/Data I/O Input/Output Bus in use (bus free) Asserted by the winner of an arbitration, during selection by an initiator or reselection by a target Initiator forces all targets and any other initiators to do a warm reset * Bus contains control information (bus contains data) * Transfer is from target to initiator (transfer is from initiator to target). Also asserted by a target after winning arbitration to indicate reselection of an initiator. * Bus contains a message (bus contains data or command/status) Target requests initiator to transfer the next unit of information on the bus, as indicated by the 3 phase signals (no request) Initiator acknowledges target request, completing the information transfer handshake (no handshake) Meaning when asserted (deasserted)

MSG Message REQ Request ACK Acknowledge ATN Attention

Asserted by an initiator after winning arbitration to select a target.

Notes: * One of 3 signals which are driven by a target during information transfer to indicate the Bus Phase There are also three DC levels:
Signal name Usage

TERMPOWER See the Termination section for details DIFFSNS GROUND Grounded in single-ended buses, otherwise floats to a positive voltage Most spare pins in the connector are designated as grounds

There are three electrically different variants of the SCSI parallel bus: single-ended (SE), high-voltage differential (HVD), and low-voltage differential (LVD). The HVD and LVD versions use differential signaling and so they require a pair of wires for each signal. So the number of signals required to implement a SCSI bus is a function of the bus width and voltage:

Parallel SCSI

61

Bus Width 8-bit 8-bit 16-bit 16-bit

Voltage SE

Data Parity Control TERMPOWER DIFFSNS GROUND Reserved Total 8 1 2 2 4 9 18 9 18 1 1 4 4 1 1 1 1 30 12 34 7 0 0 2 2 50 50 68 68

LVD/HVD 16 SE 16

LVD/HVD 32

SCSI IDs
All devices on a parallel SCSI bus must have a SCSI ID, which may be set by jumpers on older devices or in software. The SCSI ID field widths are:
Bus-width ID width IDs available 8-bit 16-bit 3-bit 4-bit 8 16

Parallel SCSI bus operation


The parallel SCSI bus goes through eight possible phases as a command is processed. Not all phases will occur in all cases:
Phase Bus-free Comments This is the state in which no device communication is in process.

Arbitration One or more devices attempt to obtain exclusive control of the bus by asserting /BSY and a single bit corresponding to the device SCSI ID. For example, a device with a SCSI ID of 2 would generate the inverted bit pattern 11111011 on the bus. Selection The arbitrating device with the highest ID takes control of the bus by asserting /BSY and /SEL. "Highest" on an eight bit bus starts from 7 and works downward to zero. On a 16 bit bus, the eight bit rule applies, followed by 15 and working downward to 8, thus maintaining backward compatibility on a bus with a mix of eight and 16 bit devices. The controlling device is now the "initiator." The initiator sends the command descriptor block (CDB) to a "target," which is another device on the bus. The CDB tells the target what to do.

Command

Reselection During a transaction, the target device may be required to execute an operation (e.g., winding or rewinding the tape in a tape drive) that is slow in wall clock time terms relative to the speed of the bus. In such a case, the target may temporarily disconnect from the bus, causing the latter to go to the bus-free condition and allowing other unrelated operations to take place. Reselection is the phase where the target reconnects to the initiator to resume the previously suspended transaction. Data In this phase, data is transferred between initiator and target, the direction of transfer depending on the command that was issued. For example, a command to read a sector from a disk would result in a transfer from the disk to the host. Or, if an error occurred, the initiator could send a "request sense" command to the target for details, the latter which would be returned during the data phase. A message code is exchanged between initiator and target for the purposes of interface management. A status code is sent to the initiator to report the success or failure of the operation.

Message Status

The above list does not imply a specific sequence of events. Following a command to a target to send data to the initiator and a receipt of a command complete status, the initiator could send another command or even send a message.

Parallel SCSI

62

External connectors
No version of the standard has ever specified what kind of connector should be used. Specific types of connectors for parallel SCSI devices were developed by vendors over time. Connectors for serial SCSI devices have diversified into different families for each type of serial SCSI protocol. See the SCSI connector article for a more detailed description. Although parallel SCSI-1 devices typically used bulky Blue Ribbon Centronics connectors, and SCSI-2 devices typically used Mini-D connectors, it is not correct to refer to these as "SCSI-1" and "SCSI-2" connectors. One valid rule is that connectors for wide SCSI buses have more pins and wires than those for narrow SCSI buses. A Centronics-50 or HD-50 connector is for narrow SCSI, while a Centronics-68 or HD-68 connector is for wide SCSI. On some early devices, wide parallel SCSI buses used two or four connectors and cables while narrow SCSI buses used only one. The first parallel SCSI connectors were the Centronics type. They then evolved through two main stages, High-Density (HD) and most recently SCA - 80 pin. With the HD connectors, a cable normally has male connectors while a SCSI device (e.g. host adapter, disk drive) has female. A female connector on a cable is meant to connect to another cable (for additional length or additional device connections).

Termination
Parallel SCSI buses must always be terminated at both ends to ensure reliable operation. Without termination, data transitions would reflect back from the ends of the bus causing pulse distortion and potential data loss. A positive DC termination voltage is provided by one or more devices on the bus, typically the initiator(s). This positive voltage is called TERMPOWER and is usually around +4.3 volts. TERMPOWER is SCSI Terminator (Centronics connector) normally generated by a diode connection to +5.0 volts. This is called a diode-OR circuit, designed to prevent backflow of current to the supplying device. A device that supplies TERMPOWER must be able to provide up to 900 mA (single-ended SCSI) or 600 mA (differential SCSI). Some early disk drives included internal terminators, but most modern disk-drives do not provide termination which is then deemed to be external. Termination can be passive or active. Passive termination means that each signal line is terminated by two resistors, 220 to TERMPOWER and 330 to ground. Active termination means that there is a small voltage regulator which provides a +3.3 V supply. Each signal line is then terminated by a 110 resistor to the +3.3 V supply. Active termination provides a better impedance match than passive termination because most flat ribbon cables have a characteristic impedance of approximately 110 . Forced perfect termination (FPT) is similar to active termination, but with added diode clamp circuits which absorb any residual voltage overshoot or undershoot. There is a special case in SCSI systems that have mixed 8-bit and 16-bit devices where high-byte termination may be required. In current practice most parallel SCSI buses are LVD and so require external, active termination. The usual termination circuit consists of a +3.3 V linear regulator and commercially available SCSI resistor network devices (not individual resistors).

Parallel SCSI

63

Compatibility
For purposes of discussing compatibility, remember that SCSI devices include both host adapters and peripherals such as disk drives. When you ask whether you can cable a certain host adapter to a certain disk drive, you are asking whether you can attach those two SCSI devices to the same SCSI bus. Different SCSI transports, which are not compatible with each other, usually have unique connectors to avoid accidental mis-plugging of incompatible devices. For example it is not possible to plug a parallel SCSI disk into an FC-AL backplane, nor to connect a cable between an SSA initiator and an FC-AL enclosure. SCSI devices in the same SCSI transport family are generally backward-compatible. Within the parallel SCSI family, for example, it is possible to connect an Ultra-3 SCSI hard disk to an Ultra-2 SCSI controller albeit with reduced speed and feature set. However there are some compatibility issues with parallel SCSI buses. Ultra-2, Ultra-160 and Ultra-320 devices may be freely mixed on the parallel LVD bus with no compromise in performance, as the host adapter will negotiate the operating speed and bus management requirements for each device. Single-ended and LVDS devices can be attached to the same bus, but all devices will run at the slower single-ended speed. The SPI-5 standard (which describes Ultra-640) deprecates single-ended devices, so future devices may not be electrically backward compatible. Both narrow and wide SCSI devices can be attached to the same parallel bus. All the narrow SCSI devices must be placed at one end and all the wide SCSI devices at the other end. The high half of the bus needs to be terminated in between because the high half of the bus ends with the last wide SCSI device. You can get a cable designed to connect the wide part of the bus to the narrow part which either provides a place to plug in a terminator for the high half or includes the terminator itself. This is sometimes referred to as a cable with high-9 termination. Specific commands allow the devices to determine whether their partners are using the whole wide bus or just the lower half and drive the bus accordingly. As an example of a mixed bus, consider a SCSI wide host adapter with an HD-68 male connector connected to a SCSI narrow disk drive with an HD-50 female connector. You might make this connection with a cable that has an HD-68 female connector on one end and an HD-50 male connector on the other. Inside the cable's HD-68 connector, there is termination for the high half of the bus and the cable contains wires for only the low half. The host adapter determines that the disk drive uses only the low half of the bus, so talks to it using only the lower half. The converse examplea SCSI narrow host adapter and SCSI wide disk drive also works. Modern Single Connector Attachment (SCA) parallel SCSI devices may be connected to older controller/drive chains by using SCA adapters. Although these adapters often have auxiliary power connectors, caution is recommended when connecting them, as it is possible to damage devices by connecting external power. Each parallel SCSI device (including the computer's host adapter) must be configured to have a unique SCSI ID on the bus. Another requirement is that any parallel SCSI bus must be terminated at both ends with the correct type of terminator. Both active and passive terminators are in common use, with the active type much preferred (and required on LVD buses). Improper termination is a common problem with parallel SCSI installations. In early SCSI buses, one had to attach a physical terminator to each end, but modern SCSI devices often have terminators built in, and the user simply needs to enable termination for the devices at either end of the bus (typically by setting a DIP switch or moving a jumper). Some modern SCSI host adapters allow the enabling or disabling of termination through BIOS setup. Advanced SCSI devices automatically detect whether they are last on the bus and switch termination on or off accordingly.

Parallel SCSI

64

References
[1] http:/ / www. scsita. org/ [2] M3096GX/M3093GX/M3093DG Image scanner OEM Manual (http:/ / www. fel. fujitsu. com/ support/ scanner/ manuals/ M3096gx-93gx-93dg. ome. en. pdf)

External links
T10 Technical Committee - SCSI Storage Interfaces (http://www.t10.org/) (SCSI standards) Termination Tutorial (http://web.archive.org/web/20110610024317/http://www.scsita.org/aboutscsi/ termTutorial.html) (WayBack link)

Persistent binding
Host-based zoning can include WWN or LUN masking, and is typically known as persistent binding. In storage networking, persistent binding is an option of zoning. Host-based zoning is usually referred to as persistent binding or LUN,[1] and is perhaps the least implemented form of zoning. Because it requires the host configuration to be correct in order to avoid zoning conflicts, this form of zoning creates a greater opportunity for administrative errors and conflicting access to targets. Moreover zoning interfaces vary among different host operating systems and HBA's increasing the possibility for administrative errors. If a host is not configured with the zoning software, it can access all devices in the fabric and create an even higher probability of data corruption. Host-based zoning is often used when clusters are implemented to control the mapping of devices to specific[2] target IDs. However, it should never be the only form of zoning. Augmenting host-based zoning with storage- and fabric-based zoning is the only acceptable method to reliably control device access and data security. Basically, A given LUN has it SCSI id assigned by its RAID device (typically a SAN ). But for some purposes it's useful to have the SCSI id assigned by the host itself: that's persistent binding.

What is Persistent binding for ?


Without persistent binding, after every reboot, the SCSI id of a LUN may change. For Example, under Linux, a LUN bound on /dev/sda could migrate to /dev/sdb after a reboot. The risks augments with multipathing. Based on that, it is obvious that many software may crash without persistent binding. from http://www.storagesearch.com/datalink-art1.html Operating systems and upper-level applications (such as backup software) typically require a static or predictable SCSI target ID for their storage reliability and persistent binding affords that happening.

Persistent binding

65

Types of zoning
A zone can include host and LUNS. The LUNS are exported by the DISK ARRAY, the hosts are the clients (servers, computers). Each host in a zone can access each LUNS in the same zone. That's zoning. The zone is usually set on the central point of connection of the hosts and the DISK ARRAY: the FC switch.

LUN masking
from Fibre Channel zoning Zoning is sometimes confused with LUN masking, because it serves the same goals. LUN masking, however, works on Fibre channel level 4 (i.e. on SCSI level), while zoning works on level 2. This allows zoning to be implemented on switches, whereas LUN masking is performed on endpoint devices - host adapters or disk array controllers. Some fibre channel switches allow zoning at the LUN level, effectively implementing LUN masking at the switch. Here, we are talking about level 4. This form of zoning has to be augmented by another zoning : RAID ARRAY based or fabric-based(FC switch) to improve security and avoid any errors. Otherwise two hosts may access the same data(LUNS) at the same time and it will result in data corruption. Persistent binding is often used in a cluster environnement, to associate a LUN with a persistent SCSI id and device (example /dev/sda)

References
[1] mapping [2] SCSI

External links
http://www.storagesearch.com/datalink-art1.html http://www.enterprisestorageforum.com/sans/features/print.php/11188_1431341_2

SAF-TE

66

SAF-TE
In computer storage, a SCSI Accessed Fault-Tolerant Enclosure is an industry standard to interface an enclosure to a (parallel) SCSI subystem to gain access to information or control concerning temperature fan status slot status (populated/empty) door status power supplies alarms indicators (e.g. LEDs, LCDs)

Practically, any given SAF-TE device will only support a subset of all possible sensors or controls. Many RAID controllers can utilize a SAF-TE 'activated' backplane by detecting a swapped drive (after a defect) and automatically starting a rebuild. A passive subsystem usually requires a manual rescan and rebuild. A SAF-TE device is represented as a SCSI processor device that is polled every couple of seconds by e.g. the RAID controller software. Due to the low overhead required, impact on bus performance is negligible. For SAS or Fibre Channel systems, SAF-TE is replaced by the more standardized SCSI Enclosure Services. The most widely used version was defined in 'SAF-TE Interface Specification Intermediate Review R041497 April 14, 1997' by nStor (now Xyratex) and Intel.

External links / References


www.safte.org [1] SAF-TE as part of Intel's [[IPMI [2]]] SAF-TE Intermediate Review R041497 (www.intel.com) [3]

References
[1] http:/ / www. safte. org [2] http:/ / www. intel. com/ design/ servers/ ipmi/ saf-te. htm [3] http:/ / www. intel. com/ design/ servers/ ipmi/ pdf/ SR041497. pdf

SCSI / ATA Translation

67

SCSI / ATA Translation


SCSI / ATA Translation (SAT) is a standard 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. The standard allows for translation of common SCSI Block Commands such as: SCSI Read Commands SCSI Write Commands The standard also provides the ability to control exactly what ATA operations are executed on a target device by defining two new SCSI operation codes: ATA PASS THROUGH (12) ATA PASS THROUGH (16) The standard also defines a new data structure returned in the sense data known as the ATA Return Descriptor which contains the ATA taskfile registers.

SCSI command
In SCSI computer storage or control, a command is the basic unit of communication. The SCSI command architecture was originally defined for parallel SCSI buses but has been carried forward with minimal change for use with Fibre Channel, iSCSI and Serial Attached SCSI. In SCSI protocol, the initiator sends a SCSI command to the target which then responds. SCSI commands are sent in a command descriptor block (CDB), which consists of a one byte operation code (opcode) followed by five or more bytes containing command-specific parameters. Upon receiving and processing the CDB the target will return a status code byte. The rest of this article contains a list of SCSI commands, sortable in opcode or description alphabetical order. In the published SCSI standards, commands are designated as "mandatory," "optional" or "vendor-unique." Only the mandatory commands are required of all devices. There are links to detailed descriptions for the more common SCSI commands. Some opcodes produce different, though usually comparable, effects in different device types; for example, opcode 0x01 recalibrates a disk drive by seeking back to physical sector zero, but rewinds the medium in a tape drive.

List of SCSI commands


Code 00 01 03 04 05 07 07 08 Command TEST UNIT READY (mandatory) RECALIBRATE or REWIND REQUEST SENSE (mandatory except RBC) FORMAT UNIT READ BLOCK LIMITS REASSIGN BLOCKS INITIALIZE ELEMENT STATUS READ (6)

SCSI command

68
0A 0B 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1B 1C 1D 1E 23 24 25 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 37 WRITE (6) SEEK (6) READ REVERSE (6) WRITE FILEMARKS (6) SPACE (6) INQUIRY (mandatory) VERIFY(6) RECOVER BUFFERED DATA MODE SELECT (6) RESERVE (6) RELEASE (6) COPY ERASE (6) MODE SENSE (6) START/STOP UNIT LOAD UNLOAD RECEIVE DIAGNOSTIC RESULTS SEND DIAGNOSTIC PREVENT/ALLOW MEDIUM REMOVAL READ FORMAT CAPACITIES (MMC) SET WINDOW READ CAPACITY (10) READ (10) READ GENERATION WRITE (10) SEEK (10) ERASE (10) READ UPDATED BLOCK WRITE AND VERIFY (10) VERIFY (10) SEARCH DATA HIGH (10) SEARCH DATA EQUAL (10) SEARCH DATA LOW (10) SET LIMITS (10) PRE-FETCH (10) SYNCHRONIZE CACHE (10) LOCK/UNLOCK CACHE (10) READ DEFECT DATA (10) INITIALIZE ELEMENT STATUS WITH RANGE

SCSI command

69
38 39 3A 3B 3C 3D 3E 3F 40 41 44 45 46 47 48 49 4A 4B 4C 4D 50 51 52 53 54 55 56 57 58 5A 5B 5C 5D 5E 5F 7E 7F 80 80 MEDIUM SCAN COMPARE COPY AND VERIFY WRITE BUFFER READ BUFFER UPDATE BLOCK READ LONG WRITE LONG CHANGE DEFINITION WRITE SAME (10) REPORT DENSITY SUPPORT PLAY AUDIO (10) GET CONFIGURATION PLAY AUDIO MSF AUDIO TRACK INDEX (not mentioned in T10 overview) AUDIO TRACK RELATIVE 10 (not mentioned in T10 overview) GET EVENT STATUS NOTIFICATION PAUSE / RESUME LOG SELECT LOG SENSE XDWRITE (10) XPWRITE (10) /*READ DISC INFORMATION CDB (in mmc5r02c 6.22.2)*/ XDREAD (10) XDWRITEREAD (10) SEND OPC INFORMATION MODE SELECT (10) RESERVE (10) RELEASE (10) REPAIR TRACK MODE SENSE (10) CLOSE TRACK / SESSION READ BUFFER CAPACITY SEND CUE SHEET PERSISTENT RESERVE IN PERSISTENT RESERVE OUT EXTENDED CDB VARIABLE LENGTH CDB XDWRITE EXTENDED (16) WRITE FILEMARKS (16)

SCSI command

70
81 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 91 92 93 9E 9F A0 A1 A2 A2 A3 A4 A5 A5 A6 A7 A8 A9 A9 AA AB AC REBUILD (16) READ REVERSE (16) REGENERATE (16) EXTENDED COPY RECEIVE COPY RESULTS ATA COMMAND PASS THROUGH (16) ACCESS CONTROL IN ACCESS CONTROL OUT READ (16) COMPARE AND WRITE WRITE (16) ORWRITE READ ATTRIBUTE WRITE ATTRIBUTE WRITE AND VERIFY (16) VERIFY (16) PRE-FETCH (16) SYNCHRONIZE CACHE (16) SPACE (16) LOCK UNLOCK CACHE (16) WRITE SAME (16) SERVICE ACTION IN (16) SERVICE ACTION OUT (16) REPORT LUNS ATA COMMAND PASS THROUGH (12) SECURITY PROTOCOL IN SEND EVENT (not mentioned in T10 overview) MAINTENANCE IN MAINTENANCE OUT (REPORT_KEY) MOVE MEDIUM PLAY AUDIO 12 (not mentioned in T10 overview) EXCHANGE MEDIUM MOVE MEDIUM ATTACHED READ (12) SERVICE ACTION OUT (12) AUDIO TRACK RELATIVE 12 (not mentioned in T10 overview) WRITE (12) SERVICE ACTION IN (12) ERASE (12)

SCSI command

71
AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BC BD BE BF READ DVD STRUCTURE WRITE AND VERIFY (12) VERIFY (12) SEARCH DATA HIGH (12) SEARCH DATA EQUAL (12) SEARCH DATA LOW (12) SET LIMITS (12) READ ELEMENT STATUS ATTACHED SECURITY PROTOCOL OUT SEND VOLUME TAG READ DEFECT DATA (12) READ ELEMENT STATUS READ CD MSF REDUNDANCY GROUP (IN) REDUNDANCY GROUP (OUT) SPARE (IN) PLAY CD (not mentioned in T10 overview) SPARE (OUT) VOLUME SET (IN) VOLUME SET (OUT)

External links
Summary of SCSI command operation codes [1] "SCSI Commands References Manual" [2]. Seagate. Retrieved 2012-05-02.

References
[1] http:/ / www. t10. org/ lists/ 2op. htm [2] http:/ / www. seagate. com/ staticfiles/ support/ disc/ manuals/ Interface%20manuals/ 100293068c. pdf

SCSI diagnostic pages

72

SCSI diagnostic pages


SCSI target devices provide a number of SCSI diagnostic pages. These can be used by a Send Diagnostic command to tell a target device to run a specialised self-test. The Receive Diagnostic Results command is used where the results from the self-test operation are non-trivial. Most of the common SCSI devices such as disk-drives support only one or two diagnostic pages. SES devices can support many diagnostic pages.

List of SCSI diagnostic pages


SCSI uses a one byte addressing scheme for diagnostic pages, allowing for a total 256 possible pages. There is a standard map of diagnostic page addresses shown below. Note that any given SCSI device type will only support a subset of these diagnostic pages. Some diagnostic pages have two different meanings depending on whether they are being used for control purposes (Send Diagnostic command) or to interrogate status (Receive Diagnostic Results command). Those cases are shown as double entries in the table below using this convention: "control definition / status definition". 00h - list of supported diagnostic pages 01h - SES - configuration 02h - SES - enclosure control / enclosure status 03h - SES - help text 04h - SES - string out / string in 05h - SES - threshold out / SES threshold in 06h - SES - obsolete 07h - SES - element descriptor 08h - SES - short enclosure status 09h - SES - enclosure busy 0Ah - SES - additional element 0Bh - SES - subenclosure help text 0Ch - SES - subenclosure string out / SES subenclosure string in 0Dh - SES - supported SES diagnostic pages 0Eh - SES - download microcode control / SES download microcode status 0Fh - SES - subenclosure nickname control / SES subenclosure nickname status 10h-1Fh - SES - vendor-specific 20h-2Fh - SES - reserved 30h-3Eh - reserved 3Fh - used by the SCSI transport layer 40h - disk/optical - translate address 41h-7Fh - reserved 80h-FFh - vendor-specific

SCSI element codes

73

SCSI element codes


SCSI Enclosure Services (SES) devices contains a number of elements, each of which is defined by a one byte SCSI element code. There are many different element codes defined to cover various devices as shown in the list below.

List of SES element codes


00h - unspecified 01h - device - disk-drive or other SCSI device 02h - power-supply 03h - cooling 04h - temperature-sensor 05h - door lock 06h - audible alarm 07h - enclosure services controller electronics 08h - SCC controller electronics 09h - nonvolatile cache 0Ah - invalid operation reason - used to determine why an ESI device has failed to complete a command 0Bh - UPS 0Ch - display 0Dh - keypad 0Eh - enclosure 0Fh - SCSI port/transceiver 10h - language 11h - communication port 12h - voltage sensor 13h - current sensor 14h - SCSI target port 15h - SCSI initiator port 16h - simple subenclosure 17h - array device 18h - SAS expander 19h - SAS connector 1Ah-7Fh - reserved 80h-FFh - vendor-specific

How SES elements are used


The SCSI initiator communicates with an SES device using two SCSI commands, Send Diagnostic and Receive Diagnostic Results. The most common SES elements are power-supply, cooling-fan, temperature-sensor and UPS. The SCSI command protocols assume that there may be more than one of each device type so they must each be given an 8-bit address. When the SES controller is interrogated for the status of an SES element, the response includes a 4-bit status code. The most common element status codes are: 1h=OK, 2h=critical, 3h=warning, 5h=not installed. See the SES article for a more detailed description.

SCSI element status codes

74

SCSI element status codes


When a SCSI SES controller is interrogated for the status of a SES element, the response includes a 4-bit SCSI element status code. The list of valid codes is: 0h - unsupported - status detection is not implemented for this element 1h - OK - element is installed and no error conditions are known 2h - critical - critical condition is detected 3h - noncritical (warning) - noncritical condition is detected 4h - unrecoverable - unrecoverable condition is detected 5h - not installed - this element is not installed in the enclosure 6h - unknown - sensor has failed or element status is not available 7h - not available - element installed, no known errors, but the element has not been set into operation 8h-Fh - reserved

SCSI Enclosure Services


Most recent SCSI enclosure products support a protocol called SCSI Enclosure Services (SES). The initiator can communicate with the enclosure using a specialised set of SCSI commands to access power, cooling, and other non-data characteristics.

SES devices
There are two major classes of SES devices: Attached enclosure services devices allow SES communication through a logical unit within one SCSI disk drive located in the enclosure. The disk-drive then communicates with the enclosure by some other method, the only commonly used one being Enclosure Services Interface (ESI). In fault-tolerant enclosures, more than one disk-drive slot has ESI enabled to allow SES communications to continue even after the failure of any of the disk-drives. The definition of the ESI protocols is owned by an ANSI committee and defined in their specifications ANSI SFF-8067 and SFF-8045. Standalone enclosure services enclosures have a separate SES processor which occupies its own address on the SCSI bus. The protocol for this uses direct SCSI commands. An enclosure can be fault-tolerant by containing two SES processors.

SES commands
The SCSI initiator communicates with an SES device using two SCSI commands: Send Diagnostic and Receive Diagnostic Results. Some universal SCSI commands such as Inquiry are also used with standalone enclosure services to perform basic functions such as initial discovery of the devices.

SES elements
The SCSI Send Diagnostic and Receive Diagnostic Results commands can be addressed to a specific SES element in the enclosure. There are many different element codes defined to cover a wide range of devices. The most common SES elements are power supply, cooling fan, temperature sensor, and UPS. The SCSI command protocols assume that there may be more than one of each device type so they must be each given an 8-bit address.

SCSI Enclosure Services When a SES controller is interrogated for the status of a SES element, the response includes a 4-bit element status code. The most common element status codes are: 1h=OK, 2h=critical, 3h=warning, 5h=not installed. ISA

75

SES element thresholds


Some SES elements, such as voltage sensors, current sensors, and temperature sensors, have a thresholding function. This allows an enclosure to detect and report unacceptable environmental conditions. The SCSI standard allows for two different threshold levels, noncritical (warning) and critical. Also, each threshold has a minimum and maximum value. So for example the threshold values for the 12 volt power-supply could be set as follows: Minimum critical - 10.8 volts Minimum noncritical - 11.4 volts Maximum noncritical - 12.6 volts Maximum critical - 13.2 volts

Threshold values are set by a Send Diagnostic command to the Threshold Out diagnostic page (05h). Threshold values can be interrogated by a Receive Diagnostic Results command to the Threshold In diagnostic page (05h) with the PCV bit set to one.

Subenclosures
A larger SCSI storage enclosure may contain multiple subenclosures. The subenclosure with address 00h is designated the primary subenclosure and can return information about the other subenclosures.

SCSI attached enclosure services


SCSI attached enclosure services is a computer protocol used mainly with disk storage enclosures. It allows a host computer to communicate with the enclosure to access its power, cooling, and other non-data characteristics. The host computer communicates with the disks in the enclosure via a SCSI interface which may be Parallel SCSI, FC-AL, SAS, or SSA. One of the disk devices located in the enclosure is set up to allow SCSI Enclosure Services (SES) communication through a logical unit. The disk-drive then communicates with the SES processor in the enclosure, usually via Enclosure Services Interface (ESI), or a protocol called DSI for SSA enclosures. The data sent over the ESI or DSI interface is simply the contents of a SCSI command and the response to that command.

Implemented commands
Only two SCSI commands are implemented by attached enclosure services devices:
SCSI command Operation code Comment Mandatory Mandatory

RECEIVE DIAGNOSTIC RESULTS 1Ch SEND DIAGNOSTIC 1Dh

SCSI Format Unit Command

76

SCSI Format Unit Command


The SCSI Format Unit command is used to destructively format a SCSI target deviceusually a diskand prepare the medium to store data. Defect management options may be specified in the CDB. Depending on the device characteristics and capacity, formatting may be a lengthy process. In the Seagate SCSI manual, it is stated that a disk drive will disconnect during formatting, thus implying a time-consuming operation.[1] The CDB structure is:

SCSI Format Unit Command


Bit 0 1 2 +0 +8 +16 +24 Interleave +32 +40 Control LUN 3 4 5 6 7

Operation Code = 0x04 FmtData CmpLst Defect List Format Vendor-specific

The special parameter fields in the CDB have the following meaning: FmtData - Format Data - if this is one then the command is followed by two or three extra parameters: defect list header initialization pattern descriptor defect descriptors (optional) CmpLst - Complete List: 0 - the initiator will send a partial list of defects, to be added to the existing list 1 - the initiator will send a complete list of defects, overwriting the existing list Defect list format - if the FmtData bit is one then this describes the defect options: 000 - block format - 32-bit LBAs 100 - bytes from index format - cylinder + head + byte-offset 101 - physical sector format - cylinder + head + sector 110 - vendor-specific

Interleave 0000h - the target can use its default interleave 0001h - consecutive LBAs must be contiguous all other values are vendor-specific In some cases, issuing this command to a tape drive will result in the tape being erased.

References
[1] * "SCSI Commands References Manual" (http:/ / www. seagate. com/ staticfiles/ support/ disc/ manuals/ Interface manuals/ 100293068c. pdf). Seagate. . Retrieved 2012-05-02.

SCSI high byte termination

77

SCSI high byte termination


In SCSI computer systems, there is a special case with mixed 8-bit and 16-bit devices where high-byte termination may be required. Most parallel SCSI buses are terminated at each end. However where the bus width is not constant, it is sometimes necessary to provide special termination for the high byte and the associated parity bit. This high-byte termination can use standard SCSI termination techniques, such as a passive terminator, active terminator, or a forced-perfect terminator. This diagram shows a typical SCSI high-byte termination scheme:

There is a simplification to this which is sometimes used in the case where there is only one 16-bit (wide) device connected to one or more 8-bit (narrow) devices. Then it is possible to wire all the eight spare data bits and the ninth parity bit together and to terminate them with a single resistor circuit to TERMPOWER. So in the case of a differential SCSI bus, it is possible to terminate all 18 spare signal wires with just one resistor. This method is not considered good practice, but has been successfully used in some SCSI products.

SCSI host adapter

78

SCSI host adapter


A SCSI host adapter is a device used to connect one or more other SCSI devices to a computer bus. It is commonly called a SCSI controller, which is not strictly correct as any component understanding the SCSI protocol can be called a controller. In this sense all SCSI devices have a SCSI controller built into them, while host adapters (unlike, for example, a hard disk or CD-ROM) bear responsibility for transferring data between the SCSI bus and the computer's input/output bus. Most modern SCSI host adapters are PCI cards, either 32-bit or 64-bit. Older ones were based on the 16-bit ISA bus or the transitional 32-bit VESA and EISA buses. It is not uncommon for a SCSI host adapter to be built into a PC motherboard as an integral part, however this typically makes the board quite expensive and it is more usual to retain the SCSI host adapter as a separate component which can be easily replaced or transferred to another machine.
Host Bus Adapter (SCSI)

Types
SCSI host adapters traditionally fall into two broad classes: Simple, relatively low-performance cards that provide an inexpensive way to connect SCSI devices that do not demand a great deal of bandwidth: notably CD-ROM drives and SCSI scanners. The cost varies but is typically in the order of $US40 or so. These were very common up until about 2000, but are now fairly rare: the demise of the ISA slot added a little to the cost; the great improvement in IDE technology (particularly in the case of CD-ROM drives and CD recorders) removed one major use, and the advent of USB made the expense of a SCSI interface unnecessary for most scanners. High-end cards designed for maximum performance, usually for very high-speed hard drives, and especially for situations that require several high-speed drives (notably servers). These are almost always quite expensive, around $US200 or more. The advent of serial ATA is expected to reduce the usage of high-end SCSI host adapters, but there is no current expectation that they will disappear in the near future.

Manufacturers
Many companies have manufactured SCSI host adapters at one time or another, but the market structure has been remarkably stable over the years. Two leading manufacturers are Adaptec and LSI Logic.

SCSI initiator and target

79

SCSI initiator and target


In computer data storage, a SCSI initiator is the endpoint that initiates a SCSI session, that is, sends a SCSI command. The initiator usually does not provide any Logical Unit Numbers (LUNs). On the other hand, a SCSI target is the endpoint that does not initiate sessions, but instead waits for initiators' commands and provides required input/output data transfers. The target usually provides to the initiators one or more LUNs, because otherwise no read or write command would be possible.

Detailed information
Typically, a computer is an initiator and a data storage device is a target. As in a clientserver architecture, an initiator is analogous to the client, and a target is analogous to the server. Each SCSI address (each identifier on a SCSI bus) displays behavior of initiator, target, or (rarely) both at the same time. There is nothing in the SCSI protocol that prevents an initiator from acting as a target or vice versa. SCSI initiators are sometimes wrongly called controllers. See the SCSI host adapter article for a more detailed description of initiator's operation.

Other protocols
Initiator and target terms are applicable not only to traditional parallel SCSI, but also to Fibre Channel Protocol (FCP), iSCSI (see iSCSI target), HyperSCSI, (in some sense) SATA, InfiniBand, DSSI and many other storage networking protocols.

Address versus port


In most of these protocols, an address (whether it is initiator or target) is roughly equivalent to physical device's port. Situations where a single physical port hosts multiple addresses, or where a single address is accessible from one device's multiple ports are not very common, as of 2008. Even when using multipath I/O to achieve fault tolerance, the device driver switches between different targets or initiators statically bound on physical ports, instead of sharing a static address between physical ports.

SCSI Inquiry Command

80

SCSI Inquiry Command


The SCSI Inquiry command is used to obtain basic information from a target device.[1] The CDB structure is:
bit 7 6 5 4 3 2 1 byte 0 1 2 3 4 5 0

Operation code = 12h LUN Reserved Page code Allocation length (MSB) Allocation length (LSB) Control EVPD

If the EVPD parameter bit is zero and the Page Code parameter byte is zero then the target will return the standard inquiry data, which is structured as follows:
bit byte 0 1 2 3 4 5 6 7 815 1631 3235 3655 5695 96 7 6 5 4 3 2 1 0

Peripheral qualifier RMB ISO version AEC TrmIOP

Peripheral device type Device-type modifier ECMA version ANSI-approved version Response data format

Reserved

Additional length (n-4) Reserved Reserved RelAdr WBus32 WBus16 Sync Linked Reserved CmdQue SftRe Vendor identification (ASCII) Product identification (ASCII) Product revision level Vendor-specific Reserved Vendor-specific parameters (variable number of bytes)

The special fields in the standard inquiry data have the following meaning: Peripheral Device Type - see separate article on SCSI Peripheral Device Types RMB - removable medium AENC - 1 = supports Asynchronous Event Notifications - (processor devices only) TrmIOP - 1 = supports Terminate I/O Process messages Response data format - 000=SCSI compliant, other values = legacy devices RelAdr - 1= this LUN supports Relative Addressing Mode (linked commands only) WBus32+WBus16 - support for wide data buses: 00 - 8-bit only 01 - 8 or 16-bit 11 - 8, 16 or 32 bit

SCSI Inquiry Command Sync - 1 = supports synchronous transfers Linked - 1 = this LUN supports linked commands CmdQue - 1 = supports Tagged Command Queuing SftRe - 1 = performs soft resets

81

If the EVPD parameter bit is one then the target will return Vital Product Data (VPD). This can be from one of a number of different pages, depending on the value of the Page Code parameter: 00h - Supported vital product data 01h-7Fh - ASCII information 80h - Unit serial number 81h - Implemented operating definitions (Obsolete) 82h - ASCII implemented operating definition (Obsolete) 83h - Device Identification 84h - Software Interface Identification 85h - Management Network Addresses 86h - Extended INQUIRY Data 87h - Mode Page Policy 88h - SCSI Ports

89h-AFh - Reserved B0h-BFh - Device type specific C0h-FFh - Vendor-specific

References
[1] Seagate Disc Drive SCSI-2/SCSI-3 Interface Manual, publication Number 77738479, Rev H

SCSI log pages

82

SCSI log pages


SCSI target devices provide a number of SCSI log pages. These can be interrogated by a Log Sense command and in some cases can be set by a Log Select command. The Log Sense and Log Select commands include a 6-bit address field, allowing for 64 possible log pages. There is a standard map of log page addresses below. Note that any given SCSI device type will only support a subset of these log pages. 00h - supported log pages 01h - buffer over-run/under-run 02h - error counter (write) 03h - error counter (read) 04h - error counter (read reverse) 05h - error counter (verify) 06h - non-medium error 07h - last n error events 08h-2Fh - reserved 30h-3Eh - vendor-specific 3Fh - reserved

SCSI Log Select Command


The SCSI Log Select command "provides a means for an application client to manage statistical information maintained by the SCSI target device about the target device or its logical units". The format of the CDB for the Log Select command is[1]:
bit 7 6 5 4 3 2 byte 0 1 2 3 4 5 6 7 8 9 Control Parameter list length PC 1 0

Operation code = 4Ch Reserved PCR SP

Page Code Subpage Code Reserved

The special parameter fields in the CDB have the following meaning: PCR - Parameter Code Reset - setting this bit instructs the target to reset all parameters to their default values SP - Save Parameters - setting this bit instructs the target to save all saveable log parameters to a non-volatile memory or media area PC - Page Control - specifies which data counter parameter values shall be processed: 00 - Threshold Values 01 - Cumulative Values

SCSI Log Select Command 10 - Default Threshold Values 11 - Default Cumulative Values Parameter List Length - in bytes

83

References
[1] "SCSI Primary Commands - 4 (SPC-4)" (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r30. pdf) (PDF). . Retrieved 2011-03-31.

External links
"SCSI Commands References Manual" (http://www.seagate.com/staticfiles/support/disc/manuals/Interface manuals/100293068c.pdf). Seagate. p.103. Retrieved 2012-05-02.

SCSI Log Sense Command


The SCSI Log Sense command is used to obtain current data from log pages in a SCSI target device. The CDB structure for the Log Sense command is[1]:

SCSI Log Sense


bit 7 6 5 4 3 2 byte 0 1 2 3 4 5 PARAMETER POINTER 6 7 ALLOCATION LENGTH 8 9 Control 1 0

Operation Code = 0x4D LUN Reserved PC Obsolete SP

PAGE CODE SUBPAGE CODE Reserved

The special parameter fields in the CDB have the following meaning: SP - Save Parameters - if this is one then the target should save all saveable log parameters to a non-volatile memory or media area. PC - Page Control - this indicates which type of values should be returned: 00 - Current Threshold Values 01 - Current Cumulative Values 10 - Default Threshold Values 11 - Default Cumulative Values

Parameter Pointer indicates the first parameter code to be returned. Allocation Length in bytes If the Parameter Pointer is zero and the Allocation Length is large enough then all parameters are returned.

SCSI Log Sense Command

84

References
[1] "SCSI Primary Commands - 4 (SPC-4)" (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r30. pdf) (PDF). . Retrieved 2011-03-31.

SCSI mode pages


SCSI target devices provide a number of SCSI mode pages. These can be interrogated by a Mode Sense command and set by a Mode Select command. The Mode Sense and Mode Select commands include a 6-bit address field, allowing for 64 possible mode pages. A description of many of these page codes is included below. Note that any given SCSI device type will only support a subset of the possible page codes, and some page codes may have different meanings for different devices.

List of SCSI mode page codes[1]


Code 00h 01h 02h 03h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h Vendor-specific Read-write error recovery parameters Disconnect-reconnect - allows the initiator to tune SCSI bus performance Format parameters (direct-access devices) Measurement units (scanner devices) Rigid disk geometry parameters Flexible disk parameters Optical memory parameters Verify error recovery parameters Caching Peripheral device - transfers vendor-specific data between an initiator and a peripheral interface below the target (obsolete) Control mode - tagged queuing, extended contingent allegiance, asynchronous event notification, and error logging Medium types supported Notch and partition parameters CDROM parameters CDROM audio control (playback) parameters Reserved Device configuration Medium partitions (1) Medium partitions (2) Medium partitions (3) Medium partitions (4) Extended Extended device-type specific Reserved Protocol-specific LUN Description

SCSI mode pages

85
Protocol-specific Port Power conditions page Reserved Informational exceptions control medium-changer element address assignment medium-changer transport geometry parameters medium-changer device capabilities

19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh

20h-3Eh Vendor-specific 3Fh return all mode pages (valid only for a Mode Sense command)

References
[1] "SCSI Primary Commands - 4 (SPC-4)" (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r17. pdf) (PDF). . Retrieved 2006-03-09.

SCSI Mode Select Command


The SCSI Mode Select command is used to modify device information contained in mode pages in a SCSI target device. There are two different versions of the command, a 6 byte version and a 10 byte version. The CDB structure for the Mode Select(6) command is[1]:
bit 7 6 5 byte 0 1 2 3 4 5 4 3 2 1 0

Operation code = 15h LUN PF Reserved SP Reserved Reserved Parameter list length Control

The CDB structure for the Mode Select(10) command is:


bit 7 6 5 byte 0 1 2 3 4 5 6 78 9 4 3 2 1 0

Operation code = 55h LUN PF Reserved SP Reserved Reserved Reserved Reserved Reserved Parameter list length Control

SCSI Mode Select Command The special control fields in the CDB have the following meaning: PF - Page Format: 0 - SCSI-1 compliant (vendor-specific) 1 - SCSI-2 compliant SP - Save Pages - if this bit is one then the target will save any saveable updates to non-volatile memory or media area.

86

References
[1] "SCSI Primary Commands - 4 (SPC-4)" (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r30. pdf) (PDF). . Retrieved 2011-03-31.

External links
"SCSI Commands References Manual" (http://www.seagate.com/staticfiles/support/disc/manuals/Interface manuals/100293068c.pdf). Seagate. p.110. Retrieved 2012-05-02.

SCSI Mode Sense Command


The SCSI Mode Sense command is used to obtain current device information from mode pages in a SCSI target device. There are two different versions of the command, a 6 byte version and a 10 byte version.[1] The CDB structure for the Mode Sense(6) command is:[2]
bit 7 6 5 byte 0 1 2 3 4 5 LUN PC 4 3 2 1 0

Operation code = 1Ah Reserved DBD Reserved Page code Subpage code [3]

Allocation length Control

The CDB structure for the Mode Sense(10) command is:[4]


bit 7 6 5 byte 0 1 2 3 4 5 6 78 9 4 3 2 1 0

Operation code = 5Ah Reserved LLBAA DBD Reserved PC Page code Reserved Reserved Reserved Reserved Allocation length Control

SCSI Mode Sense Command The special control fields in the CDB have the following meaning:[5] LLBAA - Long LBA Accepted - if "1" then the target is allowed to return parameter data with the LONGLBA bit set to "1" DBD - Disable Block Descriptors - if "1" then the target must not return any block descriptors PC - Page control 00 - return current values 01 - return changeable values 10 - return default values 11 - return saved values Page Code - see the separate Wikipedia page for a list of SCSI mode pages.

87

Notes
[1] [2] [3] [4] [5] SCSI Command Reference, pp.54. SCSI Command Reference, pp.97-100. SCSI Command Reference, pp.97. SCSI Command Reference, pp.101. SCSI Command Reference, pp.97.

References
SCSI Command Reference Manual (http://www.seagate.com/staticfiles/support/disc/manuals/Interface manuals/100293068c.pdf), Seagate Corp, April 2010.

SCSI Pass Through Interface

88

SCSI Pass Through Interface


SCSI Pass Through Interface A component of Microsoft Windows
Details Other names Type SPTI; SPT Application programming interface

Included with Windows NT family of operating systems Replaces Advanced SCSI Programming Interface (ASPI)

SCSI Pass Through Interface (SPTI) is an application programming interface (API) accessing a SCSI device. It is developed by Microsoft Corporation and is part of the Windows NT family of operating systems.[1]

Overview
The storage port drivers provide an interface for Win32 applications to send SCSI Command Descriptor Block (CDB) messages to SCSI devices. The interfaces are IOCTL_SCSI_PASS_THROUGH and IOCTL_SCSI_PASS_THROUGH_DIRECT. Applications can build a pass-through request and send it to the device by using this IOCTL. SPTI is accessible to Windows software using the DeviceIoControl Windows API.[2] ImgBurn offers SPTI as a method for accessing optical disc drives.[3]

Other SCSI interfaces


Advanced SCSI Programming Interface (ASPI) by Adaptec, Nero AG and Pinnacle Systems[4] ASAPI by VOB Computersysteme GmbH and Pinnacle Systems ElbyCDIO by Elaborate Bytes Patin-Couffin by VSO Software SCSI Pass-Through Direct (SPTD) by Duplex Secure, Ltd.

References
[1] "INFO: SCSI Pass Through Functionality and Limitations (Revision: 2.2)" (http:/ / support. microsoft. com/ kb/ 251369). Microsoft Support. Microsoft Corporation. 12 February 2007. . Retrieved 30 May 2011. [2] "SCSI Pass Through Interface" (http:/ / msdn. microsoft. com/ library/ ff565348(v=VS. 85). aspx). Microsoft Developer Network. Microsoft Corporation. 3 May 2011. . Retrieved 30 May 2011. [3] "ImgBurn Support Forum" (http:/ / forum. imgburn. com/ lofiversion/ index. php/ t6659. html). . Retrieved 8 August 2009. [4] "ASPI is not supported by Microsoft for all versions of Windows (Revision: 3.2)" (http:/ / support. microsoft. com/ kb/ 182542). Microsoft Support. Microsoft Corporation. 30 June 2005. . Retrieved 30 May 2011.

SCSI Pass Through Interface

89

Further reading
1. "SCSI Port I/O Control Codes" (http://msdn.microsoft.com/library/ff565367.aspx). Microsoft Developer Network. Microsoft Corporation. 3 May 2011. Retrieved 30 May 2011. 2. "SCSI Interface for Multimedia and Block Devices" (http://scsi.codeplex.com/). CodePlex. Microsoft Corporation. Retrieved 20 May 2011.

SCSI Pass-Through Direct

90

SCSI Pass-Through Direct


SCSI Pass Through Direct (SPTD)
Developer(s) Stable release Duplex Secure, Ltd. 1.81 / April 11, 2012

Operating system Windows 2000; Windows XP; Windows Vista; Windows 7 Platform Size Type License IA-32 and x64 1 MB Device driver; Application programming interface Proprietary Device driver: Freeware API: Commercial software www.duplexsecure.com/en/home [1]

Website

SCSI Pass Through Direct (SPTD) is a proprietary device driver and application programming interface (API) developed by Duplex Secure Ltd. that provides a new method of access to SCSI storage devices. The SPTD API is not open to the public.

Uses
SPTD is used by Daemon Tools and Alcohol 120%. It is also utilized in PowerArchiver Pro 2010 (v11.60+); however, a configurable option is available to disable it.[2] It is known to be incompatible with kernel-mode debugging including WinDbg and Microsoft's other command line debuggers as well as SoftICE. Further, certain versions of the freeware optical media burning software ImgBurn will issue a warning, "SPTD can have a detrimental effect on drive performance", if the application detects that SPTD is active or installed. ConeXware, Inc. (the maker of PowerArchiver) claims that in their internal testing, SPTD improved optical drive performance by up to 20 percent in comparison to the "old school" SCSI Pass Through Interface.[2]

References
[1] http:/ / www. duplexsecure. com/ en/ home [2] "PA 2010 11.60 Preview #3 improved burner experience" (http:/ / www. powerarchiver. com/ blog/ 2009/ 09/ 10/ pa-2010-11-60-preview-3-improved-burner-experience/ ). PowerArchiver Blog. ConeXware, Inc.. 10 Sep 2009. . Retrieved 30 May 2011.

Further reading
1. "SCSI Port I/O Control Codes" (http://msdn.microsoft.com/library/ff565367.aspx). Microsoft Developer Network. Microsoft Corporation. 3 May 2011. Retrieved 30 May 2011. 2. "SCSI Pass Through Interface" (http://msdn.microsoft.com/library/ff565348(v=VS.85).aspx). Microsoft Developer Network. Microsoft Corporation. 3 May 2011. Retrieved 30 May 2011.

SCSI Peripheral Device Type

91

SCSI Peripheral Device Type


A SCSI Peripheral Device Type is a way of describing what capabilities are provided by a SCSI device. It is a five-bit field in the first byte returned in response to an Inquiry Command. Defined values are: 00h - direct-access device (e.g., magnetic disk) 01h - sequential-access device (e.g., magnetic tape) 02h - printer device 03h - processor device 04h - write-once device 05h - CD/DVD-ROM device 06h - scanner device 07h - optical memory device (e.g., some optical disks) 08h - medium Changer (e.g. jukeboxes) 09h - communications device 0Ah-0Bh - defined by ASC IT8 (Graphic arts pre-press devices) 0Ch - Storage array controller device (e.g., RAID) 0Dh - Enclosure services device 0Eh - Simplified direct-access device (e.g., magnetic disk) 0Fh - Optical card reader/writer device 10h - Reserved for bridging expanders 11h - Object-based Storage Device 12h - Automation/Drive Interface 13h-1Dh - reserved 1Eh - Well known logical unit 1Fh - unknown or no device type

External links
Draft of SCSI Primary Commands - 4 (SPC-4) [1]

References
[1] http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=spc4r33. pdf

SCSI RDMA Protocol

92

SCSI RDMA Protocol


In computing the SCSI RDMA Protocol (SRP)[1] is a protocol that allows one computer to access SCSI devices attached to another computer via remote direct memory access (RDMA).[2][3] 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 possible through e.g. the TCP/IP communication protocol. RDMA is only possible with network adapters that support RDMA in hardware. Examples of such network adapters are InfiniBand HCAs and 10 GbE network adapters with iWARP support. While the SRP protocol has been designed to use RDMA networks efficiently, it is also possible to implement the SRP protocol over networks that do not support RDMA. As with the ISCSI Extensions for RDMA (iSER) communication protocol, there is the notion of a target (a system that stores the data) and an initiator (a client accessing the target) with the target performing the actual data movement. In other words, when a user writes to a target, the target actually executes a read from the initiator and when a user issues a read, the target executes a write to the initiator. While the SRP protocol is easier to implement than the iSER protocol, iSER offers more management functionality, e.g. the target discovery infrastructure enabled by the iSCSI protocol. Furthermore, the SRP protocol never made it into an official standard. The latest draft of the SRP protocol, revision 16a, dates from July 3, 2002.[2] In order to use the SRP protocol, an SRP initiator implementation, an SRP target implementation and networking hardware supported by the initiator and target are needed. The following software SRP initiator implementations exist: Linux SRP initiator, available since November 2005 (kernel version 2.6.15). Windows SRP initiator, available through the WinOF InfiniBand stack.[4] VMWare SRP initiator, available since January 2008 through Mellanox' OFED Drivers for VMware Infrastructure 3 and vSphere 4.[5] Solaris 10 SRP initiator, available through Sun's download page.[6] The IBM POWER virtual SCSI client driver for Linux (ibmvscsi), available since January 2008 (kernel version 2.6.24[7]). Virtual SCSI allows client logical partitions to access I/O devices (disk, CD, and tape) that are owned by another logical partition.[8][9] The following SRP target implementations exist: Linux LIO SRP target,[10] available since January 2012 (kernel version 3.3[11]), based on the SCST SRP target. The SCST SRP target implementation [12]. This is a mature SRP target implementation available since 2008 via both SCST and OFED [13]. The IBM POWER virtual SCSI target driver (ibmvstgt), available since January 2008 (kernel version 2.6.24[7]).[8][9] DataDirect Network's (DDN) disk subsystems such as the S2A9900 and SFA10000, which use the SRP target implementation in the disk subsystem's controllers to present LUNs to servers (the servers act as SRP initiators)[14][15]. Bandwidth and latency of storage targets supporting the SRP or the iSER protocol should be similar. On Linux, there are two SRP storage target implementations available that run inside the kernel (standard LIO and out-of-tree SCST[12]) and an iSER storage target implementation that runs in user space (STGT). Measurements have shown that the SCST SRP target has a lower latency and a higher bandwidth than the STGT iSER target. This is probably because the RDMA communication overhead is lower for a component implemented in the Linux kernel than for a user space Linux process, and not because of protocol differences.[16]

SCSI RDMA Protocol

93

References
[1] "SRP Update and Directions" (http:/ / www. youtube. com/ watch?v=4UVRuq-lgKo). openfabrics.org. 27-Mar-2012. . [2] ANSI T10 SRPr16a, www.t10.org (http:/ / www. t10. org/ drafts. htm#SCSI3_SRP). [3] ANSI T10 SRPr16a, web.archive.org (http:/ / web. archive. org/ web/ 20080422013122/ http:/ / www. t10. org/ ftp/ t10/ drafts/ srp/ srp-r16a. pdf) [4] OpenFabrics InfiniBand stack for Windows, also called WinOF (http:/ / www. openfabrics. org/ downloads/ WinOF/ ). [5] Mellanox OFED Drivers for VMware Infrastructure 3 and vSphere 4 (http:/ / www. mellanox. com/ content/ pages. php?pg=products_dyn& product_family=36& menu_section=34#tab-two). [6] Sun's download page (http:/ / www. sun. com/ download/ ). [7] Linux kernel version 2.6.24 change log (http:/ / www. kernel. org/ pub/ linux/ kernel/ v2. 6/ ChangeLog-2. 6. 24). [8] D. Boutcher and D. Engebretsen, Linux Virtualization on IBM POWER5 Systems (http:/ / www. kernel. org/ doc/ mirror/ ols2004v1. pdf#page=113), Proceedings of the Linux Symposium, Vol. 1, July 2004, pp. 113-120. [9] IBM Systems Hardware Information Center, Virtual SCSI (http:/ / publib. boulder. ibm. com/ infocenter/ systems/ scope/ hw/ index. jsp?topic=/ iphb1/ iphb1_vios_concepts_stor. htm). [10] "SCSI RDMA Protocol" (http:/ / linux-iscsi. org/ wiki/ SCSI_RDMA_Protocol). linux-iscsi.org. . [11] Linus Torvalds (1/18/2012). "InfiniBand/SRP merge" (http:/ / git. kernel. org/ ?p=linux/ kernel/ git/ torvalds/ linux. git;a=commit;h=f59e842fc0871cd5baa213dc32e0ce8e5aaf4758). lkml.org. . [12] The SCST Project (http:/ / sourceforge. net/ projects/ scst/ ), an open source SCSI target implementation for Linux that includes an SRP target implementation. [13] OFED 1.3 Release Notes (http:/ / lists. openfabrics. org/ pipermail/ general/ 2008-February/ 047221. html), OFA-General Mailing List, February 2008. [14] "DDN SFA10000 User Guide" (http:/ / www. ddn. com/ pdfs/ SFA10000_1. 4. 0_User_Guide_C. pdf). ddn.com. 1/18/2012. . [15] "DDN Corporate Overview, IB Storage 101 section" (http:/ / www. hpcadvisorycouncil. com/ events/ switzerland_workshop/ pdf/ Presentations/ Day 1/ 11_DDN. pdf). ddn.com. 1/18/2012. . [16] Performance of SCST versus STGT (http:/ / lkml. org/ lkml/ 2008/ 1/ 29/ 387).

SCSI Read Capacity Command


The SCSI Read Capacity command is used to obtain data capacity information from a target device. The command descriptor block (CDB) structure is:
bit 7 6 5 4 3 2 1 byte 0 1 2 3 4 5 6 7 8 9 Reserved Reserved Reserved Control PMI 0

Operation code = 25h LUN Reserved LBA (MSB) LBA (LSB) RelAdr

The special control fields in the CDB have the following meaning: RelAdr - indicates that the logical block address (LBA) value is relative (only used with linked commands). PMI - partial medium indicator: 0 - return value for the last LBA

SCSI Read Capacity Command 1 - return value for the last LBA after which a substantial delay in data transfer will be encountered (e.g., the current track or cylinder) The target will return capacity data structured as follows:
bit 7 6 5 4 3 2 1 0 byte 03 47 Returned LBA Block length in bytes

94

External links
"SCSI Commands References Manual" [2]. Seagate. p.168. Retrieved 2010-12-13.

SCSI Read Commands


There are six different SCSI Read commands defined.

Read (6)
The Read(6) command is only 6 bytes long and is a legacy from early SCSI days. Its use is restricted to 21-bit LBAs (1 GiB) and 8-bit Transfer Length fields. It has been present since the SASI (1979) specification. The CDB structure is:
bit 7 6 5 4 3 2 1 0 byte 0 1 2 3 4 5 [1] [2] Operation code = 08h LUN LBA LBA LBA Transfer length Control

Read (10)
The Read(10) (also called 'read extended' in 1987) command was introduced to cope with 32-bit LBAs (2048 GiB) and uses a 16-bit Transfer Length field. It also included three performance-related enhancements. Disable Page Out (DPO) allows the initiator to warn the target that the data being read is unlikely to be requested again soon and so is not worth keeping in the target's data cache. Force Unit Access (FUA) tells the target to fetch the data from the media surface and to not use a cached copy. The RelAdr bit is used to indicate that the LBA value is relative (only used with linked commands). The '2' in the operation code indicates a "class 2" command, and the '8' is the real 'read' opcode. This command was present in a 1982 working document and as such it is likely to have been present from the first SCSI command definitions, showing remarkable foresight. The CDB structure is:

SCSI Read Commands

95

bit 7 6 5 byte 0 1 25 6 78 9 [1] [2] LUN

Operation code = 28h DPO FUA Reserved RelAdr LBA Reserved Transfer length Control

Read (12)
The Read(12) command is similar to the Read(10) command except that it has a larger 32-bit Transfer Length field. The CDB structure is:
bit 7 6 5 byte 0 1 25 69 10 11 4 3 2 1 0

Operation code = A8h Reserved DPO FUA Reserved RelAdr LBA Transfer length Reserved Control

Read (16)
The Read(16) command is similar to the Read(12) command except that it has a 64-bit LBA field and is thus capable of addressing 8 388 608 PiB (ATA-6 is capable of max 128 PiB). The Transfer Length field is 32 bits long. The CDB structure is:
bit byte 0 1 29 10-13 14 15 RDPROTECT 7 6 5 4 3 2 1 0

Operation code = 88h DPO FUA Reserved FUA_NV Reserved LBA Transfer length Restricted for MMC-4 Reserved Control Group number

SCSI Read Commands

96

Read (32)
The Read(32) command uses a 64-bit LBA fields (capable of addressing 8 388 608 PiB) and uses a 32-bit Transfer Length field. The CDB structure is:
bit byte 0 1 2-5 6 7 8-9 10 11 12-19 20-23 24-25 26-27 28-31 Reserved 7 6 5 4 3 2 1 0

Operation code = 7Fh Control Reserved Group number Additional CDB length (18h) Service Action (0009h) RDPROTECT DPO FUA Reserved FUA_NV Reserved Reserved LBA Initial Logical Block Reference Tag Expected Logical Block Application Tag Logical Block Application Tag Mask Transfer length

Read Long
The Read Long command is used for Error Correcting Code (ECC) compliant data previously written by a Write Long command. The CORRCT bit defines whether or not the target is allowed to correct any errors found before returning the data to the target. The LBA field is 32 bits in length and the Transfer Length field is 16 bits. The CDB structure is:
bit 7 6 5 4 3 2 byte 0 1 25 6 7-8 9 1 0

Operation code = 3Eh Reserved CORRCT RelAdr LBA Reserved Byte transfer length Control

SCSI Read Commands

97

References
[1] "Shugart/NCR Joint proposal for [[American National Standards Institute|ANSI (http:/ / www. t10. org/ ftp/ t10/ drafts/ sasi/ sasir0C. pdf)] standard system interface, Using SASI as the working document"]. . Retrieved 2010-02-09. 1982-01-29 t10.org [2] "Proposal for [[CD-ROM|cd-rom (http:/ / www. t10. org/ ftp/ x3t9. 2/ document. 87/ 87-106r0. txt)] in SCSI-2"]. . 1987-06-30 t10.org

SCSI Receive Diagnostic Results Command


The SCSI Receive Diagnostic Results command is used to interrogate the results of a self-test. The self-test must have been triggered by a previous Send Diagnostic command which would have defined the self-test required. This is usually associated with one of the available diagnostic pages. The CDB structure for this command is:
bit 7 6 5 4 3 2 1 byte 0 1 2 34 5 0

Operation code = 1Ch Reserved PAGE CODE Allocation length Control PCV

External links
"SCSI Commands References Manual" [2]. Seagate. p.158. Retrieved 2012-05-02.

SCSI Report LUNs Command

98

SCSI Report LUNs Command


The Report LUNs Command is a part of the SCSI command structure The CDB structure is:

SCSI Report LUNs Command


bit 0 1 2 3 4 5 6 7 byte +0 +1 +2 +3 +4 +5 +6 +7 Allocation Length +8 +9 +10 +11 Reserved Control Reserved Operation Code = 0xA0 Reserved Select Report

The Select Report field specifies the type of logical unit addresses to be returned. 00h, returned list contains logical units with the following addressing methods 1. logical unit addressing method 2. peripheral device addressing method 3. flat space addressing method 01h, returned list contains only well known logical units 02h, returned list contains all logical units 03h-FFh, reserved

References
"SCSI Commands References Manual" [2]. Seagate. p.168. Retrieved 2010-12-13.

SCSI Request Sense Command

99

SCSI Request Sense Command


The SCSI Request Sense command is used to obtain sense data (error information) from a target device. The CDB (send) structure is:
bit 7 6 5 4 3 2 1 0 byte 0 1 2 3 4 5 Operation code = 03h LUN Reserved Reserved Reserved Allocation length Control

The fixed format response is a set of SCSI sense data which is structured as follows:
bit byte 0 1 2 36 7 811 12 13 14 15 16 17 18 SKSV 7 6 5 4 3 2 1 0

Valid

Response Code (70h or 71h) Segment number (obsolete)

Filemark EOM

ILI

Reserved Information

Sense key

Additional sense length (n-7) Command-specific information Additional sense code Additional sense code qualifier Field replaceable unit code Sense-key specific Sense-key specific Sense-key specific Additional sense bytes (variable number of bytes)

The descriptor format response is a set of SCSI sense data which is structured as follows:

SCSI Request Sense Command

100

bit byte 0 1 2 3 46 7 8n

Reserved Response Code (72h or 73h) Reserved Sense key

Additional sense code Additional sense code qualifier Reserved Additional sense length (n-7) Sense Data Descriptor(s)

The special control fields in the sense data have the following meaning: Valid 0 - INFORMATION field is not defined 1 - INFORMATION field is defined Response Code 70h - current errors, Fixed Format 71h - deferred errors, Fixed Format 72h - Current error, Descriptor Format 73h - Deferred error, Descriptor Format Segment number - valid only if the current command is COPY, COMPARE, or COPY AND VERIFY Filemark - 1 = the current command has reached a filemark or setmark (sequential-access devices only) EOM - 1 = end-of-medium (sequential-access devices) OR out-of-paper (printers) ILI - incorrect length indicator - 1 = requested logical block length did not match the logical block length of the data on the medium The Sense Key, Additional Sense Code, and Additional Sense Code Qualifier fields are usually considered in aggregate to be a 20 bit field called the KCQ. A composite value of 00000h indicates no error, all other values describe specific error conditions. See the main KCQ article for a complete list. SKSV - Sense Key Specific Valid -

0 - sense key specific data are not SCSI compliant 1 - sense key specific data are SCSI compliant Additional sense bytes - can contain vendor-specific data Bytes 20-21 can be used for a Unit Error Code (UEC)
Sense Key 0h Name Description

No Sense

Indicates there is no specific Sense Key information to be reported for the disc drive. This would be the case for a successful command or when the ILI bit is one. Indicates the last command completed successfully with some recovery action performed by the disc drive. When multiple recovered errors occur, the last error that occurred is reported by the additional sense bytes. Note: For some Mode settings, the last command may have terminated before completing. Indicates the logical unit addressed cannot be accessed. Operator intervention may be required to correct this condition. Indicates the command terminated with a non-recovered error condition, probably caused by a flaw in the medium or an error in the recorded data. Indicates the disc drive detected a nonrecoverable hardware failure while performing the command or during a self test. This includes SCSI interface parity error, controller failure or device failure.

1h

Recovered Error

2h 3h

Not Ready Medium Error Hardware Error

4h

SCSI Request Sense Command

101

5h

Illegal Request

Indicates an illegal parameter in the command descriptor block or in the additional parameters supplied as data for some commands (Format Unit, Mode Select, and so forth). If the disc drive detects an invalid parameter in the Command Descriptor Block, it shall terminate the command without altering the medium. If the disc drive detects an invalid parameter in the additional parameters supplied as data, the disc drive may have already altered the medium. This sense key may also indicate that an invalid IDENTIFY message was received. This could also indicate an attempt to write past the last logical block. Indicates the disc drive may have been reset.

6h

Unit Attention Data Protect

7h

Indicates that a command that reads or writes the medium was attempted on a block that is protected from this operation. The read or write operation is not performed. Vendor specific sense key.

9h

Firmware Error Aborted Command Equal Volume Overflow Miscompare

Bh

Indicates the disc drive aborted the command. The initiator may be able to recover by trying the command again.

Ch Dh

Indicates a SEARCH DATA command has satisfied an equal comparison. Indicates a buffered peripheral device has reached the end of medium partition and data remains in the buffer that has not been written to the medium. Indicates that the source data did not match the data read from the medium.

Eh

SCSI Send Diagnostic Command


The SCSI Send Diagnostic command is used to instruct a target device to perform a self-test on a specific LUN. The CDB structure is:
bit byte 0 1 2 34 5 7 6 5 4 3 2 1 0

Operation code = 1Dh SELF-TEST CODE PF Reserved SelfTest DevOfl UnitOfl Reserved Parameter list length Control

The special parameter fields in the CDB have the following meaning: PF - Page Format: 0 - SCSI-1 compliant (vendor-specific) 1 - SCSI-2 compliant (addresses a particular SCSI diagnostic page) as defined in the parameter list. In this case the Send Diagnostic command is usually followed by a Receive Diagnostic Results command. SelfTest if this bit is one then the device runs its default self-test. The device will then return either good status or a check condition. This version of the command is usually followed by a Receive Diagnostic Results command. If the SelfTest bit is zero then the device performs a special diagnostic operation as specified in the parameter list. DevOfL - Device Off-Line - used in high-availability applications - if this is one then the target is allowed to perform diagnostic operations that could cause it to fail read/write operations to the same from other initiators. UnitOfL - Unit Off-Line - similar to DevofL but refers to all LUNs

SCSI standalone enclosure services

102

SCSI standalone enclosure services


SCSI standalone enclosure services is a computer protocol used mainly with disk storage enclosures. It allows a host computer to communicate with the enclosure to access its power, cooling, and other non-data characteristics. The host computer communicates with one or more SCSI Enclosure Services(SES) controllers in the enclosure via a SCSI interface which may be Parallel SCSI, FC-AL, SAS, or SSA. Each SES controller has a SCSI identity (address) and so can accept direct SCSI commands.

Implemented commands
The following SCSI commands are implemented by standalone enclosure services devices:
SCSI command ACCESS CONTROL IN ACCESS CONTROL OUT CHANGE ALIASES INQUIRY LOG SELECT LOG SENSE MAINTENANCE IN MAINTENANCE OUT MODE SELECT MODE SENSE PERISTENT RESERVE IN PERSISTENT RESERVE OUT READ BUFFER RECEIVE DIAGNOSTIC RESULTS REDUNDANCY GROUP IN REDUNDANCY GROUP OUT REPORT ALIASES REPORT DEVICE IDENTIFIER REPORT LUNS REPORT PRIORITY REPORT SUPPORTED OPERATION CODES Operation code Comment 86h 87h A4h 12h 4Ch 4Dh A3h A4h 15h/55h 1Ah/5Ah 5Eh 5Fh 3Ch 1Ch BAh BBh A3h A3h A0h A3h A3h Optional Optional Optional Mandatory Optional Optional See note 1 See note 1 Optional Optional Optional Optional Optional Mandatory See note 1 See note 1 Optional Optional Mandatory Optional Optional Optional Optional Optional Mandatory Mandatory Optional Optional

REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS A3h REPORT TARGET PORT GROUPS REPORT TIMESTAMP REQUEST SENSE SEND DIAGNOSTIC SET DEVICE IDENTIFIER SET PRIORITY A3h A3h 03h 1Dh A4h A4h

SCSI standalone enclosure services

103
A4h A4h BCh BDh 00h BEh BFh 3Bh Optional Optional See note 1 See note 1 Mandatory See note 1 See note 1 Optional

SET TARGET PORT GROUPS SET TIMESTAMP SPARE IN SPARE OUT TEST UNIT READY VOLUME SET IN VOLUME SET OUT WRITE BUFFER

Note 1: The initiator needs to send a SCSI inquiry to interrogate the SCCS bit which says whether the SES controller has this command.

SCSI Start Stop Unit Command


The SCSI Start/Stop Unit command is used to control the motor in a rotary device such as a SCSI disk-drive. It is also used to load or eject removable media, such as a tape or compact disc. It is a frequently-used command and is often the first one issued after initial communication has been established between the initiator and the target. The CDB structure is:
bit 7 6 5 4 3 2 byte 0 1 2 3 4 5 1 0

Operation code = 1Bh LUN Reserved Reserved Reserved Reserved LoEj Start Immed

Control

The parameter fields in the CDB have the following meaning: Immed - immediate - if this is 1 then the target will not wait until the operation has completed before sending back the status code. LoEj (load/eject) and Start - these two bits are used together: 00 - Stop motor 01 - Start motor 10 - Eject media 11 - Load media

In most cases, sending a "stop motor" parameter to a disk will also park the read/write heads in the landing zone.[1]
[1] Seagate Disc Drive SCSI-2/SCSI-3 Interface, Publication Number 77738479, Rev H

SCSI Status Code

104

SCSI Status Code


A SCSI Status Code is used to determine the success or failure of a SCSI command. At the end of any command, the target returns a Status Code byte which should be one of the following:

00h OK
This status code indicates that the device has completed the task successfully.

02h Check condition


When the target returns a Check Condition in response to a command it is indicating that it has entered a contingent allegiance condition. This means that an error occurred when it attempted to execute a SCSI command. The initiator usually then issues a SCSI Request Sense command in order to obtain a Key Code Qualifier (KCQ) from the target.

04h Condition Met


This status code is returned on successful completion of a Search Data command or a Pre-fetch Command.

08h Busy
The target returns Busy if it cannot complete a command at that time, for example if it is in the contingent allegiance condition.

10h Intermediate
The target returns Intermediate when it successfully completes a linked command (except the last command).

14h Intermediate - Condition met


As the name suggests, this status code is simply a combination of 10h Intermediate and 04h Condition Met.

18h Reservation conflict


The target returns this status code if an initiator attempts to access a LUN that has been previously reserved by another initiator using the Reserve or Reserve Unit command.

22h Command terminated


The target returns this status if the target has to terminate the current I/O process because it received a Terminate I/O Process message. This status code is obsolete as of SAM-3.

28h Queue (task set) full


Similar to 08h Busy status, this status code is returned when the logical unit lacks the resources to accept a received task from an I_T nexus. This status code implies that the logical unit already has at least one task from that I_T nexus, where the 08h Busy status code implies that the logical unit currently has no tasks from that I_T nexus.

SCSI Status Code

105

30h ACA active


The target returns this status code if an auto-contingent allegiance condition has occurred.

40h Task aborted


The target returns this status code when a task is aborted by another I_T nexus and the TAS bit in the Control mode page is set to one.

External Links
"SCSI Commands References Manual" [2]. Seagate. Retrieved 2010-12-13. SAM-4 [1] clause 5.3.1

References
[1] ftp:/ / ftp. t10. org/ t10/ drafts/ sam4/

SCSI terminating resistor


SCSI terminating resistors are electrical resistors that absorb signals that reach the end of the bus (computing). Without them signals could reflect back onto the bus causing a confusing mix of actual and reflected signals.

SCSI Test Unit Ready Command


The SCSI Test Unit Ready command is used to determine if a device is ready to transfer data (read/write), i.e. if a disk has spun up, if a tape is loaded and ready etc. The device does not perform a self-test operation. See the Send Diagnostic command. The CDB structure is:

SCSI Test Unit Ready Command


bit 0 1 2 3 4 5 6 7 byte 0 1 2 3 4 5 Control Reserved Operation Code = 0x00 LUN Reserved

The device will then return either good status or a check condition.

SCSI Write Commands

106

SCSI Write Commands


There are several different SCSI Write commands defined.

Write (6)
The Write (6) command is only 6 bytes long and is a legacy from early SCSI days. Its use is restricted to 21-bit LBAs. The CDB structure is[1]:
bit 7 6 5 4 3 2 1 0 byte 0 1 2 3 4 5 Operation code = 0Ah Reserved LBA LBA Transfer length Control LBA

Write (10)
The Write (10) command was introduced to cope with 32-bit LBAs. It also included four other enhancements. Disable Page Out (DPO) allows the initiator to warn the target that the data being written is unlikely to be read back soon and so is not worth keeping in the target's data cache. Force Unit Access (FUA) tells the target to immediately send the data to the media surface and to not buffer it through a cache. The EBP bit tells the target that it may skip the erase process when writing data. The RelAdr bit is used to indicate that the LBA value is relative (only used with linked commands). The CDB structure is[]:
bit byte 0 1 25 6 78 9 Reserved 7 6 5 4 3 2 1 0

Operation code = 2Ah WRPROTECT DPO FUA Reserved FUA_NV Obsolete LBA Group Number Transfer length Control

Write (12)
The Write (12) command is similar to the Write(10) command except that it has a larger Transfer Length field. The CDB structure is[]:

SCSI Write Commands

107

bit byte 0 1 25 69 10 11

Operation code = AAh WRPROTECT DPO FUA Obsolete FUA_NV Obsolete LBA Transfer length Restricted for MMC-6 Reserved Control Group Number

Write (16)
The CDB structure is[]:
bit byte 0 1 29 10-13 14 15 WRProtect 7 6 5 4 3 2 1 0

Operation code = 8Ah DPO FUA Reserved FUA_NV Obsolete LBA Transfer Length Restricted for MMC-6 Reserved Control Group Number

Write (32)
The CDB structure is[]:
bit 7 byte 0 1 25 6 7 8-9 10 1219 2023 2425 2627 2831 Reserved 6 5 4 3 2 1 0

Operation code = 7Fh Control Reserved Group Number Additional CDB Length (18h) Service Action (000Bh) WRProtect DPO FUA Reserved FUA_NV Reserved LBA Expected Initial Logical Block Reference Tag Expected Logical Block Application Tag Logical Block Application Tag Mask Transfer Length

SCSI Write Commands

108

Write Long (10)


The Write Long command allows for Error Correcting Code (ECC). The data sent from the initiator will include ECC fields as well as real data. The Byte Transfer Length field tells the target how much data will need to be returned when the data is subsequently retrieved with a Read Long command. The CDB structure is[]:
bit byte 0 1 2 3 4 5 6 7 8 9 Control Reserved Byte Transfer Length 7 6 5 4 3 2 1 0

Operation code = 3Fh COR_DIS WR_UNCOR PBLOCK LBA Reserved Obsolete

Write Long (16)


The CDB structure is[]:
bit byte 0 1 29 10 11 12 13 14 15 Reserved Control Byte Transfer Length 7 6 5 4 3 2 1 0

Operation code = 9Fh COR_DIS WR_UNCOR PBLOCK Service Action (11h) LBA Reserved

References
[1] "SCSI Block Commands - 3 (SBC-3)" (http:/ / www. t10. org/ cgi-bin/ ac. pl?t=f& f=sbc3r26. pdf) (PDF). . Retrieved 2011-01-21.

External links
"SCSI Commands References Manual" (http://www.seagate.com/staticfiles/support/disc/manuals/Interface manuals/100293068c.pdf). Seagate. Retrieved 2012-05-02.

Sense Key

109

Sense Key
KCQ redirects here. For the radio station in Saginaw, Michigan, see WKCQ Key Code Qualifier is a computer term used to describe an error-code returned by a SCSI device. When a SCSI target device returns a check condition in response to a command, the initiator usually then issues a SCSI Request Sense command. This process is part of a SCSI protocol called Contingent Allegiance Condition. The target will respond to the Request Sense command with a set of SCSI sense data which includes three fields giving increasing levels of detail about the error: K - sense key - 4 bits, (byte 2 of Fixed sense data format) C - additional sense code (ASC) - 8 bits, (byte 12 of Fixed sense data format) Q - additional sense code qualifier (ASCQ) - 8 bits, (byte 13 of Fixed sense data format) The initiator can take action based on just the K field which indicates if the error is minor or major. However all three fields are usually logically combined into a 20 bit field called Key Code Qualifier or KCQ. The specification for the target device will define the list of possible KCQ values. In practice there are many KCQ values which are common between different SCSI device types and different SCSI device vendors.

List of common SCSI KCQs


Category No Sense Key ASC ASCQ 0 0 Soft Error 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 5D 01 02 03 09 0B 0C 0C 12 12 14 16 16 16 16 16 17 17 17 00 00 00 00 00 00 01 01 03 01 02 01 00 01 02 03 04 00 01 02 No error No sense - PFA threshold reached Recovered Write error - no index Recovered no seek completion Recovered Write error - write fault Track following error Temperature warning Recovered Write error with auto-realloc - reallocated Recovered Write error - recommend reassign Recovered data without ECC using prev logical block ID Recovered data with ECC using prev logical block ID Recovered Record Not Found Recovered Write error - Data Sync Mark Error Recovered Write error - Data Sync Error - data rewritten Recovered Write error - Data Sync Error - recommend rewrite Recovered Write error - Data Sync Error - data auto-reallocated Recovered Write error - Data Sync Error - recommend reassignment Recovered data with no error correction applied Recovered Read error - with retries Recovered data using positive offset Error Condition

Sense Key

110
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Not Ready 2 2 2 2 2 2 2 2 2 2 2 2 2 17 17 17 17 17 17 18 18 18 18 18 18 1C 1C 1C 1F 44 5D 04 04 04 04 04 04 31 31 35 3A 3A 3A 4C 03 05 06 07 08 09 00 01 02 05 06 07 00 01 02 00 00 00 00 01 02 03 04 09 00 01 02 00 01 02 00 Recovered data using negative offset Recovered data using previous logical block ID Recovered Read error - without ECC, auto reallocated Recovered Read error - without ECC, recommend reassign Recovered Read error - without ECC, recommend rewrite Recovered Read error - without ECC, data rewritten Recovered Read error - with ECC Recovered data with ECC and retries Recovered Read error - with ECC, auto reallocated Recovered Read error - with ECC, recommend reassign Recovered data using ECC and offsets Recovered Read error - with ECC, data rewritten Defect List not found Primary defect list not found Grown defect list not found Partial defect list transferred Internal target failure PFA threshold reached Not Ready - Cause not reportable. Not Ready - becoming ready Not Ready - need initialise command (start unit) Not Ready - manual intervention required Not Ready - format in progress Not Ready - self-test in progress Not Ready - medium format corrupted Not Ready - format command failed Not Ready - enclosure services unavailable Not Ready - medium not present Not Ready - medium not present - tray closed Not Ready - medium not present - tray open Diagnostic Failure - config not loaded

Sense Key

111
Medium Error 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Hardware Error 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 02 03 10 11 11 11 11 11 14 16 16 19 19 19 19 19 31 31 01 02 03 09 11 16 19 19 19 31 32 35 35 35 35 35 3E 3E 44 00 00 00 00 01 02 04 0B 01 00 04 00 01 02 03 0E 00 01 00 00 00 00 00 00 00 02 03 00 00 01 02 03 04 05 03 04 00 Medium Error - No Seek Complete Medium Error - write fault Medium Error - ID CRC error Medium Error - unrecovered read error Medium Error - read retries exhausted Medium Error - error too long to correct Medium Error - unrecovered read error - auto re-alloc failed Medium Error - unrecovered read error - recommend reassign Medium Error - record not found Medium Error - Data Sync Mark error Medium Error - Data Sync Error - recommend reassign Medium Error - defect list error Medium Error - defect list not available Medium Error - defect list error in primary list Medium Error - defect list error in grown list Medium Error - fewer than 50% defect list copies Medium Error - medium format corrupted Medium Error - format command failed Hardware Error - no index or sector Hardware Error - no seek complete Hardware Error - write fault Hardware Error - track following error Hardware Error - unrecovered read error in reserved area Hardware Error - Data Sync Mark error in reserved area Hardware Error - defect list error Hardware Error - defect list error in Primary List Hardware Error - defect list error in Grown List Hardware Error - reassign failed Hardware Error - no defect spare available Hardware Error - unsupported enclosure function Hardware Error - enclosure services unavailable Hardware Error - enclosure services transfer failure Hardware Error - enclosure services refused Hardware Error - enclosure services checksum error Hardware Error - self-test failed Hardware Error - unable to update self-test Hardware Error - internal target failure

Sense Key

112
Illegal Request 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Unit Attention 6 6 6 6 6 6 6 6 6 6 6 6 6 6 1A 20 21 24 25 26 26 26 26 26 2C 35 49 53 53 53 55 55 55 28 29 29 29 29 29 29 29 2A 2A 2A 2A 2A 2A 00 00 00 00 00 00 01 02 03 04 00 01 00 00 01 02 00 01 04 00 00 01 02 03 04 05 06 00 01 02 03 04 05 Illegal Request - parm list length error Illegal Request - invalid/unsupported command code Illegal Request - LBA out of range Illegal Request - invalid field in CDB (Command Descriptor Block) Illegal Request - invalid LUN Illegal Request - invalid fields in parm list Illegal Request - parameter not supported Illegal Request - invalid parm value Illegal Request - invalid field parameter - threshold parameter Illegal Request - invalid release of persistent reservation Illegal Request - command sequence error Illegal Request - unsupported enclosure function Illegal Request - invalid message Illegal Request - media load or eject failed Illegal Request - unload tape failure Illegal Request - medium removal prevented Illegal Request - system resource failure Illegal Request - system buffer full Illegal Request - Insufficient Registration Resources Unit Attention - not-ready to ready transition (format complete) Unit Attention - POR or device reset occurred Unit Attention - POR occurred Unit Attention - SCSI bus reset occurred Unit Attention - TARGET RESET occurred Unit Attention - self-initiated-reset occurred Unit Attention - transceiver mode change to SE Unit Attention - transceiver mode change to LVD Unit Attention - parameters changed Unit Attention - mode parameters changed Unit Attention - log select parms changed Unit Attention - Reservations pre-empted Unit Attention - Reservations released Unit Attention - Registrations pre-empted

Sense Key

113
6 6 6 6 6 6 6 Write Protect 7 2F 3F 3F 3F 3F 3F 5D 27 00 1B 25 3F 43 44 45 47 48 49 4B 4E 4F 1D 05 06 07 08 08 08 08 09 09 00 00 01 02 03 05 00 00 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 03 00 01 Unit Attention - commands cleared by another initiator Unit Attention - target operating conditions have changed Unit Attention - microcode changed Unit Attention - changed operating definition Unit Attention - inquiry parameters changed Unit Attention - device identifier changed Unit Attention - PFA threshold reached Write Protect - command not allowed Aborted Command - no additional sense code Aborted Command - sync data transfer error (extra ACK) Aborted Command - unsupported LUN Aborted Command - echo buffer overwritten Aborted Command - message reject error Aborted Command - internal target failure Aborted Command - Selection/Reselection failure Aborted Command - SCSI parity error Aborted Command - initiator-detected error message received Aborted Command - inappropriate/illegal message Aborted Command - data phase error Aborted Command - overlapped commands attempted Aborted Command - due to loop initialisation Miscompare - during verify byte check operation Illegal request Unit attention Data protect LUN communication failure LUN communication timeout LUN communication parity error LUN communication CRC error vendor specific sense key servo fault

Aborted Command B B B B B B B B B B B B B Other E x x x x x x x x x

Sense Key

114
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 09 0A 0B 0C 0C 0E 12 14 15 15 15 27 29 31 32 32 35 37 3D 3E 40 40 42 4C 5C 5C 5C 65 80 x 04 00 00 00 02 00 00 00 00 01 02 00 00 01 01 02 01 00 00 00 01 02 00 00 00 01 02 00 x 80 head select fault error log overflow aborted command write error write error - auto-realloc failed data miscompare address mark not found for ID field logical block not found random positioning error mechanical positioning error positioning error detected by read of medium write protected POR or bus reset occurred format failed defect list update error no spares available unspecified enclosure services failure parameter rounded invalid bits in identify message LUN not self-configured yet DRAM parity error DRAM parity error power-on or self-test failure LUN failed self-configuration RPL status change spindles synchronised spindles not synchronised voltage fault Vendor specific Vendor specific

References
SPC-4 [1] clause 4.5.6 and annex D.2

Serial attached SCSI

115

Serial attached SCSI


Technical specifications Serial Attached SCSI
Performance Full-duplex with link aggregation (4-ports wide at 24Gbit/s) 3.0Gbit/s at introduction, 6.0Gbit/s available February 2009 Connectivity 10m external cable 255 device port expanders (>65k total devices) SAS-to-SATA compatibility Availability Dual-port HDDs Multi-initiator point-to-point Driver Software-transparent with SCSI

Serial Attached SCSI (SAS) is a communication protocol used to move data to and from computer storage devices such as hard drives and tape drives. SAS is a point-to-point serial protocol that replaces the parallel SCSI bus technology that first appeared in the mid 1980s in data centers and workstations, and it uses the standard SCSI command set. SAS offers backwards-compatibility with second-generation SATA drives. SATA 3Gbit/s drives may be connected to SAS backplanes, but SAS drives may not be connected to SATA backplanes. The T10 technical committee of the International Committee for Information Technology Standards (INCITS) develops and maintains the SAS protocol; the SCSI Trade Association (SCSITA) promotes the technology.

Introduction
A typical Serial Attached SCSI system consists of the following basic components: 1. An Initiator: a device that originates device-service and task-management requests for processing by a target device and receives responses for the same requests from other target devices. Initiators may be provided as an on-board component on the motherboard (as is the case with many server-oriented motherboards) or as an add-on host bus adapter. 2. A Target: a device containing logical units and target ports that receives device service and task management requests for processing and sends responses for the same requests to initiator devices. A target device could be a hard disk or a disk array system. 3. A Service Delivery Subsystem: the part of an I/O system that transmits information between an initiator and a target. Typically cables connecting an initiator and target with or without expanders and backplanes constitute a service delivery subsystem. 4. Expanders: devices that form part of a service delivery subsystem and facilitate communication between SAS devices. Expanders facilitate the connection of multiple SAS End devices to a single initiator port.

Identification and addressing


A SAS Domain is the SAS version of a SCSI domainit consists of a set of SAS devices that communicate with one another by means of a service delivery subsystem. Each SAS port in a SAS domain has a SCSI port identifier that identifies the port uniquely within the SAS domain. It is assigned by the device manufacturer, like an Ethernet device's MAC address, and is typically world-wide unique as well. SAS devices use these port identifiers to address communications to each other.

Serial attached SCSI In addition, every SAS device has a SCSI device name, which identifies the SAS device uniquely in the world. One doesn't often see these device names because the port identifiers tend to identify the device sufficiently. For comparison, in parallel SCSI, the SCSI ID is the port identifier and device name. In fibre channel, the port identifier is a WWPN and the device name is a WWNN. In SAS, both SCSI port identifiers and SCSI device names take the form of a SAS address, which is a 64 bit value, normally in the NAA IEEE Registered format. People sometimes call a SAS address a World Wide Name or WWN, because it is essentially the same thing as a WWN in fibre channel.

116

Comparison with parallel SCSI


The SAS bus operates point-to-point while the SCSI bus is multidrop. Each SAS device is connected by a dedicated link to the initiator, unless an expander is used. If one initiator is connected to one target, there is no opportunity for contention; with parallel SCSI, even this situation could cause contention. SAS has no termination issues and does not require terminator packs like parallel SCSI. SAS eliminates clock skew. SAS allows up to 65,535 devices through the use of expanders, while Parallel SCSI has a limit of 8 or 16 devices on a single channel. SAS allows a higher transfer speed (3 or 6Gbit/s) than most parallel SCSI standards. SAS achieves these speeds on each initiator-target connection, hence getting higher throughput, whereas parallel SCSI shares the speed across the entire multidrop bus. SAS controllers may connect to SATA devices, either directly connected using native SATA protocol or through SAS expanders using SATA Tunneled Protocol (STP). Both SAS and parallel SCSI use the SCSI command-set.

Comparison with SATA


Systems identify SATA devices by their port number connected to the host bus adapter, while SAS devices are uniquely identified by their World Wide Name (WWN). SAS protocol provides for multiple initiators in a SAS domain, while SATA has no analogous provision. Most SAS drives provide tagged command queuing, while most newer SATA drives provide native command queuing, each of which has its pros and cons. SATA uses the ATA command set; SAS uses the SCSI command set. Basic ATA has commands only for direct-access storage. However SCSI commands may be tunneled through ATA for devices such as CD/DVD drives. SAS hardware allows multipath I/O to devices while SATA (prior to SATA 3Gb/s) does not. Per specification, SATA 3Gb/s makes use of port multipliers to achieve port expansion. Some port multiplier manufacturers have implemented multipath I/O using port multiplier hardware. SATA is marketed as a general-purpose successor to parallel ATA and has become common in the consumer market, whereas the more-expensive SAS targets critical server applications. SAS error-recovery and error-reporting use SCSI commands which have more functionality than the ATA SMART commands used by SATA drives. SAS uses higher signaling voltages (8001600mV TX, 2751600mV RX) than SATA (400600mV TX, 325600mV RX). The higher voltage offers (among other features) the ability to use SAS in server backplanes. Because of its higher signaling voltages, SAS can use cables up to 10m (unknown operator: u'strong'ft) long, SATA has a cable-length limit of 1m (unknown operator: u'strong'ft) or 2m (unknown operator: u'strong'ft) for eSATA.

Serial attached SCSI

117

Characteristics
Technical details
The Serial Attached SCSI standard defines several layers (in order from highest to lowest): Application Transport Port Link PHY Physical

Serial Attached SCSI comprises three transport protocols: Serial SCSI Protocol (SSP) for command-level communication with SCSI devices. Serial ATA Tunneling Protocol (STP) for command-level communication with SATA devices. Serial Management Protocol (SMP) for managing the SAS fabric. For the Link and PHY layers, SAS defines its own unique protocol. At the physical layer, the SAS standard defines connectors and voltage levels. The physical characteristics of the SAS wiring and signaling are compatible with and have loosely tracked that of SATA up to the present 6Gbit/s rate, although SAS defines more rigorous physical signaling specifications as well as a wider allowable differential voltage swing intended to allow longer cabling. While SAS-1.0/SAS-1.1 adopted the physical signaling characteristics of SATA at the 1.5Gbit/s and 3Gbit/s rates, SAS-2.0 development of a 6Gbit/s physical rate led the development of an equivalent SATA speed. According to the SCSI Trade Association, 12Gbit/s is slated to follow 6Gbit/s in a future SAS-3.0 specification.[1]

Architecture
SAS architecture consists of six layers Physical layer: defines electrical and physical characteristics differential signaling transmission Three connector types: SFF 8482 SATA compatible SFF 8484 up to four devices SFF 8470 external connector (InfiniBand connector), up to four devices PHY Layer: 8b/10b data encoding Link initialization, speed negotiation and reset sequences Link capabilities negotiation (SAS-2) Link layer: Insertion and deletion of primitives for clock-speed disparity matching Primitive encoding Data scrambling for reduced EMI Establish and tear down native connections between SAS targets and initiators Establish and tear down tunneled connections between SAS initiators and SATA targets connected to SAS expanders
Architecture of SAS layers

Serial attached SCSI Power management (proposed for SAS-2.1) Port layer: Combining multiple PHYs with the same addresses into wide ports Transport layer: Contains three transport protocols: Serial SCSI Protocol (SSP): for command-level communication with SCSI devices Serial ATA Tunneled Protocol (STP): for command-level communication with SATA devices Serial Management Protocol (SMP): for managing the SAS fabric Application layer

118

Topology
An initiator may connect directly to a target via one or more PHYs (such a connection is called a port whether it uses one or more PHYs, although the term wide port is sometimes used for a multi-PHY connection).

SAS Expanders
The components known as Serial Attached SCSI Expanders (SAS Expanders) facilitate communication between large numbers of SAS devices. Expanders contain two or more external expander-ports. Each expander device contains at least one SAS Management Protocol target port for management and may contain SAS devices itself. For example, an expander may include a Serial SCSI Protocol target port for access to a peripheral device. An expander is not necessary to interface a SAS initiator and target but allows a single initiator to communicate with more SAS/SATA targets. A useful analogy: one can regard an expander as akin to a network switch in a network which allows multiple systems to be connected using a single switch port. SAS 1 defined two different types of expander; however, the SAS-2.0 standard has dropped the distinction between the two, as it created unnecessary topological limitations with no realized benefit: An edge expander allows for communication with up to 255 SAS addresses, allowing the SAS initiator to communicate with these additional devices. Edge expanders can do direct table routing and subtractive routing. (For a brief discussion of these routing mechanisms, see below). Without a fanout expander, you can use at most two edge expanders in your delivery subsystem (because you will connect the subtractive routing port of those edge expanders together, and you can't connect any more expanders). To solve this bottleneck, you would use fanout expanders. A fanout expander can connect up to 255 sets of edge expanders, known as an edge expander device set, allowing for even more SAS devices to be addressed. The subtractive routing port of each edge expanders will be connected to the phys of fanout expander. A fanout expander cannot do subtractive routing, it can only forward subtractive routing requests to the connected edge expanders. Direct routing allows a device to identify devices directly connected to it. Table routing identifies devices connected to the expanders connected to a device's own PHY. Subtractive routing is used when you are not able to find the devices in the sub-branch you belong to. This will pass the request to a different branch altogether. Expanders exist to allow more complex interconnect topologies. Expanders assist in link-switching (as opposed to packet-switching) end-devices (initiators or targets). They may locate an end-device either directly (when the end-device is connected to it), via a routing table (a mapping of end-device IDs and the expander the link should be switched to downstream to route towards that ID), or when those methods fail, via subtractive routing: the link is routed to a single expander connected to a subtractive routing port. If there is no expander connected to a subtractive port, the end-device cannot be reached. Expanders with no PHYs configured as subtractive act as fanout expanders and can connect to any number of other expanders. Expanders with subtractive PHYs may only connect to two other expanders at a maximum, and in that

Serial attached SCSI case they must connect to one expander via a subtractive port and the other via a non-subtractive port. SAS-1.1 topologies built with expanders will generally contain one root node in a SAS domain with the one exception case being topologies that contain two expanders connected via a subtractive-to-subtractive port. If it exists, the root node is the expander which is not connected to another expander via a subtractive port. Therefore, if a fanout expander exists in the configuration, it must be the domain's root node. The root node contains routes for all end devices connected to the domain. Note that with the advent in SAS-2.0 of table-to-table routing and new rules for end-to-end zoning, more complex topologies built upon SAS-2.0 rules will not contain a single root node.

119

Connectors
The SAS connector is much smaller than traditional parallel SCSI connectors, allowing for the small 2.5-inch (unknown operator: u'strong'mm) drives. SAS currently provides for point data transfer speeds up to 6Gbit/s, but is expected to reach 12Gbit/s by the year 2012. The physical SAS connector comes in several different variants:[2]
Image Codename Other names Ext./int. No of pins Internal 29 No of devices 1 Comment

SFF-8482

This form factor is designed for compatibility with SATA. The socket is compatible with SATA drives; however, the SATA socket is not compatible with SFF-8482 (SAS) drives. The pictured connector is a drive-side connector. Hi-density internal connector, 2 and 4 lane versions are defined by the SFF standard. Defines SGPIO (extension of SFF 8484), a serial link protocol used usually for LED indicators.

SFF-8484

Internal

32 (19)

4 (2)

SFF-8485

SFF-8470

Infiniband CX4 connector, Molex LaneLink Internal mini-SAS, internal mSAS

External 32

Hi-density external connector (also used as an internal connector).

SFF-8086

Internal

26

This is actually just a particular implementation of SFF-8086, which covers a variety of connectors, including SFF-8087 and SFF-8088 (below). This unnamed 26-circuit unshielded connector type is uncommon, as SFF-8087 is usually used instead. Unshielded 36-circuit implementation of SFF-8086. Molex iPass reduced width internal 4 connector with future 10Gbit/s capability. Shielded 26-circuit implementation of SFF-8086. Molex iPass reduced width external 4 connector with future 10Gbit/s capability.

SFF-8087

Internal mini-SAS, internal mSAS, internal iSAS External mini-SAS, external mSAS, external iSAS

Internal

36

SFF-8088

External 26

Serial attached SCSI

120

Nearline SAS
Nearline SAS or NL-SAS drives are enterprise SATA drives with a SAS interface, head, media, and rotational speed of traditional enterprise-class SATA drives with the fully capable SAS interface typical for classic SAS drives. System and storage vendors like Dell, EMC, Fujitsu, and IBM are offering these disks for SAN arrays, NAS solutions, and server systems. They feature the following benefits compared to SATA:[3] Dual ports allowing redundant paths Ability to connect a device to multiple computers Full SCSI command set Faster interface compared to SATA, up to 30%, no STP (Serial ATA Tunneling Protocol) overhead No need for SATA interposer cards (for high availability of SATA drives SATA interposer cards are needed)

To summarize: Nearline SAS drives are simply big, cheap, and slow SAS drives targeted toward nearline storage.

References
[1] 12Gb/s SAS to be demonstrated at Technology Showcase 2012 May 9 (http:/ / www. scsita. org/ sas-showcase-2012. html) [2] SFF Committee specifications (ftp:/ / ftp. seagate. com/ sff/ ) [3] Desktop, Nearline & Enterprise Disk Drives (http:/ / www. snia. org/ sites/ default/ education/ tutorials/ 2007/ fall/ storage/ WillisWhittington_Deltas_by_Design. pdf) page 20, SATA Compared to SAS (snia education, talk by Willis Whittington, Seagate Technology)

External links
T10 committee (http://www.t10.org) SCSI Trade Association (http://www.scsita.org/) Current draft revision of SAS 2 from T10 (http://www.t10.org/cgi-bin/ac.pl?t=f&f=sas2r15.pdf) (6.83MiB PDF after registration) Seagate whitepaper on Nearline SAS (http://www.dell.com/downloads/global/products/pvaul/en/ nearline-sas.pdf) List of SAS controllers with connector type (http://www.scsi4me.com/sas-connectors.htm)

Serial Storage Architecture

121

Serial Storage Architecture


Serial Storage Architecture (SSA) is a serial transport protocol used to attach disk drives to servers. It was invented by Ian Judd of IBM in 1990. IBM produced a number of successful products based upon this standard before it was overtaken by the more widely adopted Fibre Channel protocol. SSA was promoted as an open standard by the SSA Industry Association, unlike its predecessor the first generation Serial Disk Subsystem. [1] A number of vendors including IBM, Pathlight Technology and Viacom produced products based on SSA. It was also adopted as an ANSI X3T10.1 standard. SSA devices are logically SCSI devices and conform to all of the SCSI command protocols. SSA provides data protection for critical applications by helping to ensure that a single cable failure will not prevent access to data. All the components in a typical SSA subsystem are connected by bi-directional cabling. Data sent from the adaptor can travel in either direction around the loop to its destination. SSA detects interruptions in the loop and automatically reconfigures the system to help maintain connection while a link is restored. Up to 192 hot swappable hard disk drives can be supported per system. Drives can be designated for use by an array in the event of hardware failure. Up to 32 separate RAID arrays can be supported per adaptor, and arrays can be mirrored across servers to provide cost-effective protection for critical applications. Furthermore, arrays can be sited up to 25 metres apart - connected by thin, low-cost copper cables - allowing subsystems to be located in secure, convenient locations, far from the server itself. With its inherent resiliency and ease of use, SSA is deployed in server/RAID environments, where it is capable of providing for up to 80 Mbyte/s of data throughput, with sustained data rates as high as 60 Mbytes/s in non-RAID mode and 35 Mbytes/s in RAID mode.

Link characteristics
The copper cables used in SSA configurations are round bundles of two or four twisted pairs, up to 25 metres long and terminated with 9-pin micro-D connectors. Impedances are 75 ohm single-ended, and 150 ohm differential. For longer-distance connections, it is possible to use fiber-optic cables up to 10km (6 mi) in length. Signals are differential TTL. The transmission capacity is 20 megabytes per second in each direction per channel, with up to two channels per cable. The transport layer protocol is non return to zero, with 8B/10B encoding (10 bits per character). Higher protocol layers were based on the SCSI-3 standard.

Products which used SSA


IBM 7133 Disk expansion enclosures IBM 2105 Versatile Storage Server (VSS) IBM 2105 Enterprise Storage Server (ESS) IBM 7190 SBUS SSA Adapter[2] Pathlight Technology Streamline PCI Host Bus Adapter Pathlight Technology SSA Data Pump Pathlight Technology SAN Gateway

Serial Storage Architecture

122

References
[1] IBM 7133 Serial Disk Systems Presentation Guide P9-10 [2] http:/ / www-01. ibm. com/ support/ docview. wss?uid=pub1gc26727401

Single Connector Attachment


Single Connector Attachment, or SCA, is a type of connection for the internal cabling of SCSI systems. There are two versions of this connector: the SCA-1, which is deprecated, and SCA-2, which is currently in use in most systems. In addition there are Single-Ended (SE) and Low Voltage Differential (LVD) types of the SCA. Since hard disk drives are among the components of a server computer that are the most likely to fail, there has always been demand for the ability to replace a faulty drive without having to shut down the whole system. This technique is called hot-swapping and is one of the main motivations behind the development of SCA. In connection with RAID, for example, this allows for seamless replacement of failed drives. Normally, hard disk drives make use of two cables: one for data and one for power, and they also have their specific parameters (SCSI ID etc.) to be set using jumpers on each drive. Drives employing SCA have only one plug which carries both data and power and also allows them to receive their configuration parameters from the SCSI backplane. The SCA connector for parallel SCSI drives has 80 pins, as opposed to the 68 pin interface found on most modern parallel SCSI drives. Serial SCSI drives have SCA connectors with a smaller number of pins.

SCSI hard drives showing 80-pin SCA connector (top) and 68-pin connector and separate power and configuration jumpers (bottom)

SCSI backplane with 80-pin SCA connectors. Hard Drives are mounted on proprietary hot-swappable caddies.

Some of the pins in SCA connectors are longer than others, so they are connected first and disconnected last. This ensures the electrical integrity of the whole system. Otherwise, the angle at which the plug is inserted into the drive could be the reason for damage because, for instance, the pin carrying the voltage could get connected before its corresponding ground reference pin. The additional length also provides what is known as a pre-charge which provides a means whereby the device is alerted to a pending power surge. That allows a slower transition to full power and thereby makes the device more stable.

Single Connector Attachment

123

To make better use of their hot-plugging capability, SCA drives usually are installed into drive bays into which they slide with ease. At the far end of these bays is the backplane of the SCSI subsystem located with a connector that plugs into the drive automatically when it is inserted. Full hot-swappable functionality still requires the support of other software and hardware components of the system. In particular the operating system and RAID layers will need hot-swap support to enable hard drive hot-swapping to be carried out without shutting down the system.

SPARCstation 20 drive in cradle

Standards
SCSI devices and connectors are specified in SPI-2, SPI-4 and SPI-5 as part of the SCSI-3 Standards Architecture: http://www.t10.org/scsi-3.htm Organization responsible for drafts of the specification documents is the Technical Committee T10: http:/ / www. t10.org/

Tagged Command Queuing


Tagged Command Queuing (TCQ) is a technology built into certain ATA and SCSI[1] hard drives. It allows the operating system to send multiple read and write requests to a hard drive. ATA TCQ is not identical in function to the more efficient native command queuing (NCQ) used by SATA drives[2]. SCSI TCQ does not suffer from the same limitations as ATA TCQ. Before TCQ, an operating system was only able to send one request at a time. In order to boost performance, it had to decide the order of the requests based on its own, possibly incorrect, idea of what the hard drive was doing. With TCQ, the drive can make its own decisions about how to order the requests (and in turn relieve the operating system from having to do so). The result is that TCQ can improve the overall performance of a hard drive if it is implemented correctly.

Overview
For efficiency the sectors should be serviced in order of proximity to the current head position, rather than in the order received. The queue is constantly receiving new requests and fulfilling and removing existing requests, and re-ordering the queue according to the current pending read/write requests and the changing position of the head. The exact reordering algorithm may depend upon the controller and the drive itself, but the host computer simply makes requests as needed, leaving the controller to handle the details. This queuing mechanism is sometimes referred to as "elevator seeking", as the image of a modern elevator in a building servicing multiple calls and processing them to minimise travel illustrates the idea well. If the buttons for floors 5, 2, and 4 are pressed in that order with the elevator starting on floor 1, an old elevator would go to the floors in the order requested. A modern elevator processes the requests to stop at floors in the logical order 2, 4, and 5, without unnecessary travel. Non-queueing disk drives service the requests in the order received, like an old elevator; queueing drives service requests in the most efficient order. This may improve performance slightly in a system used by a single user, but may dramatically increase performance in a system with many users making widely varied requests on the disk surface.

Tagged Command Queuing

124

Comparison of SCSI TCQ, ATA TCQ, and SATA NCQ


SCSI TCQ
SCSI TCQ was the first popular version of TCQ and is still popular today. It allows tasks to be entered into a queue using one of three different modes[3]: head of queue ordered simple In head of queue mode, unique to SCSI TCQ, a task is pushed into the front of a queue, ahead of all other tasks including other pending head of queue tasks.[3][2][4] This mode is not used much because it can cause resource starvation when abused. In ordered mode, a task must execute after all older tasks have completed and before all newer tasks begin to execute (excluding newer head of queue tasks).[3]. Simple mode allows tasks to execute in any order that does not violate the constraints on the tasks in the other two modes.[3] After a command in a task is completed, a notification is sent by the device that completed the command to the host bus adapter.[3] Whether or not SCSI TCQ causes massive interrupt overhead depends on the bus being used to connect the SCSI host bus adapter. On Conventional PCI, PCI-X, PCI Express, and other buses that permit it, first party DMA allows for low interrupt overhead. The older ISA bus required a SCSI host adapter to generate a interrupt to cause the CPU to program the third-party DMA engine to perform a transfer, and then required another interrupt to notify the CPU that a task in the queue was finished,[2] causing high CPU overhead.

SCSI TCQ Tag Length


The SCSI-3 protocol permits 64 bits to be used in the tag field, allowing up to 264 tasks in one task set to be issued before requiring that some of them complete before any more commands be issued[3]. However, different protocols that implement the SCSI protocol might not permit the use of all 64 bits. For example, older parallel SCSI permits 8 bits of tag bits, iSCSI permits up to 32 tag bits, and Fibre Channel permits up to 16 bits of tag with tag 0xFFFF reserved. This flexibility allows the designer of a protocol to trade off queuing ability against cost. Networks that can be large, such as iSCSI networks, benefit from more tag bits to deal with the larger number of disks in the network and the larger latencies such large networks generate, while smaller-scale networks, such as parallel SCSI chains, do not have enough disks or latency to need many tag bits and can save money by using a system supporting fewer bits.

ATA TCQ
ATA TCQ was developed in attempt to bring the same benefits as SCSI to ATA drives. It is available in both Parallel and Serial ATA. This effort was not very successful because the ATA bus started out as a reduced-pin-count ISA bus. The requirement for software compatibility made ATA host bus adapters act like ISA bus devices without first party DMA. When a drive was ready for a transfer, it had to interrupt the CPU, wait for the CPU to ask the disk what command was ready to execute, respond with the command that it was ready to execute, wait for the CPU to program the host bus adapter's third party DMA engine based on the result of that command, wait for the third party DMA engine to execute the command, and then had to interrupt the CPU again to notify it when the DMA engine finished the task so that the CPU could notify the thread that requested the task that the requested task was finished[2]. Since responding to interrupts uses CPU time, CPU utilization rose quickly when ATA TCQ was enabled [2] . Also, since interrupt service time can be unpredictable, there are times when the disk is ready to transfer data but is unable to do so because it must wait for a CPU to respond to the interrupt so that the CPU knows that it needs to program the third party DMA engine[2].

Tagged Command Queuing Therefore, this standard was rarely implemented because it caused high CPU utilization without improving performance enough to make this worthwhile[2]. This standard allows up to 32 outstanding commands per device [4].

125

SATA NCQ
SATA NCQ is a modern standard which drastically reduces the number of required CPU interrupts compared to ATA TCQ. Like ATA TCQ, it allows up to 32 outstanding commands per device[2], but was designed to take advantage of the ability of SATA host bus adapters that are not emulating parallel ATA behavior to support first party DMA[2]. Instead of interrupting the CPU before the task to force it to program the host bus adapter's DMA engine, the hard drive tells the host bus adapter which command it wants to execute, causing the host bus adapter to program its integrated first-party DMA engine with the parameters that were included in the command that was selected by the hard drive when it was first issued, and then the DMA engine moves the data needed to execute the command[2]. To further reduce the interrupt overhead, the drive can withhold the interrupt with the task completed messages until it gathers many of them to send at once, allowing the operating system to notify many threads simultaneously that their tasks have been completed[2]. If another task completes after such an interrupt is sent, the host bus adapter can concatenate the completion messages together if the first set of completion messages has not been sent to the CPU[2]. This allows the hard disk firmware design to trade off disk performance against CPU utilization by determining when to withhold and when to send completion messages[2].

References
[1] in the form of Parallel SCSI, Serial attached SCSI, and Fibre Channel drives [2] Dees, Brian (November/December 2005). "Native command queuing - advanced performance in desktop storage" (http:/ / ieeexplore. ieee. org/ xpl/ freeabs_all. jsp?isnumber=33027& arnumber=1549750& count=13& index=1) (PDF, fee required). IEEE Potentials 24 (4): 47. doi:10.1109/MP.2005.1549750. . [3] "SCSI Architecture Model - 3 (SAM-3)" (http:/ / www. t10. org/ ftp/ t10/ drafts/ sam3/ sam3r14. pdf) (PDF). . Retrieved 2007-02-24. [4] "1532D: AT Attachment with Packet Interface - 7 Volume 1" (http:/ / www. t13. org/ Documents/ UploadedDocuments/ docs2004/ d1532v1r4b-ATA-ATAPI-7. pdf) (PDF). 1532D: AT Attachment with Packet Interface - 7. . Retrieved 2007-01-02.

External links
Can Command Queuing Turbo Charge SATA? (http://www.tomshardware.com/reviews/ command-queuing-turbo-charge-sata,922.html) by Patrick Schmid, and Achim Roos of Tom's Hardware Guide

USB Attached SCSI

126

USB Attached SCSI


USB Attached SCSI (UAS) is a computer protocol used to move data to and from USB storage devices such as hard drives, solid-state drives, and thumb drives. UAS depends on the USB protocol, and uses the standard SCSI command set. UAS is defined across two standards, the T10 "USB Attached SCSI" (T10/2095-D) referred to as the "UAS" specification, and the USB "Universal Serial Bus Mass Storage Class - USB Attached SCSI Protocol (UASP)" specification. The T10 technical committee of the International Committee for Information Technology Standards (INCITS) develops and maintains the UAS specification; the SCSI Trade Association (SCSITA) promotes the UAS technology. The USB mass-storage device class (MSC) Working Group develops and maintains the UASP specification; the USB Implementers Forum, Inc. (USB-IF) promotes the UASP technology.

UAS Goals
Designed to directly address the failings of the USB mass-storage device class Bulk-Only Transports (BOT) Enables Command Queuing and out-of-order completions for USB mass-storage devices Eliminates software overhead for SCSI command phases Up to 64K commands may be queued SCSI SAM-4 compliant USB 3.0 SuperSpeed and USB 2.0 High-speed versions defined USB 3.0 SuperSpeed host controller (xHCI) hardware support, no software overhead for out-of-order commands USB 2.0 High-speed Significantly enables command queuing in USB 2.0 drives Streams were added to the USB 3.0 SuperSpeed protocol for supporting UAS out-of-order completions USB 3 host controller (xHCI) provides hardware support for Streams

External links
USB Attached SCSI Protocol (UASP) v1.0 and Adopters Agreement [1]

References
[1] http:/ / www. usb. org/ developers/ devclass_docs/ uasp_1_0. zip

Very-high-density cable interconnect

127

Very-high-density cable interconnect


A very-high-density cable interconnect (VHDCI) is a 68-pin connector that was introduced in the SPI-3 document of SCSI-3. The VHDCI connector is a very small connector that allows placement of four wide SCSI connectors on the back of a single PCI card slot. Physically, it looks like a miniature Centronics type connector. It uses the regular 68-contact pin assignment. VHDCI cables have also been used by NVidia as an external PCI Express 8-lane interconnect, and used in Quadro Plex VCS.
A VHDCI connector. ATI Technologies is now using VHDCI connectors on the FireMV 2400 to convey two DVI and two VGA signals on a single connector, and ganging two of these connectors side-by-side in order to allow the FireMV 2400 to be a low-profile quad display card.

Juniper Networks uses VHDCI connectors for their 12- and 48-port 100Base-TX PICs (physical interface cards). The cable connects to the VHDCI connector on the PIC on one end, via an RJ-21 connector on the other end, to an RJ-45 patch panel.

World Wide Name


A World Wide Name (WWN) or World Wide Identifier (WWID) is a unique identifier used in storage technologies including Fibre Channel, Advanced Technology Attachment (ATA) or Serial Attached SCSI (SAS). A WWN may be employed in a variety of roles, such as a serial number or for addressability; for example, in Fibre Channel networks, a WWN may be used as a WWNN (World Wide Node Name) to identify a switch, or a WWPN (World Wide Port Name) to identify an individual port on a switch. Two WWNs which do not refer to the same thing should always be different even if the two are used in different roles, i.e. a role such as WWPN or WWNN does not define a separate WWN space. The use of burned-in addresses and specification compliance by vendors is relied upon to enforce uniqueness.

Formats
Each WWN is an 8 or 16 byte number, the length and format of which is determined by the most significant four bits, which are referred to as an NAA (Network Address Authority.) The remainder of the value is derived from an IEEE OUI (often the term "Company Identifier" is used as a synonym for OUI) and vendor-supplied information. Each format defines a different way to arrange and/or interperate these components. OUIs are used with the U/L and multicast bits zeroed, or sometimes even omitted (and assumed zero.) The WWN formats include[1]: "Original" IEEE formats are essentially a two-byte header followed by an embedded MAC-48/EUI-48 address (which contains the OUI.) The first 2 bytes are either hex 10:00 or 2x:xx (where the x's are vendor-specified) followed by the 3-byte OUI and 3 bytes for a vendor-specified serial number. Thus, the difference between NAA 1 format and NAA 2 format is merely the presence of either a zero pad or an extra 3 nibbles of vendor information. "Registered" IEEE formats dispense with padding and place the OUI immediately after the NAA. The OUI is no longer considered to be part of a MAC-48/EUI-48 address. For NAA 5 format, this leaves 9 contiguous nibbles for a vendor-defined value. This is the same format used by the companion NAA 6 format, the only difference

World Wide Name being a 16-byte number space is assumed, rather than an 8-byte number space. This leaves a total of 25 contiguous nibbles for vendor-defined values. "Mapped EUI-64" formats manage to fit an EUI-64 address into an 8-byte WWN. Since the NAA is mandatory, and takes up a nibble, this represents a four-bit deficit. These four bits are recouped through the following tricks: First, two bits are stolen from the NAA by allocating NAAs 12, 13, 14, and 15 to all refer to the same format. Second, the remaining two bits are recouped by omitting the U/L and multicast bits from the EUI-64's OUI. When reconstructing the embedded EUI-64 value, the U/L and multicast bits are assumed to have carried zero values.

128

Presentation
WWN addresses are predominantly represented as colon separated hexadecimal octets, MSB-first, with leading zeros. However, there is much variance between vendors[2].

List of OUIs commonly seen as WWN Company Identifiers


00:50:76 IBM 00:17:38 IBM, formerly XIV. 00:A0:98 NetApp 00:01:55 Promise Technology, Inc 00:60:69 Brocade Communications Systems 00:05:1E Brocade Communications Systems, formerly owned by Rhapsody Networks 00:60:DF Brocade Communications Systems, formerly CNT Technologies Corporation 00:05:30 Cisco 00:05:73 Cisco 00:05:9b Cisco 00:E0:8B QLogic HBAs, original identifier space 00:1B:32 QLogic HBAs. new identifier space starting to be used in 2007 00:C0:DD QLogic FC switches 00:90:66 QLogic formerly Troika Networks 00:11:75 QLogic formerly PathScale, Inc 08:00:88 Brocade Communications Systems, formerly McDATA Corporation. WWIDs begin with 1000.080 00:60:B0 Hewlett-Packard - Integrity and HP9000 servers. WWIDs begin with 5006.0b0 00:11:0A Hewlett-Packard - ProLiant servers. Formerly Compaq. WWIDs begin with 5001.10a 00:01:FE Hewlett-Packard - EVA disk arrays. Formerly Digital Equipment Corporation. WWIDs begin with 5000.1fe1 or 6000.1fe1 00:17:A4 Hewlett-Packard - MSL tape libraries. Formerly Global Data Services. WWIDs begin with 200x.0017.a4 00:60:48 EMC Corporation, for Symmetrix 00:60:16 EMC Corporation, for CLARiiON/VNX 00:10:86 ATTO Technology 00:23:29 DDRdrive LLC [3], for DDRdrive X1 00:A0:B8 Symbios Logic Inc. 00:0C:50 Seagate Technology 00:00:C9 Emulex 00:14:EE Western Digital

World Wide Name

129

External links
IEEE OUI list [4]

References
[1] IEEE. "Guidelines for Fibre Channel Use of the Organizationally Unique Identifier (OUI)" (http:/ / standards. ieee. org/ develop/ regauth/ tut/ fibre. pdf). . [2] Richard Butler. "WWN Notes v1.3" (https:/ / community. emc. com/ servlet/ JiveServlet/ previewBody/ 5136-102-1-18154/ WWN_Notes_v1. 3. pdf). . [3] http:/ / www. ddrdrive. com/ [4] http:/ / standards. ieee. org/ regauth/ oui/ oui. txt

Article Sources and Contributors

130

Article Sources and Contributors


SCSI Source: http://en.wikipedia.org/w/index.php?oldid=494082852 Contributors: 16@r, 193.203.83.xxx, 2fort5r, 2strokewool, 777sms, 8.253, A876, Aarktica, Adamantios, Addw, AdeMiami, Adrian, Agentbla, Ahoerstemeier, Akasnakeyes, Al Lemos, Alansohn, Aldenrw, Aldie, Alecv, Alex, AlistairMcMillan, Andrew sh, Angelic Wraith, Antimatt, Arjun01, Arunajay, Atama, Austinmurphy, Avapoet, BFunk, Badgernet, Balabiot, Benefros, Berdidaine, Bergert, Bigdumbdinosaur, Bletch, Blugill, Bmicomp, Bobanny, Bobblewik, Bookinvestor, Boooooooooob, Borgx, Brandon, Bumm13, Butros, CALR, CB1226, Cab88, CarbonLifeForm, Ceros, CesarB's unpriviledged account, ChadCloman, Charlieleake, CharlotteWebb, Chmod007, ChristTrekker, Christian75, Ckmac97, Cohesion, Colin Keigher, ComCat, Commander Keane, Conversion script, Corti, CostyaV, Crazycomputers, Crdillon, Crystina7, Cy jvb, Cybercobra, Damieng, Dan aka jack, DanielRigal, DarthShrine, Dasparwani, DavidDouthitt, DeadEyeArrow, Deflective, Deineka, Demonkoryu, Dhp1080, Diannaa, Disavian, DmitryKo, DocWatson42, Douglas goodall, Dpbsmith, DragonHawk, Droll, Dtcdthingy, Duducoutinho, Dysprosia, E2eamon, Eagles2016, Edderso, Edokter, Electron9, Eleven81, Eloquence, Engineerism, Epbr123, Everyking, Ewlyahoocom, Exert, Extraordinary, FAchi, Flameeyes, Flockmeal, Florian Nanu, Flying fish, Francs2000, Fred J, FrozenPurpleCube, Gaurav, Gdo01, Gekedo, Gene Nygaard, Ghaberek, Ghakko, Ghettoblaster, Giftlite, Giraffedata, Gjs238, Guy Harris, Hac13, Hadal, Haham hanuka, HarisM, Hbent, Hellboy4311, Hephaestos, Heron, Hopp, Ht1848, ILike2BeAnonymous, Ian Pitchford, Ian.yy.huang, Ilcastro, JTN, James Foster, Jeh, Jesse Viviano, Jim10701, Joezamboni, John Vandenberg, JohnAlbertRigali, JohnI, Jonverve, KSiimson, Kbdank71, Kewp, Klausness, Koman90, Kozuch, Krawi, Kubanczyk, Kwamikagami, LFaraone, Latka, LeaveSleaves, Lee Cremeans, Lee Daniel Crocker, Lenehey, Lightmouse, Luckyherb, Luggerhead, Luk, M8R-lc06bv, MER-C, MSGJ, Mailer diablo, Marcok, Martarius, Matt Chase, Matt Crypto, MatthewWilcox, Maurreen, Maury Markowitz, Mausy5043, Mav, Mclayto, MichaelJanich, MikeStone2012, Mirror Vax, Mishrsud, Mitch Ames, Modster, Mscritsm, Mulad, Music Sorter, Nakon, Napalm Llama, Ndenison, Neilm, NellieBly, Nicholsr, Nicolas Melay, Nightscream, Nikai, Nixdorf, Numa, Ohconfucius, Otac0n, Pagingmrherman, Patcat88, Paul Suhler, Pelago, Philip Trueman, Piano non troppo, Pidgeot, Pjoef, Pmc, Pol098, Poweroid, Profoss, Public Menace, Pweltz, Qxz, RDBrown, RHaden, RJFJR, Rammer, Raptor007, Rdsmith4, RedWolf, RedWordSmith, Reddi, Redgrittybrick, Reedy, Requestion, Rich Farmbrough, Rilak, RivRubicon, Rjgodoy, Rjwilmsi, Rolfvandekrol, Rrohbeck, Rwwww, SNx, Sabre centaur, Scootey, Scorpion7, Scsidrafter, Seb az86556, Sergei, Serpent's Choice, Sfoskett, Shlbrt, Sietse Snel, Simetrical, Sin-man, Smiteri, Soap, SolKarma, Solitude, Some jerk on the Internet, SpaceFlight89, Speters33w, Sridhar.gattu, Srikeit, Ste.Ri, Steveprutz, StorageMania, Sunku here, Surv1v4l1st, Tannin, TechControl, TechPurism, Teknic, Tempshill, TeslaMaster, The Anome, TheJosh, Tide rolls, Tigertiger, Tnsnick, Tnxman307, Tolien, Tom94022, Toreau, Tubby, UncleBubba, Uriyan, VMS Mosaic, VampWillow, Versageek, Vidarlo, Whosyourjudas, WideArc, Wilko12, William Avery, Williamv1138, Winthrowe, Wisden17, Woohookitty, Wtshymanski, Zac67, Zoicon5, Zondor, , 527 anonymous edits Active terminator Source: http://en.wikipedia.org/w/index.php?oldid=407382651 Contributors: Bluemoose, Bryan Derksen, Cyrius, Gerbrant, Nibblus, Saxbryn Advanced SCSI Programming Interface Source: http://en.wikipedia.org/w/index.php?oldid=471971620 Contributors: Alecv, Anon lynx, Episteme-jp, Eras-mus, Everyking, Frap, Glenfarclas, Helix84, Kbdank71, Liftarn, MarchHare, Marcika, Mirror Vax, Mobius27, Nixeagle, Rich Farmbrough, Ruud Koot, Sandstein, Sbmeirow, Sbonds, Sdrtirs, Spikey, T chan3819, The Anome, Tony1, Vina, Voidvector, Zoe, 29 anonymous edits SCSI architectural model Source: http://en.wikipedia.org/w/index.php?oldid=460584925 Contributors: Avinash.shrimali, Balabiot, Bezenek, JForget, Kubanczyk, Luk, Melrin, Neilm, Pboyd04, Robenel, 2 anonymous edits SCSI CDB Source: http://en.wikipedia.org/w/index.php?oldid=487744844 Contributors: AlexandriNo, Drilnoth, Mysid, Neilm, Pboyd04, Pol098, Tek-ops, 3 anonymous edits SCSI check condition Source: http://en.wikipedia.org/w/index.php?oldid=332272400 Contributors: Neilm, Ste.Ri SCSI connector Source: http://en.wikipedia.org/w/index.php?oldid=476555561 Contributors: Adamantios, Adeebee, Akb4, Bigdumbdinosaur, Bobblewik, Brandon, Brettstrawbridge, Bumm13, CB1226, Cab88, Canterbury Tail, Chowbok, ChrisHodgesUK, ChristTrekker, Claunia, Cleared as filed, Cybercobra, Darklilac, Forever Old, Frettled, Gadget850, Haikupoet, Haukurth, Hellbus, IMSoP, Illumined, Improv, Joeinwap, La gaie, Letdorf, Lupin, MSGJ, Mac128, Mahjongg, MeekMark, Mixabest, Neilm, Nicolaasuni, Oaktree b, Pairadox, PigFlu Oink, Pinball22, Pweltz, RavenWing71, Rilak, Royan, Sdrtirs, Shieldforyoureyes, Smallpond, Speters33w, Steveprutz, Wbm1058, William Allen Simpson, 41 anonymous edits SCSI contingent allegiance condition Source: http://en.wikipedia.org/w/index.php?oldid=381341427 Contributors: Greenrd, Neilm, Pearle, R. S. Shaw, Splintercellguy, Ste.Ri, 3 anonymous edits Domain validation Source: http://en.wikipedia.org/w/index.php?oldid=252306727 Contributors: Dialectric, RJHall, Stoph, 3 anonymous edits Electrical termination Source: http://en.wikipedia.org/w/index.php?oldid=447691102 Contributors: Adamantios, Af64writer, Alan Liefting, AlexeyV, Andres, AvicAWB, Btilm, Deville, EhSeuss, Electron9, Ewlyahoocom, Flightsoffancy, Gene Nygaard, Hellbus, HexaChord, Jim.henderson, Kenyon, Kvng, Leszek Jaczuk, M jurrens, Mandarax, Mlewis000, Nagle, Nbarth, OAS, RockMaestro, Rogerbrent, Tigga en, Underpants, 26 anonymous edits Enclosure Services Interface Source: http://en.wikipedia.org/w/index.php?oldid=332195080 Contributors: Luk, Neilm, Pagrashtak, That Guy, From That Show! Hard Disk 20SC Source: http://en.wikipedia.org/w/index.php?oldid=467859338 Contributors: Chip512007, Chris the speller, GoingBatty, John Nevard, Kbdank71, Mac128, Mirror Vax, Tamer of hope, 9 anonymous edits Host adapter Source: http://en.wikipedia.org/w/index.php?oldid=495093987 Contributors: AVM, Aechols, Apapadop, Arunajay, Bingoeleven, Bovineone, Braghadees, Brianski, Colfer2, Deineka, EncMstr, Georgelza, Gobs04, Guy Harris, Harryboyles, I already forgot, Jamelan, Jharcourt, Jordi Roqu, Kb, KelleyCook, Kubanczyk, Kvedulv, Liliuokalani, MarkBrooks, Michael Hardy, Mkswanson, Mormon65, Mrocha, Mrzaius, Mulad, Noogenesis, Pedant17, Radiojon, RedWolf, Reedy, Rwwww, Sanspeur, SchreiberBike, SteinbDJ, Timbatron, TygerStripe, W Nowicki, 103 anonymous edits HyperSCSI Source: http://en.wikipedia.org/w/index.php?oldid=437888979 Contributors: Cburnett, Frap, Glenn, IronOak, Kaze0010, Kubanczyk, Ronz, Rwwww, W Nowicki, 12 anonymous edits iSCSI Source: http://en.wikipedia.org/w/index.php?oldid=491882078 Contributors: A876, Aarondailey, Abisys, Adcomcorp, Alansohn, Albanaco, Aldie, Allenc28, AnatolyVilchinsky, Andysontheroad, Aneczkab, Anna Lincoln, Anthony Fok, AviN1, Banderer, Barek, Bart.vanassche, Bdelisle, Benley, Bggoldie, Biot, Blowdart, Boleon, Bookinvestor, Bousquf, Bovineone, Brianicus, Brucela, Btilm, Butlerm, CRGreathouse, Cain Mosni, Canaima, Carey Evans, Catfish777, Celestra, Ceros, CesarB, Charles Gaudette, Charleswj, Chowbok, Chris the speller, Chrisbolt, Coffee, Col.panik, Corti, CostyaV, Cpeel, Csabo, Custardninja, Cy jvb, DMahalko, DNFCorp, DStoykov, DavidDouthitt, Deflective, Demitsu, DenGer, Djj, Dmdwiggi, Dmeranda, Dominic.ashton, Drmies, Edcolins, Eddyq, EdgeOfEpsilon, Epbr123, Ericyu, Fcami, Fostermarkd, Franke3c, Fredtorrey, Funandtrvl, Georgewilliamherbert, Glenn, Grstain, Gudeldar, Gvvua, Haakon, Haidut, Hellkeeper, Henriok, Hpcanswers, Hschlarb, I already forgot, Ingvarr2000, Iolar, Jackfork, Jacob1044, Jadecristal, Jakllsch, Jc monk, JeLuF, Jeroenr, Jerome Charles Potts, Jesse Viviano, Jfcotton, Jliv, Joey Novak, Jonverve, Kaze0010, Kbrose, Ke4qqq, Kenleezle, Ketiltrout, Kevintolly, Khatru2, Kiddington, Klaus100, KnightRider, Kubanczyk, Kwamikagami, Lmatt, Lyod, Maderiaboy, Malis-cs, Mallboro, MarcNozell, Marcfl, Marek69, Matt Crypto, Melnakeeb, MeltBanana, Michael Hardy, Mor Griv, Music Sorter, NJM, Naddy, NapoliRoma, Nishkid64, Nono64, Olmsfam, Orokusaki, P shadoh, PHaze, Pagingmrherman, Paisa, Paul Koning, Pedant17, Perfecto, Peytonbland, Phatom87, Philipcurrito, Pmc, Pooua, Project2501a, Rasmus Faber, Raysonho, Rchandra, Riaanvn, Rich Farmbrough, Rocketshiporion, Ronz, Rose Garden, Ruleke, Rwwww, S36e175, SANguru, SHayter, Savisko, Seitz, Sfoskett, Shamasis, Sietse Snel, Simonefrassanito, Singerw1, Skolor, Skouperd, Snowolf, Starbane, SteinbDJ, Stereo, Stereoroid, StorageSys, Storagegeek007, Sunnyvegas, Suruena, Swooshiain, Tedder, TekMason, Terence626, The Anome, The Thing That Should Not Be, Thtse, Thumperward, Titaniumlegs, Tqbf, Trasz, Tulcod, Uhw, UncleBubba, Unyoyega, VadZ, Verdatum, Vickaul, Vrenator, Vy0123, W Nowicki, Whosyourjudas, Xunillator, Zink Dawg, 624 anonymous edits iSCSI Boot Firmware Table Source: http://en.wikipedia.org/w/index.php?oldid=486272415 Contributors: Alvin Seville, Bearcat, Docu, Jeremy Visser, Rangita, ThorstenStaerk, W Nowicki, 1 anonymous edits ISCSI Conformance Testing and Testing Tool Requirement Source: http://en.wikipedia.org/w/index.php?oldid=427602895 Contributors: Lancests, Malcolma, Rich Farmbrough, Tubocurarine, W Nowicki iSCSI Extensions for RDMA Source: http://en.wikipedia.org/w/index.php?oldid=467981771 Contributors: Bunnyhop11, Erezz, Frap, Grin, Hpcanswers, Phatom87, W Nowicki, 3 anonymous edits Key Code Qualifier Source: http://en.wikipedia.org/w/index.php?oldid=475836106 Contributors: Afalbrig, Ankle, Chrisbolt, Dancrumb, Droge, Jbl1975, Kbdank71, Neilm, Rogerdpack, Ste.Ri, TechPurism, 16 anonymous edits Layer Jump Recording Source: http://en.wikipedia.org/w/index.php?oldid=486690893 Contributors: Aitias, Daviburg, Drjt87, Miracle Pen, Open2universe, Sadads, Zotel, 4 anonymous edits List of SCSI message codes Source: http://en.wikipedia.org/w/index.php?oldid=427427256 Contributors: AJim, Apophos, Baccyak4H, Melaen, Neilm, Retired username, 4 anonymous edits

Article Sources and Contributors


Logical block addressing Source: http://en.wikipedia.org/w/index.php?oldid=496562805 Contributors: Ahsan386fast, Alai, Anna Lincoln, AnnaP, Astronouth7303, B9136057, Bezenek, Bobo192, Callmejosh, Chealer, Chris01720, Ckywiki, Croperz, Diverman, DmitryKo, EvilReborn, Finlay McWalter, Frap, GeorgeMoney, Hgrosser, Jeh, Jengelh, Joey.dale, Kajervi, Kbdank71, Klassikmusik, Kocio, Liberoo, Luk, M1ss1ontomars2k4, MWFarrar, Madoka, MattGiuca, Mboverload, Meconopsis, Merovingian, Michael Hardy, Mirror Vax, Mulad, Music Sorter, Nayuki, Neilm, Ozga, Pedant17, R. S. Shaw, Richard W.M. Jones, Romanc19s, SandStone, SimonP, Simonfl, Skapur, Slady, Tarquin, TheStarman, Thorwald, Unyoyega, W Hukriede, Widefox, WikHead, Williampoetra, Yggdrsil, Yuhong, Zondor, 86 anonymous edits Logical Unit Number Source: http://en.wikipedia.org/w/index.php?oldid=491588143 Contributors: Abune, Amitabdev, Balabiot, Bloodshedder, CanisRufus, Cmckulka, Colonel Warden, Daniel7066, Defixio, Dgcaller, Eddycurrents, Franl, Frap, Giraffedata, J'raxis, Jandalhandler, JonathanLivingston, Jonathanchaitow, Kubanczyk, Lucky 6.9, Luk, MeltBanana, Mike Schwartz, Mirror Vax, Mr. Shoeless, NBS, NapoliRoma, Oneiros, Promethean, R. S. Shaw, Reedy, Rich Farmbrough, Richard New Forest, Rwwww, Sanspeur, Sean William, Sfoskett, Sietse Snel, Soumyasch, Splat215, Tide rolls, Tijuana Brass, Zagyg, 69 anonymous edits Mount Rainier (packet writing) Source: http://en.wikipedia.org/w/index.php?oldid=473284244 Contributors: Abdull, AlistairMcMillan, Angela, Appraiser, Aquarium h2o, Belg4mit, Betacommand, Bruce89, CesarB, Ceyockey, Choppingmall, Crissov, Cybercobra, Dan100, Docu, ESkog, Evice, FT2, Franklindemann, Gayasri, Gothmog.es, Hhielscher, Hugh Bennett, Idleguy, Jerryobject, Jesse Viviano, Kingpin13, Kubanczyk, Lexicon, Matthiaspaul, Neilc, Nosebud, Numa, Quarl, QuillOmega0, R6MaY89, Rajiv Varma, Rich Farmbrough, SkyWalker, Thepatriots, Thumperward, Tim1988, Timbo76, VanBurenen, Xerces8, Y2kbug, 28 anonymous edits MultiMedia Commands Source: http://en.wikipedia.org/w/index.php?oldid=494480205 Contributors: Bearcat, Electron9, Firenads, Sergei, Specious, Vadmium, 11 anonymous edits NCR 5380 Source: http://en.wikipedia.org/w/index.php?oldid=378805416 Contributors: Alecv, Iridescent, Mirror Vax, RevelationDirect, Rilak, Rjwilmsi, 2 anonymous edits NCR 53C9x Source: http://en.wikipedia.org/w/index.php?oldid=445191785 Contributors: Alecv, Bigdumbdinosaur, Cburnett, Instinct, Iridescent, Mirror Vax, RevelationDirect, Rilak, RxS, Ryanaxp, Third and, Toffile, 2 anonymous edits Parallel SCSI Source: http://en.wikipedia.org/w/index.php?oldid=495834809 Contributors: AJim, Ace of Spades, Alecv, Alll, Bigdumbdinosaur, Bobblewik, ChristTrekker, Cy jvb, Digital Brains, DragonHawk, Ewlyahoocom, Ex Puexto, Gadfium, Gasponia, Gene Nygaard, Guy Harris, Kundor, Lavenderbunny, Maxim Masiutin, Metageek, Mild Bill Hiccup, Mo ainm, Music Sorter, Neilm, Pboyd04, Reedy, Rlobkovsky, RockMFR, Ryan Rutledge, SDC, StaticSan, Ste.Ri, The Trwen, 17 anonymous edits Persistent binding Source: http://en.wikipedia.org/w/index.php?oldid=456501444 Contributors: A State Of Trance, Amrithraj, Fabrictramp, Logan, Pnm, Robsavoie, StevenDH, Thibault.ketterer, Triwbe, Vizjim, ZZyXx, 8 anonymous edits SAF-TE Source: http://en.wikipedia.org/w/index.php?oldid=353908206 Contributors: DGG, KurtRaschke, Ospalh, Zac67, 1 anonymous edits SCSI / ATA Translation Source: http://en.wikipedia.org/w/index.php?oldid=271965911 Contributors: Benefros, JaGa SCSI command Source: http://en.wikipedia.org/w/index.php?oldid=490379953 Contributors: A D Monroe III, AlexBadea, Alison, Apophos, Arnoudmulder, Balabiot, Bigdumbdinosaur, Bub's, Chrisbolt, Doug363, Eeekster, Frodet, Grokus, Interiot, Mailer diablo, Neilm, Pol098, Recognizance, Ste.Ri, Titaniumlegs, 16 anonymous edits SCSI diagnostic pages Source: http://en.wikipedia.org/w/index.php?oldid=332272409 Contributors: Neilm, 1 anonymous edits SCSI element codes Source: http://en.wikipedia.org/w/index.php?oldid=317989678 Contributors: Amalas, Neilm, WVhybrid, 1 anonymous edits SCSI element status codes Source: http://en.wikipedia.org/w/index.php?oldid=317989688 Contributors: Amalas, Neilm, Tmopkisn, WVhybrid, 2 anonymous edits SCSI Enclosure Services Source: http://en.wikipedia.org/w/index.php?oldid=330289036 Contributors: Deor, EagleOne, Frap, Giraffedata, Gogo Dodo, Luk, Neilm, Oneiros, Radagast83, Robenel, Sagaciousuk, Sfan00 IMG, Styrofoam1994, Tomchiukc, Zac67, 7 anonymous edits SCSI Format Unit Command Source: http://en.wikipedia.org/w/index.php?oldid=490379563 Contributors: Bigdumbdinosaur, Dialectric, Eeekster, Kbolino, Neilm, Strib, Uncle G SCSI high byte termination Source: http://en.wikipedia.org/w/index.php?oldid=487482983 Contributors: Neilm, 3 anonymous edits SCSI host adapter Source: http://en.wikipedia.org/w/index.php?oldid=482364092 Contributors: Balabiot, Camembert, Frap, Gardar Rurak, Ghakko, Hqduong, JTN, Kimiko, MrJones, Nikai, PKT, Posix memalign, RJFJR, Reddi, Tannin, Tohobbes, 6 anonymous edits SCSI initiator and target Source: http://en.wikipedia.org/w/index.php?oldid=488159444 Contributors: Dcfleck, Fetchcomms, Franl, Funandtrvl, Gardar Rurak, Khatru2, Kubanczyk, Mikeblas, Neilm, Salamurai, Stephan Leeds, Thomas.uhl, Whosyourjudas, 6 anonymous edits SCSI Inquiry Command Source: http://en.wikipedia.org/w/index.php?oldid=440370643 Contributors: Bigdumbdinosaur, Midnightcomm, Mysid, Neilm, Thtse, Uncle G, 2 anonymous edits SCSI log pages Source: http://en.wikipedia.org/w/index.php?oldid=332223989 Contributors: Eastlaw, Mirror Vax, Neilm SCSI Log Select Command Source: http://en.wikipedia.org/w/index.php?oldid=490380382 Contributors: Apophos, Eeekster, Mysid, Neilm, Richielary, 4 anonymous edits SCSI Log Sense Command Source: http://en.wikipedia.org/w/index.php?oldid=424045859 Contributors: Apophos, Graingert, Neilm, Nv8200p, 3 anonymous edits SCSI mode pages Source: http://en.wikipedia.org/w/index.php?oldid=465864264 Contributors: Apophos, Luchnikov, Mirror Vax, Neilm, Wiszkowski, 1 anonymous edits SCSI Mode Select Command Source: http://en.wikipedia.org/w/index.php?oldid=490379844 Contributors: Apophos, Eeekster, Mysid, Neilm SCSI Mode Sense Command Source: http://en.wikipedia.org/w/index.php?oldid=493888382 Contributors: Mysid, Neilm, Ofiachain, 5 anonymous edits SCSI Pass Through Interface Source: http://en.wikipedia.org/w/index.php?oldid=437198186 Contributors: AnatolyVilchinsky, Anon lynx, FleetCommand, Gaius Cornelius, Glenfarclas, Kbrose, Rror, Voidvector, 6 anonymous edits SCSI Pass-Through Direct Source: http://en.wikipedia.org/w/index.php?oldid=487234561 Contributors: Aaron44126, Andareed, Anon lynx, Chzz, Cyrus XIII, DanielPharos, Devin122, Drw25, Findus1, FleetCommand, Frap, Fullgames, Jackie, JensRex, Joseph881, LkMsWb, Macraig, Oldmankdude, Phatom87, Sillent DX, SmOtNeT, Thealliedhacker, Uzume, Warren, Xooon, 22 anonymous edits SCSI Peripheral Device Type Source: http://en.wikipedia.org/w/index.php?oldid=486485614 Contributors: Ajitk, Bigdumbdinosaur, Darkwind, Download, Fivemack, Greenrd, Justintwr, Neilm, Pol098, 4 anonymous edits SCSI RDMA Protocol Source: http://en.wikipedia.org/w/index.php?oldid=490270768 Contributors: AlfredR, Bart.vanassche, Chris Chittleborough, Frap, Gringo5000, Indulis.b, Marcfl, Ottawahitech, 14 anonymous edits SCSI Read Capacity Command Source: http://en.wikipedia.org/w/index.php?oldid=490378103 Contributors: Eeekster, ILike2BeAnonymous, Mion, Mysid, Neilm, Stwalkerster, Uncle G SCSI Read Commands Source: http://en.wikipedia.org/w/index.php?oldid=436507710 Contributors: Apophos, Electron9, Mysid, Neilm, PigFlu Oink, Rjwilmsi, 5 anonymous edits SCSI Receive Diagnostic Results Command Source: http://en.wikipedia.org/w/index.php?oldid=490379661 Contributors: Eeekster, Greenrd, Mysid, Neilm, 1 anonymous edits SCSI Report LUNs Command Source: http://en.wikipedia.org/w/index.php?oldid=428546846 Contributors: Greenrd, Grokus, Johnvlevy, Katharineamy, Mattg82, Woohookitty SCSI Request Sense Command Source: http://en.wikipedia.org/w/index.php?oldid=495375402 Contributors: Apophos, Benefros, Bigdumbdinosaur, Mysid, Neilm, Rogerdpack, Uncle G, 7 anonymous edits SCSI Send Diagnostic Command Source: http://en.wikipedia.org/w/index.php?oldid=332223950 Contributors: Greenrd, Luk, Mysid, Neilm, Uncle G, 1 anonymous edits SCSI standalone enclosure services Source: http://en.wikipedia.org/w/index.php?oldid=374273162 Contributors: Giraffedata, Neilm, 1 anonymous edits

131

Article Sources and Contributors


SCSI Start Stop Unit Command Source: http://en.wikipedia.org/w/index.php?oldid=322043432 Contributors: Bigdumbdinosaur, Mysid, Neilm, Ste.Ri SCSI Status Code Source: http://en.wikipedia.org/w/index.php?oldid=490380158 Contributors: Apophos, Eeekster, Luk, Neilm, Rickjpelleg, Ste.Ri, TechPurism, The Rambling Man, 2 anonymous edits SCSI terminating resistor Source: http://en.wikipedia.org/w/index.php?oldid=404313983 Contributors: 0807127c, Bearcat, Beeblebrox, BoomerAB, Dank, Dekart, Jamie Razek, Koppas, Radiojon, Rpyle731, Woohookitty SCSI Test Unit Ready Command Source: http://en.wikipedia.org/w/index.php?oldid=399507028 Contributors: Cheesy123456789, Greenrd, Grokus, Neilm, Rrohbeck, 3 anonymous edits SCSI Write Commands Source: http://en.wikipedia.org/w/index.php?oldid=490380085 Contributors: AlexBadea, Apophos, Eeekster, Ged Davies, Lakche, Mysid, Neilm, 5 anonymous edits Sense Key Source: http://en.wikipedia.org/w/index.php?oldid=386107638 Contributors: Afalbrig, Ankle, Chrisbolt, Dancrumb, Droge, Jbl1975, Kbdank71, Neilm, Rogerdpack, Ste.Ri, TechPurism, 16 anonymous edits Serial attached SCSI Source: http://en.wikipedia.org/w/index.php?oldid=494102063 Contributors: 119, Abisys, Adamantios, Adambro, Afiler, Alecv, Ali@gwc.org.uk, Anastrophe, Anna Lincoln, Annsilverthorn, Arunajay, Asparagus, AussieScribe, Austinmurphy, Ayamanita, Bdkives, Bendodge, Bobblewik, Brianski, Btisdall, Byj wiki, Ceros, Cffrost, Chrislenhart, Craftyminion, Cybercobra, DavidLeeLambert, Dcamp314, Dcoetzee, Denna Haldane, DennisLMartin97, ERobson, Edgar181, Ehn, Engineerism, Epbr123, Eric Shalov, Error -128, Evice, Extraordinary, Fan-1967, Frap, Fredrik, Frettled, Gaius Cornelius, Giraffedata, Gousha, GreyCat, Gypsyzoo, Ikara, JRS, Jawsper, Jdforrester, Jdwinx, Jiphung, Jonverve, Kaldosh, KarlHegbloom, KelleyCook, Kkmurray, KnightLago, Leandrod, Leksey, Lemmio, Leonidaz, Lightmouse, Little buddha81, Llywrch, Matt Crypto, Memodude, Mikeblas, Milan Kerlger, Mirror Vax, Modster, Moreati, Mosca, Msiren, Music Sorter, Neilm, Neonetizen, Nichlas, Nipsy, Nowakpl, Osicim, PPrakash, Pboyd04, Pgilman, Pol098, Pugglewuggle, Qasdfdsaq, Quanstro, Quebron, RHaworth, RenOfHeavens, RickBeton, Rjwilmsi, Rondo66, Rozsnyo, Rrburke, Rwwww, Salfter, Sdwood, Sesu Prime, Shaddack, Skycode, SlackerMom, Stephan Leeds, Sterwill, StorageMania, Storagewonk, StuffOfInterest, Thehelpfulone, Timl2k4, Tokino, Tomchiukc, Trek00, TrygveFlathen, UU, UmbertinaV, Utcursch, Vicarage, Vladimir.mencl, Webwizard, Wfischer, WhosAsking, Whosyourjudas, Xenophonf, Xjtuwjp, YUL89YYZ, Zac67, 265 anonymous edits Serial Storage Architecture Source: http://en.wikipedia.org/w/index.php?oldid=477445585 Contributors: Atrivo, Bloodshedder, Bobblewik, Catapult, Chriswaltham, David Gerard, Engineerism, Frap, Gardar Rurak, Heron, Hopp, Intgr, Ioliver, Jonverve, Kjanos, Mindmatrix, Music Sorter, Neilm, Nicholsr, Nixdorf, SHOlafsson, Sam8, Shaddack, Thunderbird2, Tkelleher, WhiteDragon, 12 anonymous edits Single Connector Attachment Source: http://en.wikipedia.org/w/index.php?oldid=490814915 Contributors: Ali@gwc.org.uk, Bloodshedder, Busfahrer, ChrisGualtieri, Frap, Gaius Cornelius, JLD, Jake Nelson, Jdabney, Kbdank71, Ktims, Neilm, Reedy, Secretlondon, Zac67, 5 anonymous edits Tagged Command Queuing Source: http://en.wikipedia.org/w/index.php?oldid=496668235 Contributors: AlexandriNo, AngoraFish, Bacon-chan, DavidLeeLambert, Ddxc, Imroy, Intgr, Jesse Viviano, Kimchi.sg, MarkSweep, Mimarx, Mordomo, Ost316, Pol098, Punctured Bicycle, R!SC, Rchandra, Ruud Koot, Rwwww, Vivaperucarajo, Wrs1864, Zac67, 16 anonymous edits USB Attached SCSI Source: http://en.wikipedia.org/w/index.php?oldid=495269081 Contributors: Guy Harris, Mcmaven2, RingtailedFox, Ruud Koot, 5 anonymous edits Very-high-density cable interconnect Source: http://en.wikipedia.org/w/index.php?oldid=483047090 Contributors: Elijahsadventure, Jstreutker, LapTop006, Lx b, Muppendahl, Nono64, Qdotdot, Rcsheets, Rilak, Tony1, 13 anonymous edits World Wide Name Source: http://en.wikipedia.org/w/index.php?oldid=491738849 Contributors: 1exec1, Afiler, Aldenrw, Chris Chittleborough, Corto, Diderot, Dlboone, Driveforspeed, Edward, Ennoto, Eorteg01, Gurnec, Headbomb, JamesXHY, Johncruise, Kcordina, Kubanczyk, MarkBrooks, Mclayto, Quanstro, Reedy, Rwwww, SatPhil, Sfoskett, Sietse Snel, Simon Brady, Stanistani, Stephenparsons, Tariqabjotu, The Anome, The doctor23, Thingg, 60 anonymous edits

132

Image Sources, Licenses and Contributors

133

Image Sources, Licenses and Contributors


Image:Scsi logo.svg Source: http://en.wikipedia.org/w/index.php?title=File:Scsi_logo.svg License: Public Domain Contributors: Stassats at ru.wikipedia Previously uploaded to en.wikipedia by Vidarlo in April 2006 ( file log) File:Loudspeaker.svg Source: http://en.wikipedia.org/w/index.php?title=File:Loudspeaker.svg License: Public Domain Contributors: Bayo, Gmaxwell, Husky, Iamunknown, Mirithing, Myself488, Nethac DIU, Omegatron, Rocket000, The Evil IP address, Wouterhagens, 19 anonymous edits Image:Scsi-1 gehaeuse.jpg Source: http://en.wikipedia.org/w/index.php?title=File:Scsi-1_gehaeuse.jpg License: Creative Commons Attribution-Sharealike 2.0 Contributors: User Smial on de.wikipedia File:SCSI-terminator-exposed-hdr-0a.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSI-terminator-exposed-hdr-0a.jpg License: Creative Commons Attribution-Sharealike 3.0 Contributors: Adamantios Image:SCSI 2 Devices.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSI_2_Devices.jpg License: Public Domain Contributors: Image:Scsi-connectors.jpg Source: http://en.wikipedia.org/w/index.php?title=File:Scsi-connectors.jpg License: Creative Commons Attribution-Sharealike 3.0 Contributors: Shieldforyoureyes Dave Fischer File:Acorn AKA30 SCSI Interface (back).jpg Source: http://en.wikipedia.org/w/index.php?title=File:Acorn_AKA30_SCSI_Interface_(back).jpg License: unknown Contributors: Chris Whytehead Image:SCSI Mac.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSI_Mac.jpg License: GNU Free Documentation License Contributors: Charles Bunnell CB1226 Image:Macintosh HDI SCSI.jpg Source: http://en.wikipedia.org/w/index.php?title=File:Macintosh_HDI_SCSI.jpg License: Public Domain Contributors: Speters33w File:SCA-2 connector on Fujitsu MAP3735NC.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCA-2_connector_on_Fujitsu_MAP3735NC.jpg License: Public Domain Contributors: Mixabest Image:HpCompaq Hotswap.png Source: http://en.wikipedia.org/w/index.php?title=File:HpCompaq_Hotswap.png License: Public Domain Contributors: Illumined Image:SAS-drive-connector.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SAS-drive-connector.jpg License: Creative Commons Attribution-Share Alike Contributors: Frettled File:SFF-8484-internal-connector-0a.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF-8484-internal-connector-0a.jpg License: Creative Commons Attribution-Sharealike 3.0 Contributors: Adamantios Image:10base2 terminator.png Source: http://en.wikipedia.org/w/index.php?title=File:10base2_terminator.png License: Public Domain Contributors: Original uploader was Dflock at en.wikipedia Later versions were uploaded by Zcrayfish at en.wikipedia. Image:ESI.JPG Source: http://en.wikipedia.org/w/index.php?title=File:ESI.JPG License: Public Domain Contributors: Bkell, Neilm file:Apple hd20sc.jpg Source: http://en.wikipedia.org/w/index.php?title=File:Apple_hd20sc.jpg License: GNU Free Documentation License Contributors: Grm wnr, Hellisp Image:QLA 2200F.jpg Source: http://en.wikipedia.org/w/index.php?title=File:QLA_2200F.jpg License: Creative Commons Attribution-ShareAlike 3.0 Unported Contributors: Michael Moll Image:Controller SCSI.JPG Source: http://en.wikipedia.org/w/index.php?title=File:Controller_SCSI.JPG License: Creative Commons Attribution-Sharealike 2.5 Contributors: User:Rosco Image:Speakerlink.svg Source: http://en.wikipedia.org/w/index.php?title=File:Speakerlink.svg License: Creative Commons Attribution 3.0 Contributors: Woodstone. Original uploader was Woodstone at en.wikipedia Image:Iscsi-iser-read-steps-1.JPG Source: http://en.wikipedia.org/w/index.php?title=File:Iscsi-iser-read-steps-1.JPG License: GNU Free Documentation License Contributors: Erezz Image:Iscsi-iser-write-steps-1.JPG Source: http://en.wikipedia.org/w/index.php?title=File:Iscsi-iser-write-steps-1.JPG License: GNU Free Documentation License Contributors: Erezz Image:Centronics 50 SCSI connector.JPG Source: http://en.wikipedia.org/w/index.php?title=File:Centronics_50_SCSI_connector.JPG License: Creative Commons Attribution-ShareAlike 3.0 Unported Contributors: User Redgrittybrick on en.wikipedia Image:SCSC-term.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSC-term.jpg License: GNU Free Documentation License Contributors: Charles Bunnell CB1226 Image:high byte termination.JPG Source: http://en.wikipedia.org/w/index.php?title=File:High_byte_termination.JPG License: Creative Commons Attribution-Sharealike 2.5 Contributors: Bkell, Neilm Image:Sas niveles en.gif Source: http://en.wikipedia.org/w/index.php?title=File:Sas_niveles_en.gif License: Creative Commons Attribution-Share Alike Contributors: Byj Image:SFF 8484 angled.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF_8484_angled.jpg License: Public Domain Contributors: GreyCat Image:SFF 8470.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF_8470.jpg License: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0 Contributors: GreyCat Image:SFF 8086.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF_8086.jpg License: Creative Commons Attribution-Sharealike 3.0 Contributors: Instigater Image:SFF 8087.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF_8087.jpg License: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0 Contributors: GreyCat Image:SFF 8088.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SFF_8088.jpg License: Creative Commons Attribution-Sharealike 3.0,2.5,2.0,1.0 Contributors: GreyCat Image:SCSIHardDriveConnectors.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSIHardDriveConnectors.jpg License: Creative Commons Attribution-Sharealike 2.5 Contributors: User:Ali@gwc.org.uk Image:SCSI-SCA-backplane.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSI-SCA-backplane.jpg License: Creative Commons Attribution-Sharealike 2.5 Contributors: User:Ali@gwc.org.uk Image:SPARCstation20 scsi cradle with drive.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SPARCstation20_scsi_cradle_with_drive.jpg License: Creative Commons Attribution-ShareAlike 3.0 Unported Contributors: Caroline Ford Image:SCSI external VHDCI 01.jpg Source: http://en.wikipedia.org/w/index.php?title=File:SCSI_external_VHDCI_01.jpg License: GNU Free Documentation License Contributors: Original uploader was Mecki fingerchen at de.wikipedia Later version(s) were uploaded by Smial at de.wikipedia.

License

134

License
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

Вам также может понравиться