Internet Small Computer System Interface (iSCSI、アイスカジー) とは、SCSIプロトコルをTCP/IP上で使用する規格である。ファイバーチャネルよりも安価にストレージエリアネットワーク (SAN) を構築出来る。2003年2月11日にIETFによってRFCとして公表された"公式な規格への提案" (Proposed standard) であり、SCSI-3標準のトランスポート層に相当する。ギガビット・イーサネットが一般化した現在、iSCSIベースのSANは十分高速・安価となり検討に値するものとなっている。

## 特徴

データ転送にTCP/IPを使う。ストレージエリアネットワーク(SAN)の基盤であるファイバーチャネルと違い汎用なイーサネット(またはTCP/IPが使用可能なネットワーク)があればよい。SANのコスト/互換性問題なしにメリットを享受できる。TCP/IPのオーバヘッドによりファイバーチャネルより性能が悪いという批判もある。しかし、TCPオフロードエンジン (TOE) のような新技術が影響を緩和する。市場は成長しており、ギガビットイーサネットや10GbEの普及に伴い性能・使いやすさが向上している。ベンダーも オペレーティングシステム、SAN製品、ストレージシステムでiSCSIをサポートしてきている。従来のハードワイヤードのSCSIに比べセキュリティ・可用性・スケーラビリティに優れている。既存のTCP/IP機材を流用できる優れた可搬性は設計開発段階からベンダーの注目を集めた。プロトコルの完成によってベンダーは直ちに製品を提供した。

## プロトコル階層

下記の5層から構成される。下位から順に、

- 物理層、リンク層

- IP層

- TCP層

- iSCSI層

- SCSI層

## 記憶装置

ホストはiSCSIイニシエータ (Small Computer System Interface 参照) をサポートしている必要がある。ホストはこれを使って遠隔にあるディスクやテープのような対象記憶装置 (target) に接続する。ドライバやアプリケーションから見れば記憶装置はローカルにSCSIで接続されているのと同じに見える。ホストやtargetが複数存在する複雑な環境はストレージエリアネットワーク(SAN)となる。iSCSIはネットワークアタッチトストレージ (NAS) とは異なる事に留意する。イーサネットを使うという点では共通であるが、NASは複数ホストからの同時アクセスを仲裁するためのソフトウェアを内蔵してファイル共有を行う役割でありiSCSIの目的(ストレージプールの共有)とは異なる。

## サポート状況

### イニシエータ

#### OSのサポート

| OS名 | リリース時期 | バージョン |
| --- | --- | --- |
| AIX | 2002年10月 | AIX 5.2 |
| Windows | 2003年6月 | 2000, XP Pro, 2003, Vista,2008,7,2008 R2 |
| NetWare | 2003年8月 | NetWare 6.5 |
| HP-UX | 2003年10月 | HP 11i v1, HP 11i v2 |
| Solaris | 2005年2月 | Solaris 10 |
| Linuxカーネル | 2005年6月 | 2.6.12 |
| NetBSD | 2007年12月 | 4.0 |
| FreeBSD | 2008年2月 | 7.0 |
| VMware ESX Server | 2006年6月 | 3.0.0 |

#### ソフトウェア

- Cisco iSCSI ドライバー - 最初期のソフトウェア iSCSI イニシエータのひとつ。HP-UX, AIX, Linux, Solaris, Windows NT 4/2000 をサポート。 最近ではCisco SAN-OS の名称でファイバーチャネルも含めたSAN全般をサポートする体系に組み込まれている。
- IBM iSCSI ソフトウェアイニシエータ for AIX - バージョン 5.2 (2002年10月) から対応
- FreeBSD - バージョン 7.0 (2008年2月) から対応
- HP HP-UX iSCSI ソフトウェアイニシエータ
- Linux
  - Core-iSCSI - 商用の PyX イニシエータの GPL部分に基づくイニシエータ。Open-iSCSI の開発のために Linux-iSCSI の保守が停止した際にギャップを埋める目的で Linuxカーネル 2.6 向けに復活したプロジェクトである。
  - Intel-iSCSI (インテル) - 概念実証用にインテルからLinux向けにリリースされたiSCSIイニシエータとターゲット。(sourceforge上では削除済み?)
  - Linux-iSCSI - Cisco Linux iSCSI ドライバーに基づくイニシエータ。2005年4月現在Linux-iSCSI と Open-iSCSI の開発者は共同で作業して Open-iSCSI の強化に努めている。3.xx シリーズは Linuxカーネル 2.4 をサポート。4.xx シリーズは Linuxカーネル 2.6 から 2.6.9 までをサポート。
  - Open-iSCSI - 最新のイニシエータであり2.6.11 以降をサポート。この開発のためLinux-iSCSI の開発は停止した。
  - UNH-iSCSI - ニューハンプシャー大学 (UNH) によるイニシエータとターゲットの実装。
- マイクロソフト iSCSI ソフトウェアイニシエータ for Microsoft Windows - Windows 2000, Windows XP Professional, Windows Server 2003 をサポート。
- ノベル iSCSI イニシエータ for NetWare - Netware 6.5 で使用可能。
- サン・マイクロシステムズ Solaris iSCSI イニシエータ - Solaris 10 1/06 アップデートで使用可能。

#### ハードウエア

iSCSIホストバスアダプタ (HBA) はそれ自身にiSCSIプロトコルを実装している。OSからはSCSI HBAに見える。TOE NICを持つものやiSCSI専用処理をオフロード出来るものもある。遠隔のtargetディスクからOSをブートするために、NVRAMを搭載しているものもある。以下のベンダーが主に開発している。

- アダプテック(生産終了)
- インテル
- Alacritech
- Qlogic
- Brocade (旧 Silverback)

### ターゲット

ディスク製品が主である。テープドライブやテープライブラリにも需要があるが、今のところサポートしている製品は限られている。代わりに並列パラレルSCSIやファイバーチャネルを持つ装置にテープとiSCSIターゲットソフトウェアを搭載した製品がある。ターゲットは仮想化できる可能性がある。仮想テープライブラリ (VTL) のように外から見えるターゲットの種別とは全く関係なく、内部の構造を自由に実装できる。仮想ターゲットでも装置筐体内で専用コントローラやソフトウェアを使う事で、iSCSIターゲットとして見せかける事が出来る。

#### ソフトウェア

- Windows
  - Microsoft iSCSI Software Target 3.3
  - StarWind iSCSI SAN (Free Edition有り)
- Linux
  - LIO - Linux open source iSCSI target, kernel ≥2.6.37
  - iSCSI Enterprise Target - オープンソースの iSCSIターゲット実装(Linux用)
  - iSCSI\_Tape - iSCSIターゲットの仮想テープドライブ
  - Linux SCSI target framework
  - Generic SCSI Target Subsystem for Linux
  - MayaStor
- Solaris
  - Solaris 10 ではshareiscsi。ただしユーザランド実装なので遅い。
  - Solaris 11、OpenSolarisではCOMSTAR。ZFSと連携し、高機能で高速。
- NetBSD 用ターゲットの HOWTO
- NetWare 6.5 には iSCSIターゲットのパッケージが含まれている。
- POSIX
  - Intel-iSCSI(インテル)
- TrueNAS