スモールコンピュータシステムインターフェース( SCSI 、 / ˈskʌzi / SKUZ - ee ) [ 2 ]は、コンピュータと周辺機器の間で物理的に接続してデータを転送するための一連の規格であり、ハードディスクドライブなどのストレージデバイスでの使用で最もよく知られています。SCSIは1980年代に導入され、サーバーやハイエンドワークステーションで広く使用されており、 2017年にはSAS-4という新しいSCSI規格が発行されました。
SCSI規格は、コマンド、プロトコル、電気的、光学的、論理的インターフェースを定義します。SCSI規格は、特定の周辺機器タイプ用のコマンドセットを定義します。これらのタイプの1つに「不明」が含まれているということは、理論的にはほぼすべての機器のインターフェースとして使用できることを意味しますが、この規格は非常に実用的で、商用要件に対応しています。初期のパラレルSCSIは、ハードディスクドライブやテープドライブで最も一般的に使用されていましたが、スキャナや光ディスクドライブなど、他のさまざまな機器を接続できます。ただし、すべてのコントローラがすべての機器を処理できるわけではありません。
最初の SCSI 規格である X3.131-1986 (一般に SCSI-1 と呼ばれる) は、 1986 年に米国規格協会(ANSI) の X3T9 技術委員会によって発行されました。SCSI-2 は 1990 年 8 月に X3.T9.2/86-109 として発行され、1994 年にさらに改訂され、その後多数のインターフェースが採用されました。さらなる改良により、パフォーマンスが向上し、ますます増大するデータストレージ容量がサポートされるようになりました。[ 3 ]

SCSIは、1979年に開発が開始され[ 5 ]、1981年に公開されたShugart Associates System Interface(SASI)[ 4 ]から派生したものです。 [ 1 ] Larry Boucherは、Shugart Associates、そして1981年に設立したAdaptecでの先駆的な業績により、SASI、ひいてはSCSIの「父」とみなされています。 [ 6 ]
SASIコントローラは、ハードディスクドライブの低レベルインターフェースと、データブロックを読み取る必要のあるホストコンピュータとの間の橋渡し役を果たしました。SASIコントローラボードは通常、ハードディスクドライブと同じサイズで、ドライブのシャーシに物理的に取り付けられていました。ミニコンピュータや初期のマイクロコンピュータで使用されていたSASIは、インターフェースとして50ピンのフラットリボンコネクタを定義しており、これはSCSI-1コネクタとして採用されました。SASIはSCSI-1の完全準拠サブセットであるため、当時存在していたSASIコントローラの多く、あるいはすべてがSCSI-1互換でした。[ 7 ]
1980 年頃、NCR コーポレーションはBYSE という競合するインターフェース規格を開発していた。1981 年夏、NCR は SASI の開発と自社コンピュータシステム向け設計の改良に注力するため、社内での取り組みを断念した。しかし、SASI 規格の拡張が市場の混乱を招くことを恐れた NCR は、一時的に Shugart との契約を解除した。NCR が提案した SCSI の設計改良は、Shugart の子会社である Optimem の関心を惹きつけ、Optimem は NCR と Shugart に統一規格の共同開発を要請した。1981 年 10 月、両社は SASI を共同開発し、ANSI と共同で規格を発表することに合意した。[ 8 ] [ 9 ]
少なくとも1982年2月までは、ANSIは仕様を「SASI」および「Shugart Associates System Interface」として開発していた。[ 10 ]しかし、規格を文書化する委員会は、企業名を付けることを認めなかった。規格名を「Small Computer System Interface」とすることに合意するのにほぼ丸一日が費やされた。ブーシェはこれを「セクシー」と発音するつもりだったが、ENDLの[ 11 ]ダル・アランは新しい頭字語を「スカジー」と発音し、それが定着した。[ 12 ]
カンザス州ウィチタにあるNCRの施設は、業界初のSCSIコントローラチップであるNCR 5385を開発し、1983年にリリースしました。開発者によると、このチップは最初のテストで動作しました。[ 13 ] [ 14 ] AdaptecやOptimemなどの多くの企業がSCSIの初期支持者でした。[ 10 ] 1990年末までに、少なくとも45のメーカーが251のパラレルSCSIホストアダプタを提供していました。 [ 15 ]今日では、このようなホストアダプタは、より高速なシリアルSCSI(SAS)ホストアダプタにほぼ置き換えられています。[ 16 ]
「小型コンピュータシステムインターフェース」における「小型」という表現は歴史的なものであり、1990年代半ば以降、SCSIは最大規模のコンピュータシステムでも利用可能になっている。
1986年に標準化されて以来、SCSIはAmiga、Atari、Apple Macintosh、Sun Microsystemsのコンピュータ製品ラインやPCサーバーシステムで広く使用されてきました。Appleは1994年にMacintosh Quadra 630で低価格のパラレルATA (PATA、 IDEとも呼ばれる)をローエンドマシンに採用し始め、1997年のPower Macintosh G3からハイエンドデスクトップにも採用しました。Appleは1999年に(Blue & White)Power Mac G3でオンボードSCSIを完全に廃止し、IDEとFireWireを採用しましたが、 Power Macintosh G4(AGP Graphics)モデルまではオプションとしてPCI SCSIホストアダプタを提供し続けました。 [ 17 ] Sun は、 CMD640 IDE コントローラを使用したローエンド ワークステーションUltra 5 および 10の導入により、ローエンド レンジをパラレル ATA (PATA) に切り替え、後のBlade 100 および 150エントリー レベル システムでもこの傾向を継続し、 2003 年に Blade 1500 を導入しても最新のSATAインターフェースには切り替えませんでした。一方、同時期にリリースされたハイエンドの Blade 2500 は Ultra320 パラレル SCSI-3 を使用しました。Sun は、2006 年に最後の UltraSPARC-III ベースのワークステーションであるエントリー レベルの Ultra 25 およびミッドレンジの Ultra 45 でSATAおよびSASインターフェースに移行しました。Commodore は、Amiga 3000/3000T システムに SCSI を搭載し、以前の Amiga 500/2000 モデルへのアドオンでした。コモドールはAmiga 600/1200/4000システムからIDEインターフェースに切り替えた。アタリはAtari MEGA STE、Atari TT、Atari FalconといったコンピュータモデルにSCSIを標準搭載した。低価格帯のIBM PCの世界では、ATAハードディスク規格の方がコストが低く性能も十分だったため、SCSIは普及しなかった。しかし、ビデオやオーディオ制作用のPCワークステーションでは、SCSIドライブやSCSI RAIDが一般的になった。
最近の物理バージョンの SCSI —Serial Attached SCSI (SAS)、SCSI-over- Fibre Channel Protocol (FCP)、およびUSB Attached SCSI (UAS) —は、従来のパラレル SCSI バスから脱却しポイント ツー ポイントリンクを使用したシリアル通信を介してデータ転送を実行します。SCSI のドキュメントの多くはパラレル インターフェイスについて説明していますが、最新の開発作業ではすべてシリアル インターフェイスを使用しています。シリアル インターフェイスは、パラレル SCSI に比べて、より高いデータ レート、簡素化されたケーブル配線、より長い距離、障害分離の改善、および全二重機能など、多くの利点があります。シリアル インターフェイスへの移行の主な理由は、高速パラレル インターフェイスのクロック スキューの問題であり、これにより、パラレル SCSI の高速バージョンは、ケーブル配線と終端によって引き起こされる問題の影響を受けやすくなります。[ 18 ]
非物理的なiSCSIは、TCP/IP上にSCSI-3を組み込むことで、基本的なSCSIパラダイム、特にコマンドセットをほぼそのまま維持します。そのため、iSCSIは物理リンクではなく論理接続を使用し、IPをサポートするあらゆるネットワーク上で動作します。実際の物理リンクは、iSCSIとは独立して、下位のネットワーク層で実現されます。主にイーサネットが使用されますが、これもシリアル通信です。
SCSI は、高性能ワークステーション、サーバー、ストレージ機器で広く使用されています。サーバー上のほぼすべての RAID サブシステムは、数十年にわたり何らかの SCSI ハードディスク ドライブを使用してきました (当初はパラレル SCSI、中間的にはファイバー チャネル、最近では SAS)。ただし、一部のメーカーは、より安価なオプションとしてSATAベースの RAID サブシステムを提供しています。さらに、SAS は SATA デバイスとの互換性があり、ニアライン SAS (NL-SAS) ドライブの存在と相まって、RAID サブシステムの選択肢が大幅に広がりました。最新のデスクトップ コンピュータやノートブックでは、SCSI の代わりに、内蔵ハードディスク ドライブに SATA インターフェイスを使用するのが一般的です。SATA は最新のソリッドステート ドライブのボトルネックになる可能性があるため、PCIe 上のNVMeが普及しつつあります。
SCSIにはさまざまなインターフェースがあります。最初のものはパラレルSCSI(SCSIパラレルインターフェースまたはSPIとも呼ばれる)で、パラレルバス設計を採用しています。2005年以降、SPIはシリアル設計を採用しながらも技術の他の側面は維持しているシリアルアタッチドSCSI(SAS)に徐々に置き換えられてきました。完全なSCSI標準に依存しない他の多くのインターフェースは、依然としてSCSIコマンドプロトコルを実装しています。また、 SCSIアーキテクチャモデルを維持しながら物理的な実装を完全に省略しているものもあります。たとえば、iSCSIはトランスポートメカニズムとしてTCP/IPを使用しており、これは多くの場合、ギガビットイーサネットまたはより高速なネットワークリンクを介して伝送されます。
SCSI インターフェースは、 Microsoft Windows、従来の Mac OS、Unix、Amiga、Linuxオペレーティングシステムで使用するために、さまざまなメーカーのコンピュータに搭載されることが多く、マザーボードに実装されている場合とプラグインアダプタを介して実装されている場合があります。SASおよびSATAドライブの登場により、マザーボード上のパラレル SCSI の提供は中止されました。[ 19 ]

当初、SCSIパラレルインターフェース(SPI)はSCSIプロトコルを使用する唯一のインターフェースでした。その標準化は1986年にシングルエンド8ビットバスとして始まり、最大5MB/秒の転送速度を実現し、その後、最大320MB/秒の低電圧差動16ビットバスへと進化しました。2003年の最後のSPI-5規格では640MB/秒の速度も定義されていましたが、これは実現されませんでした。
パラレルSCSIの仕様には、パラレルケーブル用の複数の同期転送モードと非同期モードが含まれています。非同期モードは、古典的な要求/確認プロトコルであり、低速バスやシンプルなシステムでもSCSIデバイスを使用できるようにします。より高速な同期モードがより頻繁に使用されます。

内部パラレルSCSIケーブルは通常リボンケーブルで、50ピン、68ピン、または80ピンのコネクタが2つ以上取り付けられています。外部ケーブルは通常シールドされていますが(シールドされていない場合もあります)、サポートされるSCSIバス幅に応じて、両端に50ピンまたは68ピンのコネクタが取り付けられています。80ピンシングルコネクタアタッチメント(SCA)は、通常、ホットプラグ対応デバイスに使用されます。
ファイバーチャネルは、SCSI用ファイバーチャネルプロトコル(FCP)で定義されているSCSI情報ユニットを伝送するために使用できます。これらの接続はホットプラグに対応しており、通常は光ファイバーを使用して実装されます。
シリアル接続型SCSI(SAS)は、改良されたシリアルATAデータケーブルと電源ケーブルを使用します。
iSCSI (Internet Small Computer System Interface) は通常、物理的な伝送路としてイーサネットコネクタとケーブルを使用しますが、 IPを伝送できるあらゆる物理的な伝送路上で動作できます。
SCSI RDMAプロトコル(SRP)は、信頼性の高いRDMA接続を介してSCSIコマンドを転送する方法を規定するプロトコルです。このプロトコルは、RoCEまたはiWARPを使用する場合、 InfiniBandやイーサネットなど、RDMA対応のあらゆる物理伝送路上で実行できます。
USB接続SCSIにより、SCSIデバイスはユニバーサルシリアルバスを使用できるようになります。
オートメーション/ドライブインターフェース - トランスポートプロトコル (ADT) は、テープドライブなどのリムーバブルメディアデバイスを、それらが設置されているライブラリ (オートメーションデバイス) のコントローラに接続するために使用されます。ADI 規格では、物理接続にRS-422を使用することが規定されています。第 2 世代の ADT-2 規格では、イーサネットなどの IP (インターネットプロトコル) 接続上で ADT プロトコルを使用する iADT が定義されています。オートメーション/ドライブインターフェース - コマンド規格 (ADC、ADC-2、および ADC-3) では、これらのシステムで使用する SCSI コマンドが定義されています。
SCSI規格には、さまざまなハードウェア実装に加えて、広範なコマンド定義も含まれています。SCSIコマンドアーキテクチャは、元々はパラレルSCSIバス用に定義されましたが、iSCSIやシリアルSCSIでも最小限の変更で利用できるようになりました。SCSIコマンドセットを使用するその他の技術には、ATAパケットインターフェース、USBマスストレージクラス、FireWire SBP-2などがあります。
SCSIの用語では、通信はイニシエータとターゲットの間で行われます。イニシエータはターゲットにコマンドを送信し、ターゲットはそれに応答します。SCSIコマンドはコマンド記述子ブロック(CDB)で送信されます。CDBは、1バイトの操作コードと、コマンド固有のパラメータを含む5バイト以上のデータで構成されます。
コマンドシーケンスの最後に、ターゲットはステータスコードバイトを返します。例えば、成功の場合は00h、エラーの場合は02h(チェックコンディションと呼ばれる)、ビジー状態の場合は08hです。ターゲットがコマンドに応答してチェックコンディションを返すと、イニシエータは通常、SCSIリクエストセンスコマンドを発行して、ターゲットからキーコード修飾子(KCQ)を取得します。チェックコンディションとリクエストセンスのシーケンスには、コンティンジェントアリージェンスコンディションと呼ばれる特別なSCSIプロトコルが用いられます。
SCSIコマンドには、N(非データ)、W(イニシエータからターゲットへのデータ書き込み)、R(データ読み出し)、B(双方向)の4つのカテゴリがあります。SCSIコマンドは全部で約60種類あり、最もよく使われるコマンドは以下のとおりです。
SCSIバス上の各デバイスには、固有のSCSI識別番号(ID)が割り当てられます。デバイスは複数の論理ユニットで構成される場合があり、それらは論理ユニット番号(LUN)によってアドレス指定されます。シンプルなデバイスは1つのLUNのみを持ちますが、より複雑なデバイスは複数のLUNを持つ場合があります。
「直接アクセス」(つまり、ディスクタイプ)ストレージデバイスは、論理ブロックアドレス(LBA)によってアドレス指定される複数の論理ブロックで構成されています。標準的なLBAは512バイトのストレージに相当します。LBAの使用方法は時間の経過とともに進化しており、データの読み書き用に4種類のコマンドバリアントが用意されています。Read(6)コマンドとWrite(6)コマンドには21ビットのLBAアドレスが含まれています。Read(10)、Read(12)、Read Long、Write(10)、Write(12)、Write Longコマンドには、32ビットのLBAアドレスと、その他のさまざまなパラメータオプションが含まれています。
シーケンシャルアクセス(テープタイプ)デバイスの容量は、テープの長さなどによって決まるため、機械で読み取り可能な方法では識別できないため、規定されていません。シーケンシャルアクセスデバイスでの読み書き操作は、特定のLBAではなく、現在のテープ位置から始まります。シーケンシャルアクセスデバイスのブロックサイズは、デバイスの種類によって固定または可変です。ハーフインチ9トラックテープ、DDS(DAT と物理的に類似した4mmテープ)、Exabyteなどのテープデバイスは、可変ブロックサイズをサポートしています。
パラレルSCSIバスでは、デバイス(ホストアダプタ、ディスクドライブなど)は「SCSI ID」によって識別されます。SCSI IDは、狭幅バスでは0~7、広幅バスでは0~15の範囲の数値です。初期のモデルでは、物理的なジャンパーまたはスイッチでイニシエータ(ホストアダプタ)のSCSI IDを制御していました。最新のホストアダプタ(1997年頃から)では、アダプタへのI/O操作によってSCSI IDが設定されます。例えば、アダプタにはコンピュータの起動時に実行されるオプションROM(SCSI BIOS)プログラムが含まれていることが多く、このプログラムのメニューでオペレータがホストアダプタのSCSI IDを選択できます。あるいは、ホストアダプタに、ホストコンピュータにインストールしてSCSI IDを設定するソフトウェアが付属している場合もあります。ホストアダプタの従来のSCSI IDは7です。これは、バスアービトレーション中に(16ビットバスであっても)7が最も高い優先順位を持つためです。
バックプレーンを備えたドライブエンクロージャ内のデバイスの SCSI ID は、エンクロージャのモデルに応じて、ジャンパーまたはデバイスが取り付けられているエンクロージャのスロットによって設定されます。後者の場合、エンクロージャのバックプレーン上の各スロットは、ドライブに制御信号を送信して、固有の SCSI ID を選択します。バックプレーンのない SCSI エンクロージャには、ドライブごとに SCSI ID を選択するためのスイッチが備わっていることがよくあります。エンクロージャには、通常ジャンパーが配置されている場所にドライブに差し込む必要があるコネクタが同梱されています。スイッチは、必要なジャンパーをエミュレートします。これを機能させるための標準はありませんが、ドライブ設計者は通常、これらのスイッチの実装方法に合わせて、ジャンパーヘッダーを一貫した形式で設定します。
起動可能な(または最初の)ハードディスクを SCSI ID 0 に設定することは、IT コミュニティで推奨されている方法です。SCSI ID 2 は通常フロッピー ディスク ドライブ用に確保され、SCSI ID 3 は通常 CD-ROM ドライブ用です。[ 20 ]
SCSIターゲットデバイス(物理ユニットとも呼ばれる)は、より小さな論理ユニットに分割される場合があることに注意してください。たとえば、ハイエンドのディスクサブシステムは、単一のSCSIデバイスであっても、数十個の個別のディスクドライブを含み、それぞれのディスクドライブが論理ユニットとなります。さらに、RAIDアレイは、単一のSCSIデバイスであっても、多数の論理ユニットを含み、それぞれの論理ユニットは「仮想」ディスク、つまり実際のディスクドライブの一部から構成されるストライプセットまたはミラーセットとなります。この場合、SCSI ID、WWNなどはサブシステム全体を識別し、2番目の番号であるLUNは、サブシステム内のディスクデバイス(実機または仮想)を識別します。
論理ユニット自体を「LUN」と呼ぶことはよくあるが、これは誤りである。[ 21 ]時には、実際のLUNを「LUN番号」または「LUN ID」と呼ぶこともあるが、これは冗長である。[ 22 ]
最新のSCSIトランスポートプロトコルでは、IDの「検出」のための自動化されたプロセスがあります。SSAイニシエータ(通常はホストアダプタを介したホストコンピュータ)は「ループをたどって」接続されているデバイスを特定し、各デバイスに7ビットの「ホップカウント」値を割り当てます。ファイバーチャネル・アービトレーテッドループ(FC-AL)イニシエータは、LIP(ループ初期化プロトコル)を使用して、各デバイスポートのWWN(ワールドワイドネーム)を照会します。iSCSIの場合、(IP)ネットワークの範囲が無制限であるため、プロセスは非常に複雑です。これらの検出プロセスは、電源投入時/初期化時だけでなく、後でバストポロジが変更された場合(たとえば、追加のデバイスが追加された場合)にも発生します。
SCSIは、ホストバスアダプタごとにCTL(チャネル、ターゲットまたは物理ユニット番号、論理ユニット番号)識別メカニズム、またはHCTL(HBA、チャネル、PUN、LUN)識別メカニズムを備えています。1つのホストアダプタは複数のチャネルを持つことができます。[ 23 ]
すべての SCSI コントローラは、ディスクやテープなどの読み書きストレージ デバイスと連携できますが、一部のコントローラは他のデバイス タイプと連携できません。古いコントローラは、ドライバ ソフトウェアによって制限されることが多く、[ 24 ] SCSI の進化に伴い、デバイス タイプが追加されました。CD-ROM でさえ、すべてのコントローラで処理できるわけではありません。デバイス タイプは、 SCSI 照会コマンドによって報告される 5 ビット フィールドです。定義済みの SCSI 周辺機器デバイス タイプには、さまざまなストレージ デバイスに加えて、プリンタ、スキャナ、通信デバイス、およびリストにないデバイス用の包括的なプロセッサ タイプが含まれます。
大型のSCSIサーバーでは、ディスクドライブデバイスはSCSIエンクロージャサービス(SES)をサポートするインテリジェントな筐体に収容されています。イニシエータは、専用のSCSIコマンドセットを使用して筐体と通信し、電源、冷却、その他のデータ以外の特性にアクセスできます。
1979年、当社はシュガート・アソシエイツと共同でSASIインターフェースを使用した最初のコントローラを開発しました。
NCR Corp. のマイクロエレクトロニクス部門は、NCR 5385 シングルチップコントローラのリリースを発表しました。NCR は、Small Computer System Interface (SCSI) プロトコルを初めて採用した企業です。
コマンドは、lun を作成および管理するために使用されます[...]
ID が指定されていない場合、最小の番号 [...] が自動的に選択されます。