SCSIコマンド(: SCSI Command、スカジーコマンド)とはストレージコンピュータが通信・制御を行う際に利用されるコマンド群である[1]

概要 編集

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

詳細 編集

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

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

送受信ツール 編集

コマンドのリスト 編集

オペレーション・コードとその動作はT10技術委員会で規定されている[5]。以下にオペレーション・コード(十六進法表現)とその時のオペレーションをリストする。詳細な動作及びパラメーターの指定はストレージベンダーから提供されるSCSI Referenceを参照する必要がある。外部リンクも参照されたい。

コード名称長さ(バイト)
00TEST UNIT READY6
01REWIND6
03REQUEST SENSE6
04FORMAT6
05READ BLOCK LIMITS6
07REASSIGN BLOCKS6
07INITIALIZE ELEMENT STATUS6
08READ(6)6
0AWRITE(6)6
0BSEEK(6)6
0FREAD REVERSE(6)6
10WRITE FILEMARKS(6)6
11SPACE(6)6
12INQUIRY6
13VERIFY(6)6
14RECOVER BUFFERED DATA6
15MODE SELECT(6)6
16RESERVE(6)6
17RELEASE(6)6
18COPY6
19ERASE (6)6
1AMODE SENSE (6)6
1BSTART STOP UNIT6
1BLOAD UNLOAD6
1CRECEIVE DIAGNOSTIC RESULTS6
1DSEND DIAGNOSTIC6
1EPREVENT ALLOW MEDIUM REMOVAL6
23READ FORMAT CAPACITIES10
25READ CAPACITY(10)10
28READ(10)10
29READ GENERATION10
2AWRITE(10)10
2BSEEK(10)10
2BLOCATE(10)10
2CERASE(10)10
2DREAD UPDATED BLOCK10
2EWRITE AND VERIFY(10)10
2FVERIFY(10)10
33SET LIMITS(10)10
34PRE-FETCH(10)10
34READ POSITION10
35SYNCHRONIZE CACHE(10)10
36LOCK UNLOCK CACHE(10)10
37READ DEFECT DATA(10)10
37INITIALIZE ELEMENT STATUS WITH RANGE10
38MEDIUM SCAN10
39COMPARE10
3ACOPY AND VERIFY10
3BWRITE BUFFER10
3CREAD BUFFER10
3DUPDATE BLOCK10
3EREAD LONG(10)10
3FWRITE LONG(10)10
40CHANGE DEFINITION10
41WRITE SAME(10)10
42UNMAP10
43READ TOC/PMA/ATIP10
44REPORT DENSITY SUPPORT10
45PLAY AUDIO(10)10
46GET CONFIGURATION10
47PLAY AUDIO MSF10
48SANITIZE10
4AGET EVENT STATUS NOTIFICATION10
4BPAUSE/RESUME10
4CLOG SELECT10
4DLOG SENSE10
50XDWRITE(10)10
51XPWRITE(10)10
51READ DISC INFORMATION10
52XDREAD(10)10
53XDWRITEREAD(10)10
54SEND OPC INFORMATION10
55MODE SELECT(10)10
56RESERVE(10)10
57RELEASE(10)10
58REPAIR TRACK10
5AMODE SENSE(10)10
5BCLOSE TRACK/SESSION10
5CREAD BUFFER CAPACITY10
5DSEND CUE SHEET10
5EPERSISTENT RESERVE IN10
5FPERSISTENT RESERVE OUT10
7Eextended CDB>16
7Fvariable length CDB可変
80XDWRITE EXTENDED(16)16
80WRITE FILEMARKS(16)16
81READ REVERSE(16)16
83Third-party Copy OUT commands16
84Third-party Copy IN commands16
85ATA PASS-THROUGH(16)16
86ACCESS CONTROL IN16
87ACCESS CONTROL OUT16
88READ(16)16
89COMPARE AND WRITE16
8AWRITE(16)16
8BORWRITE16
8CREAD ATTRIBUTE16
8DWRITE ATTRIBUTE16
8EWRITE AND VERIFY(16)16
8FVERIFY(16)16
90PRE-FETCH(16)16
91SYNCHRONIZE CACHE(16)16
91SPACE(16)16
92LOCK UNLOCK CACHE(16)16
92LOCATE(16)16
93WRITE SAME(16)16
93ERASE(16)16
9DSERVICE ACTION BIDIRECTIONAL16
9ESERVICE ACTION IN(16)16
9FSERVICE ACTION OUT(16)16
A0REPORT LUNS12
A1ATA PASS-THROUGH(12)12
A2SECURITY PROTOCOL IN12
A3MAINTENANCE IN12
A4MAINTENANCE OUT12
A4REPORT KEY12
A5MOVE MEDIUM12
A5PLAY AUDIO 1212
A6EXCHANGE MEDIUM12
A7MOVE MEDIUM ATTACHED12
A8READ(12)12
A9SERVICE ACTION OUT(12)12
AAWRITE(12)12
ABSERVICE ACTION IN(12)12
ACERASE(12)12
ADREAD DVD STRUCTURE12
AEWRITE AND VERIFY(12)12
AFVERIFY(12)12
B0SEARCH DATA HIGH(12)12
B1SEARCH DATA EQUAL(12)12
B2SEARCH DATA LOW(12)12
B3SET LIMITS(12)12
B4READ ELEMENT STATUS ATTACHED12
B5SECURITY PROTOCOL OUT12
B6SEND VOLUME TAG12
B7READ DEFECT DATA(12)12
B8READ ELEMENT STATUS12
B9READ CD MSF12
BAREDUNDANCY GROUP (IN)12
BBREDUNDANCY GROUP (OUT)12
BCSPARE (IN)12
BDSPARE (OUT)12
BEVOLUME SET (IN)12
BFVOLUME SET (OUT)12

ステータスコード 編集

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

コード名前
0x00GOOD
0x02CHECK CONDITION
0x04CONDITION MET
0x08BUSY
0x18RESERVATION CONFLICT
0x28TASK SET FULL
0x30ACA ACTIVE
0x40TASK ABORTED

脚注 編集

外部リンク 編集