SCSIコマンド（、スカジーコマンド）とはストレージとコンピュータが通信・制御を行う際に利用されるコマンド群である。

概要

コンピュータからSCSIデバイスを制御（例えばデータを記録再生、デバイス名を取得）する場合、コンピュータはSCSIコマンドをストレージに発行する。コマンド自体はパラレルSCSIの時代から存在したが、より高速なファイバーチャネル、iSCSI、SAS、シリアルATA等が開発された現在でもこれらトランスポート層上で利用されている。

詳細
SCSIコマンドは Command Descriptor Block (CDB)と呼ばれる形式で送受信される。合計6, 10, 12もしくは16バイトで一つのセットになる。一番初めのバイトはバイト・オペレーション・コードと呼ばれ、どのような動作命令なのかを大まかに規定する。それに続くバイトは動作の細かなパラメーターを規定する。CDBを受け取ったデバイスは送信者に対してステータスコードを返す。

SCSI標準ではコマンドを必須、オプショナル、ベンダー・ユニークの3種類に分けている。SCSI標準準拠であるためには、ストレージの種類(ハードディスクドライブ、磁気テープ等)に依らず、「必須」コマンドに全て対応している必要がある。
ストレージの種類が異なればオペレーション・コードに対する実際の動作は当然異なるが、概ね似ている場合もある。例えばオペレーション・コード： 0x01 はディスクに対しては物理セクタゼロの位置にヘッドをシークするが、テープでは巻き戻しになる。

送受信ツール
sg3_utils - LinuxおよびWindows 2000以降をサポート
SCSITool - Windowsをサポート

 コマンドのリスト
オペレーション・コードとその動作はT10技術委員会で規定されている。以下にオペレーション・コード(十六進法表現)とその時のオペレーションをリストする。詳細な動作及びパラメーターの指定はストレージベンダーから提供されるSCSI Referenceを参照する必要がある。外部リンクも参照されたい。
 コード 名称 長さ(バイト)00TEST UNIT READY601REWIND603REQUEST SENSE604FORMAT605READ BLOCK LIMITS607REASSIGN BLOCKS607INITIALIZE ELEMENT STATUS608READ60AWRITE60BSEEK60FREAD REVERSE610WRITE FILEMARKS611SPACE612INQUIRY613VERIFY614RECOVER BUFFERED DATA615MODE SELECT616RESERVE617RELEASE618COPY619ERASE 61AMODE SENSE 61BSTART STOP UNIT61BLOAD UNLOAD61CRECEIVE DIAGNOSTIC RESULTS61DSEND DIAGNOSTIC61EPREVENT ALLOW MEDIUM REMOVAL623READ FORMAT CAPACITIES1025READ CAPACITY1028READ1029READ GENERATION102AWRITE102BSEEK102BLOCATE102CERASE102DREAD UPDATED BLOCK102EWRITE AND VERIFY102FVERIFY1033SET LIMITS1034PRE-FETCH1034READ POSITION1035SYNCHRONIZE CACHE1036LOCK UNLOCK CACHE1037READ DEFECT DATA1037INITIALIZE ELEMENT STATUS WITH RANGE1038MEDIUM SCAN1039COMPARE103ACOPY AND VERIFY103BWRITE BUFFER103CREAD BUFFER103DUPDATE BLOCK103EREAD LONG103FWRITE LONG1040CHANGE DEFINITION1041WRITE SAME1042UNMAP1043READ TOC/PMA/ATIP1044REPORT DENSITY SUPPORT1045PLAY AUDIO1046GET CONFIGURATION1047PLAY AUDIO MSF1048SANITIZE104AGET EVENT STATUS NOTIFICATION104BPAUSE/RESUME104CLOG SELECT104DLOG SENSE1050XDWRITE1051XPWRITE1051READ DISC INFORMATION1052XDREAD1053XDWRITEREAD1054SEND OPC INFORMATION1055MODE SELECT1056RESERVE1057RELEASE1058REPAIR TRACK105AMODE SENSE105BCLOSE TRACK/SESSION105CREAD BUFFER CAPACITY105DSEND CUE SHEET105EPERSISTENT RESERVE IN105FPERSISTENT RESERVE OUT107Eextended CDB＞167Fvariable length CDB可変80XDWRITE EXTENDED1680WRITE FILEMARKS1681READ REVERSE1683Third-party Copy OUT commands1684Third-party Copy IN commands1685ATA PASS-THROUGH1686ACCESS CONTROL IN1687ACCESS CONTROL OUT1688READ1689COMPARE AND WRITE168AWRITE168BORWRITE168CREAD ATTRIBUTE168DWRITE ATTRIBUTE168EWRITE AND VERIFY168FVERIFY1690PRE-FETCH1691SYNCHRONIZE CACHE1691SPACE1692LOCK UNLOCK CACHE1692LOCATE1693WRITE SAME1693ERASE169DSERVICE ACTION BIDIRECTIONAL169ESERVICE ACTION IN169FSERVICE ACTION OUT16A0REPORT LUNS12A1ATA PASS-THROUGH12A2 SECURITY PROTOCOL IN12A3MAINTENANCE IN12A4MAINTENANCE OUT12A4REPORT KEY12A5MOVE MEDIUM12A5PLAY AUDIO 1212A6EXCHANGE MEDIUM12A7MOVE MEDIUM ATTACHED12A8READ12A9SERVICE ACTION OUT12AAWRITE12ABSERVICE ACTION IN12ACERASE12ADREAD DVD STRUCTURE12AEWRITE AND VERIFY12AFVERIFY12B0SEARCH DATA HIGH12B1SEARCH DATA EQUAL12B2SEARCH DATA LOW12B3SET LIMITS12B4READ ELEMENT STATUS ATTACHED12B5SECURITY PROTOCOL OUT12B6SEND VOLUME TAG12B7READ DEFECT DATA12B8READ ELEMENT STATUS12B9READ CD MSF12BAREDUNDANCY GROUP (IN)12BBREDUNDANCY GROUP (OUT)12BCSPARE (IN)12BDSPARE (OUT)12BEVOLUME SET (IN)12BF VOLUME SET (OUT)12

 ステータスコード 
上記のコマンドに対してターゲットは必ずSCSI ステータスコードを返す。典型的にはGOOD(正常)、CHECK CONDITION(エラー)、BUSY(ビジー)となる。特にCHECK CONDIITONとなった場合、より詳細なエラー情報を含むSCSI Sense Keysが利用可能となる。 

 コード 名前 0x00GOOD0x02CHECK CONDITION0x04CONDITION MET0x08 BUSY0x18RESERVATION CONFLICT0x28TASK SET FULL0x30	ACA ACTIVE0x40TASK ABORTED