iscsi (Internet SCSI) 基礎と実際 藤田智成 fujita.tomonori@lab.ntt.co.jp NTT サイバーソリューション研究所 SACSIS2006
The fundamentals: SCSI
SCSI イニシエータ SCSI コマンドを送る 通常の場合計算機 トランスポート イニシエータとターゲットを接続するための媒体 ターゲット SCSI コマンドを実行 ディスクアレイ テープライブラリ等 ロジカルユニット ディスクドライブ テープドライブ等 クライアント サーバモデル トランスポート イニシエータ ターゲット 0 1 ロジカルユニット SACSIS2006- FUJITA Tomonori 3 NTT Cyber Solutions Laboratories n
SCSI-1/SCSI-2 トランスポートにパラレルインターフェイスだけを想定していた 長さに制限あり 高速化が難しい SACSIS2006- FUJITA Tomonori 4 NTT Cyber Solutions Laboratories
SCSI-3 SCSI 規格が分割された デバイス依存コマンド ( ディスク テープ等 ) 共通コマンド ( デバイスの種類に非依存 ) トランスポート パラレルインターフェイスからの解放 先進的なインターフェイス技術の採用 SACSIS2006- FUJITA Tomonori 5 NTT Cyber Solutions Laboratories
SCSI-3 Architecture http://www.t10.org/scsi-3.htm SACSIS2006- FUJITA Tomonori 6 NTT Cyber Solutions Laboratories
Storage meets Network
Storage Area Network (SAN) パラレルケーブルの代わりに高速なインターコネクト技術を使う 代表的なインターフェイス Fibre Channel Protocol (FCP) Fibre Channel Internet SCSI (iscsi) Ethernet, iscsi HBA SCSI RDMA Protocol (SRP) RDMA-capable interface (Infiniband, RDMA NIC) SACSIS2006- FUJITA Tomonori 8 NTT Cyber Solutions Laboratories
Network Attached Stoarge: NFS, CIFS, etc NAS ファイルレベルのプロトコル ファイル作成 ディレクトリ作成 ファイル読み取り etc クライアントは特定のファイルシステムを使う SAN ブロックレベルのプロトコル セクタ番号 0 番から 16 セクタ読む etc クライアントは 従来のファイルシステム データベースをそのまま使う SACSIS2006- FUJITA Tomonori 9 NTT Cyber Solutions Laboratories
SAN 利用例 1: NAS head NAS サーバのディスクとして SAN を使う Client SAN SAN Switch NAS head Disk array SACSIS2006- FUJITA Tomonori 10 NTT Cyber Solutions Laboratories
SAN 利用例 2: High Availability 複数のホストで一つの Disk array を共有 稼動系 待機系 SAN LAN Switch SAN Switch Disk array Client SACSIS2006- FUJITA Tomonori 11 NTT Cyber Solutions Laboratories
SAN 利用例 3: Storage Pool クライアントは直接 SAN のディスクを使う SAN SAN Switch Client Disk array SACSIS2006- FUJITA Tomonori 12 NTT Cyber Solutions Laboratories
SAN 利用例 4: ディザスタリカバ リ SAN のディスク to ディスクのリモートミラーリング 拠点 A 拠点 B SACSIS2006- FUJITA Tomonori 13 NTT Cyber Solutions Laboratories
What s iscsi?
iscsi はトランスポートに TCP/IP を使い SCSI コマンドを運ぶ SACSIS2006- FUJITA Tomonori 15 NTT Cyber Solutions Laboratories
なぜ iscsi が必要だったのか? Fibre Channel (FC) が SAN の主流技術 ハードウェア (FC HBA スイッチ ストレージ ) が高価 FC の技術者が少ないため高コスト SACSIS2006- FUJITA Tomonori 16 NTT Cyber Solutions Laboratories
安価な IP 技術を使う SAN - iscsi 特徴 Ethernet 用ハードウェアは安い TCP/IPやEthernetの技術者は多い 距離の制限がない 他の様々なIP 技術との連動が容易 普及状況 2005 年 iscsi 市場は 130% 拡大 ( 米 IDC) SACSIS2006- FUJITA Tomonori 17 NTT Cyber Solutions Laboratories
The basics of iscsi
Sessions and Connections クライアント Initiator iscsi セッション TCPコネクション TCPコネクション TCPコネクション iscsi セッション サーバ Target Target セッションは SCSI ケーブルに相当 一つ以上のコネクションを保持 コマンドの配送順番は守られる SACSIS2006- FUJITA Tomonori 19 NTT Cyber Solutions Laboratories
iscsi アーキテクチャ例 iscsi Client (Network Entity) Initiator (iscsi node) iqn.1996-08.jp.co.ntt:client.157e6572bd 10.1.30.4 Network Portal NIC Network Portal NIC 10.1.30.21:3260 Target (iscsi node) iqn.1997-06.com.ntt:server.disk.0902 0 1 n 10.1.40.6 NIC Network Portal NIC Network Portal 10.1.40.3:3260 iqn.1997-06.com.ntt:server.disk.a032 0 1 n Target (iscsi node) iscsi Server (Network Entity) SACSIS2006- FUJITA Tomonori 20 NTT Cyber Solutions Laboratories
iscsi アーキテクチャ iscsi Entity (client, server) Network Portal (IP network address) を一つ以上持つ iscsi Node (initiator, target) を一つ以上持つ Globally unique な名前で識別される SACSIS2006- FUJITA Tomonori 21 NTT Cyber Solutions Laboratories
iscsi イニシエータドライバ 通常の SCSI HBA のドライバの一種 HBA ではなく TCP/IP スタックにアクセス 必要なハードウェアは NIC だけ ファイルシステムやアプリケーションからは 違いは分からない SACSIS2006- FUJITA Tomonori 22 NTT Cyber Solutions Laboratories
iscsi ターゲットドライバ 必要なハードウェア NIC ディスクドライブ 処理 イニシエータから iscsi パケットを受け取る パケットから SCSI コマンドを取り出す コマンドを実行する ディスクの入出力 コマンドの結果を iscsi パケットに入れる イニシエータにパケットを送信する SACSIS2006- FUJITA Tomonori 23 NTT Cyber Solutions Laboratories
iscsi messages
iscsi Protocol Data Unit (PDU) イニシエータ ターゲット間のデータフォーマット Control messages SCSI commands Parameters Data SACSIS2006- FUJITA Tomonori 25 NTT Cyber Solutions Laboratories
PDU format Basic Header 常に 48 バイト Additional Header Header digest CRC32 Data Segment Data Digest CRC32 Basic Header Additional Header ( オプション ) Header digest ( オプション ) Data Segment ( オプション ) Data Digest ( オプション ) 48 バイト 4 バイト 4 バイト SACSIS2006- FUJITA Tomonori 26 NTT Cyber Solutions Laboratories
Initiator to target messages 00 NOP-out 01 SCSI command Ping or answer to NOP-in Send SCSI CDB 02 03 04 05 06 10 Task Mgmt request Login request Text request SCSI DataOut Logout request SNACK request Abort Tasks, reset target or LU Create a connection Used for Extensible commands Contain Data for SCSI Write End a connection/session Request retransmission SACSIS2006- FUJITA Tomonori 27 NTT Cyber Solutions Laboratories
Target to initiator messages 20 NOP-In Ping or response to a NOP-Out 21 SCSI response Send SCSI command status and sense 22 Task Mgmt response 23 Login response 24 Text Response 25 SCSI DataIn Contain data for SCSI READ 26 Logout response 31 Ready To Transfer target is ready to receive write data 32 Asynchronous Msg Sends event notifications 3F Reject Reject initiator messages SACSIS2006- FUJITA Tomonori 28 NTT Cyber Solutions Laboratories
iscsi PDU 例 -SCSI Read 48 バイトの iscsi PDU が TCP のデータとして含まれている SCSI CDB (Command Descriptor Block) SACSIS2006- FUJITA Tomonori 29 NTT Cyber Solutions Laboratories
iscsi operations
ログイン コネクションを作成する 最初のコネクションであればセッションも作る 三段階 Security Negotiation 認証 Operational Negotiation パラメータ Full Feature Phase SCSI コマンドが実行できる SACSIS2006- FUJITA Tomonori 31 NTT Cyber Solutions Laboratories
Authentication No authentication CHAP Target による Initiator の認証 Initiator による Target の認証 RADIUS も使えます Kerberos SPKM (Simple Public-key Mechanism) SRP (Secure Remote Password) SACSIS2006- FUJITA Tomonori 32 NTT Cyber Solutions Laboratories
パラメータネゴシエーション例 Login request Login response SACSIS2006- FUJITA Tomonori 33 NTT Cyber Solutions Laboratories
パラメータ List / value List 型 - 選択可能な値をリストとして提示 ( 応答側は一つを選択する ) Value 型 特定の値を指定 Negotiation / Declare Negotiation 型 イニシエータとターゲットの双方が accept できる値に設定される 例えば 小さい方の値など ( パラメータによって決定方法は異なる ) イニシエータとターゲットが 1 つの値を共有 Declare 型 一方的に宣言して決定 イニシエータとターゲットが別の値を持つパラメータもある SACSIS2006- FUJITA Tomonori 34 NTT Cyber Solutions Laboratories
SCSI Command Message Initiator Task Tag このコマンドを識別するためのユニークな値 Expected Data Transfer Length このコマンドで発生するデータ転送の長さ Command sequence Number コマンドの配送順序を守るために使う OP code & R/W flags AHS length Data Segment Length LUN Initiator Task Tag Expected Data Transfer Length Command SN Expected Status SN SCSI CDB 8 bytes 16 bytes SACSIS2006- FUJITA Tomonori 35 NTT Cyber Solutions Laboratories
SCSI DataIn Message Initiator Task Tag Read command と一致 Data Segment Len Target Transfer Tag Error recovery に使用 Max Command SN Flow control Data Sequence Number 0 から始まり DataIn messege 毎に増やす Buffer Offset データのオフセット OP code & flags AHS & Data Segment Len LUN Initiator Task Tag Target Transfer Tag Status SN Expected Command SN Max Command SN Data SN Buffer offset Residual Count 8 bytes SACSIS2006- FUJITA Tomonori 36 NTT Cyber Solutions Laboratories
Read に関係するパラメータ イニシエータの宣言した MaxRecvDataSegmentLength(MRDSL) イニシエータが受け取るPDUの最大のデータセグメント長 宣言型のパラメータ イニシエータの MRDSL 値とターゲットの MRDSL 値は異なる SACSIS2006- FUJITA Tomonori 37 NTT Cyber Solutions Laboratories
SCSI Read sequence Initiator Target 4KB の Read 要求 2KB のデータ (<= MRDSL) 2KB のデータ iscsi Command SCSI Read ITT=0x1 LUN=0 LBA=0 Length=0x1000 iscsi DataIn ITT=0x1 DataSN=0 Length=0x800 offset=0 iscsi DataIn ITT=0x1 DataSN=1 Length=0x800 offset=0x800 iscsi command response ITT=0x1 SCSI status 0x00 (good) Initiator の MRDSL = 2048 4K の READ を 2 個の DataIn で受け取る SACSIS2006- FUJITA Tomonori 38 NTT Cyber Solutions Laboratories
SCSI Write Unsolicited/Solicited Unsolicited Initiator は Target の許可を受けずに Write data を送信する Solicited Initiator は Target の許可 (R2T command) を得て Write Data を送信する Initiator Target iscsi Command SCSI Write iscsi Data Out Initiator Target iscsi Command SCSI Write iscsi R2T iscsi DataOut SACSIS2006- FUJITA Tomonori 39 NTT Cyber Solutions Laboratories
SCSI Write- Immediate data Unsolicited の一種 iscsi Command SCSI Write と一緒にデータを送信する (DataSegment として ) Initiator Target iscsi Command SCSI Write + data SACSIS2006- FUJITA Tomonori 40 NTT Cyber Solutions Laboratories
SCSI R2T Message Initiator Task Tag Write command と一致 Target Transfer Tag この R2T message を識別するユニークな値 R2T sequence number 同じ ITT を持つ R2T message の順序を保護 Buffer Offset 要求データのオフセット Desired Length 要求するデータ長 OP code & flags AHS & Data Segment Len LUN Initiator Task Tag Target Transfer Tag Status SN Expected Command SN Max Command SN R2TSN Buffer offset Desired Data Xfer Length 8 bytes SACSIS2006- FUJITA Tomonori 41 NTT Cyber Solutions Laboratories
SCSI DataOut Message Initiator Task Tag Write command と一致 Target Transfer Tag 0xffffffff (for Unsolicited) R2T と一致 (for solicited) DataSN 1 つのシーケンス内で 0 から始まり DataOut messege 毎に増やす Buffer Offset このメッセージが運ぶデータのオフセット OP code & flags AHS & Data Segment Len LUN Initiator Task Tag Target Transfer Tag Reserved Expected Stat SN Reserved Data SN Buffer offset Reserved 8 bytes SACSIS2006- FUJITA Tomonori 42 NTT Cyber Solutions Laboratories
Write に関係するパラメータ (1) ターゲットの宣言した MaxRecvDataSegmentLength ターゲットが受け取るPDUの最大データセグメント長 FirstBurstLength UnsolicitedなWriteの最大長 MaxBurstLength R2Tで要求できるWriteの最大長 InitialR2T UnsolicitedなWriteを使えるか Yes -> UnsolicitedなWriteを使えない SACSIS2006- FUJITA Tomonori 43 NTT Cyber Solutions Laboratories
Write に関係するパラメータ (2) MaxOutstandingR2T 未処理の R2T コマンドの最大数 ImmediateData Immediate dataを使えるか Yes -> Immediate dataを使える SACSIS2006- FUJITA Tomonori 44 NTT Cyber Solutions Laboratories
SCSI Write sequence 8KBのWrite 要求 ImmediateはNoなのでデータセグメントはない 1KBのDataOut <= FirstBustLen 2KB ずつ送る <= MRDSL Initiator Target の MRDSL = 2048 FirstBurstLength = 1024 MaxBusrtLength = 4096 ImmediateData = No InitialR2T = No MaxOutstandingR2T = 1 iscsi Command SCSI Write ITT=0x1 Length=0x2000 iscsi DataOut ITT=0x1 TTT=0xffffffff DataSN=0 Length=0x400 offset=0 iscsi R2T ITT=0x1 TTT=0x1a Length=0x1000 offset=0x400 iscsi DataOut ITT=0x1 TTT=0x1a DataSN=0 Length=0x800 offset=0x400 iscsi DataOut ITT=0x1 TTT=0x1a DataSN=1 Length=0x800 offset=0xc00 iscsi R2T ITT=0x1 TTT=0xb0 Length=0xc00 offset=0x1400 iscsi command response ITT=0x1 SCSI status 0x00 (good) Target iscsi DataOut ITT=0x1 TTT=0xb0 DataSN=0 Length=0x800 offset=0x1400 iscsi DataOut ITT=0x1 TTT=0xb0 DataSN=1 Length=0x400 offset=0x1c00 合計 1KB 合計 2KB 合計 5KB 合計 7KB 合計 8KB SACSIS2006- FUJITA Tomonori 45 NTT Cyber Solutions Laboratories
Try iscsi
ターゲットによるイニシエータの アクセス制御 ターゲットベース ターゲット毎にアクセスできるイニシエータを IP 等で制限 一つの iscsi サーバの中に複数のターゲットを起動 LUN ベース ロジカルユニット毎にアクセスできるイニシエータを IP 等で制限 Initiator Initiator Initiator 0 1 Target Target Target LUN masking と呼ばれる Initiator 2 SACSIS2006- FUJITA Tomonori 47 NTT Cyber Solutions Laboratories
イニシエータドライバのサポート状況 Linux 標準カーネルに含まれている Windows Microsoft が配布 SACSIS2006- FUJITA Tomonori 48 NTT Cyber Solutions Laboratories
Linux イニシエータドライバ sfnet (linux-iscsi 4.x) 多くの商用ストレージがサポート 2.6.10 カーネルまでをサポート RHEL 等のディストリビューションに含まれている open-iscsi (linux-iscsi 5.x) 標準カーネルに取り込まれている (2.6.15 から ) 他の実装と比較すると完成度がまだ低い 最新のカーネルでしかコンパイルできない core-iscsi SACSIS2006- FUJITA Tomonori 49 NTT Cyber Solutions Laboratories
ターゲットドライバの サポート状況 Linux 標準カーネルのサポートに向けて開発中 Windows Windows Storage Server 2003 に含まれる予定 (WinTarget と呼ばれていた他社製品を買収 ) SACSIS2006- FUJITA Tomonori 50 NTT Cyber Solutions Laboratories
Linux ターゲットドライバ iscsi Enterprise Target Software (IET) 最も広く使われている Linux 用 iscsi ターゲットドライバ ファイルやブロックデバイス (LVM 等を含む ) をイニシエータにサービスできる 標準のカーネルに含まれる実装とは異なる SACSIS2006- FUJITA Tomonori 51 NTT Cyber Solutions Laboratories
More Performance?
TCP/IP is bottleneck 10GbE では問題 プロトコル処理 ( 割り込み ) メモリコピー OS 機能のハードウェア化 TCP/IP スタック iscsi 処理 通常の NIC のモデル SACSIS2006- FUJITA Tomonori 53 NTT Cyber Solutions Laboratories
TCP Offload Engine TCP/IP スタックを NIC 上のハードウェア化 Socket API を保持 通常の NIC 用 iscsi ドライバがほぼそのまま使える メモリコピーは発生 SACSIS2006- FUJITA Tomonori 54 NTT Cyber Solutions Laboratories
iscsi Host Bus Adapter (HBA) TCP/IP スタックと iscsi プロトコル処理機能を NIC 上のハードウェア化 ベンダ独自のインターフェイスを利用 各 HBA 毎にドライバが必要 通常 NIC 用 iscsi ドライバと協調するのが困難 SACSIS2006- FUJITA Tomonori 55 NTT Cyber Solutions Laboratories
iscsi Extensions for RDMA (iser) iscsi が RDMA を利用してデータ転送するための拡張 RDMA capable interface InfiniBand (IB) RDMA NIC (RNIC) Internet Wide Area RDMA Protocol (iwarp) RDMA Protocol Interface を提供 Ethernet で RDMA を実現 SACSIS2006- FUJITA Tomonori 56 NTT Cyber Solutions Laboratories