SCSIコマンド

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を参照する必要がある。外部リンクも参照されたい。

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

脚注

外部リンク
ハードディスク SCSI Reference
LTO SCSI  Reference
IBM 3592 SCSI  Reference

SCSI