iSCSIで構成したSANの概念図
Internet Small Computer System Interface (iSCSI、アイスカジー ) とは、SCSI プロトコルをTCP/IP 上で使用する規格である。ファイバーチャネル よりも安価にストレージエリアネットワーク (SAN) を構築出来る[ 1] 。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機材を流用できる優れた可搬性は設計開発段階からベンダーの注目を集めた。プロトコルの完成によってベンダーは直ちに製品を提供した。
プロトコル階層
iSCSIのプロトコル階層。図中左
下記の5層から構成される[ 2] 。下位から順に、
IEEE802.3 が使われる。これはイーサネットと同様のLANコネクタや物理現象が利用される事を意味する。ファイバーチャネル・オーバー・イーサネット とは異なり10GbEは必須ではなく1GbEでも良い。
ルーティング を可能にする。
セッション保持や確実なパケット 到達を実現する。
SCSI層からのSCSIコマンド を受けiSCSI Protocol Data Unit (PDU)[ 3] を作成(カプセル化)し下位層へ渡す[ 4] 。
SCSIコマンドが使われる事を意味する。
記憶装置
ホストはiSCSIイニシエータ (Small Computer System Interface 参照) をサポートしている必要がある。ホストはこれを使って遠隔にあるディスク やテープ のような対象記憶装置 (target) に接続する。ドライバやアプリケーションから見れば記憶装置はローカルにSCSIで接続されているのと同じに見える。ホストやtargetが複数存在する複雑な環境はストレージエリアネットワーク (SAN)となる。iSCSIはネットワークアタッチトストレージ (NAS) とは異なる事に留意する。イーサネットを使うという点では共通であるが、NASは複数ホストからの同時アクセスを仲裁するためのソフトウェアを内蔵してファイル共有を行う役割でありiSCSIの目的(ストレージプールの共有)とは異なる。
サポート状況
イニシエータ
OSのサポート
ソフトウェア
Cisco iSCSI ドライバー - 最初期のソフトウェア iSCSI イニシエータのひとつ。HP-UX , AIX , Linux , Solaris , Windows NT 4/2000 をサポート。 最近ではCisco SAN-OS の名称でファイバーチャネルも含めたSAN全般をサポートする体系に組み込まれている[ 5] 。
IBM iSCSI ソフトウェアイニシエータ for AIX - バージョン 5.2 (2002年10月) から対応
FreeBSD - バージョン 7.0 (2008年2月) から対応
HP HP-UX iSCSI ソフトウェアイニシエータ[ 6]
Linux
Core-iSCSI - 商用の PyX イニシエータの GPL部分に基づくイニシエータ。Open-iSCSI の開発のために Linux-iSCSI の保守が停止した際にギャップを埋める目的で Linuxカーネル 2.6 向けに復活したプロジェクトである[ 7] 。
Intel-iSCSI (インテル ) - 概念実証用にインテルからLinux向けにリリースされたiSCSIイニシエータとターゲット。(sourceforge上では削除済み?)
Linux-iSCSI - Cisco Linux iSCSI ドライバーに基づくイニシエータ。2005年4月現在Linux-iSCSI と Open-iSCSI の開発者は共同で作業して Open-iSCSI の強化に努めている[ 8] 。3.xx シリーズは Linuxカーネル 2.4 をサポート。4.xx シリーズは Linuxカーネル 2.6 から 2.6.9 までをサポート。
Open-iSCSI - 最新のイニシエータであり2.6.11 以降をサポート。この開発のためLinux-iSCSI の開発は停止した[ 9] 。
UNH-iSCSI - ニューハンプシャー大学 (UNH) によるイニシエータとターゲットの実装[ 10] 。
マイクロソフト 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 を搭載しているものもある。以下のベンダーが主に開発している。
ターゲット
ディスク製品が主である。テープドライブ やテープライブラリ にも需要があるが、今のところサポートしている製品は限られている[ 11] 。代わりに並列パラレルSCSIやファイバーチャネルを持つ装置にテープとiSCSIターゲットソフトウェアを搭載した製品がある。ターゲットは仮想化 できる可能性がある。仮想テープライブラリ (VTL) のように外から見えるターゲットの種別とは全く関係なく、内部の構造を自由に実装できる。仮想ターゲットでも装置筐体内で専用コントローラやソフトウェアを使う事で、iSCSIターゲットとして見せかける事が出来る。
ソフトウェア
Windows
Linux
Solaris
Solaris 10 ではshareiscsi。ただしユーザランド実装なので遅い。
Solaris 11、OpenSolarisではCOMSTAR。ZFSと連携し、高機能で高速。
NetBSD 用ターゲットの HOWTO
NetWare 6.5 には iSCSIターゲットのパッケージが含まれている。
POSIX
TrueNAS
関連項目
外部リンク
RFC
RFC 3720 - Internet Small Computer Systems Interface (iSCSI)
RFC 3721 - Internet Small Computer Systems Interface (iSCSI) Naming and Discovery
RFC 3722 - String Profile for Internet Small Computer Systems Interface (iSCSI) Names
RFC 3723 - Securing Block Storage Protocols over IP
RFC 3347 - Small Computer Systems Interface protocol over the Internet (iSCSI) Requirements and Design Considerations
RFC 3783 - Small Computer Systems Interface (SCSI) Command Ordering Considerations with iSCSI
RFC 3980 - T11 Network Address Authority (NAA) Naming Format for iSCSI Node Names
RFC 4018 - Finding Internet Small Computer Systems Interface (iSCSI) Targets and Name Servers by Using Service Location Protocol version 2 (SLPv2)
RFC 4173 - Bootstrapping Clients using the Internet Small Computer System Interface (iSCSI) Protocol
RFC 4544 - Definitions of Managed Objects for Internet Small Computer System Interface (iSCSI)
RFC 4850 - Declarative Public Extension Key for Internet Small Computer Systems Interface (iSCSI) Node Architecture
RFC 4939 - Definitions of Managed Objects for iSNS (Internet Storage Name Service)
RFC 5048 - Internet Small Computer System Interface (iSCSI) Corrections and Clarifications
RFC 5047 - DA: Datamover Architecture for the Internet Small Computer System Interface (iSCSI)
RFC 5046 - Internet Small Computer System Interface (iSCSI) Extensions for Remote Direct Memory Access (RDMA)
RFC 7143 - Internet Small Computer System Interface (iSCSI) Protocol (Consolidated)
RFC 7144 - Internet Small Computer System Interface (iSCSI) SCSI Features Update
RFC 7145 - Internet Small Computer System Interface (iSCSI) Extensions for the Remote Direct Memory Access (RDMA) Specification
RFC 7146 - Securing Block Storage Protocols over IP: RFC 3723 Requirements Update for IPsec v3
RFC 7147 - Definitions of Managed Objects for the Internet Small Computer System Interface (iSCSI)
脚注