Skip to content

Instantly share code, notes, and snippets.

@261shimizu
Created June 23, 2017 08:56
Show Gist options
  • Save 261shimizu/808fc80130ff692a0a0d6271ac5876ad to your computer and use it in GitHub Desktop.
Save 261shimizu/808fc80130ff692a0a0d6271ac5876ad to your computer and use it in GitHub Desktop.
iSCSIについて

iSCSIについて

iSCSIとは


ストレージの世界で標準となっているSCSIコマンドやデータをTCP/IPパケットの伝送フレームの中に包むことでSCSIコマンド体系を外から見えなくすることにより、
ストレージ製品のIPネットワークへの直接接続を可能にする技術。
自分がかかわったものでは、共有ディスクへの接続にiSCSIを使用していた。

ストレージ製品がネットワークに直結できることで、ネットワーク網を構成するハブ、ルータ、スイッチ類は従来のものが使用可能になる。

メリットは、

  • 既存アプリケーションはiSCSIを意識する必要がなく、従来通りローカルストレージにアクセスするのと同じ手順でターゲットストレージのデータを読み書きできる。
  • ディスクへの読み書きは、SANと同じ風呂㏍うI/Oであり、NASのようなファイルシステムはストレージ側に必要としない。
  • 今後劇的に速くなる可能性がある(イーサネットの伝送スピードに依存するため)
  • ネットワーク管理の面からも、ストレージ機器を他の通信機器と同じように同一インフラ網上で統合管理が可能

iSCSIのコンセプト


Small Computer System Interface(SCSI)は、HDDやテープドライブ、スキャナなどの周辺装置との入出力に使用されるインターフェイス。
これはパラレル・バスを介したブロックデータの送受信を基本とする。
また、SCSIはクライアント/サーバモデルであって、SCSIコマンドを発行し、処理を要求する「イニシエータ」と、その処理を行ってレスポンスを返す「ターゲット」によって構成される。

iSCSIのコンセプトは、SCSIコマンドやレスポンスをTCPパケットにカプセル化することで、従来のパラレル・バスを基にしたSCSIトランスポートを、IPネットワークによるトランスポートに置き換えること。
これによって、IPベースのStorage Area Network(IP-SAN)の構築が可能

他技術との比較


  • Direct Attached Storage(DAS)
    サーバにストレージ・デバイスを1対1接続する従来の方法。ストレージの管理や拡張性などに問題がある。

  • FC-SAN(Fibre Channel - Storage Area Network)
    SCSIプロトコルをカプセル化することで、ストレージネットワークを構成し、ブロックデータの送受信を行う点ではiSCSIと同じ。
    違いは、トランスポートとして、ファイバ・チャネルを使用する点。

iSCSIに比べてデータ伝送効率やSCSIとの親和性などのメリットがある。
しかし、コスト面や、使えるエンジニアが不足しているという問題点がある。

  • Network Attached Storage(NAS)
    IPネットワークを介して、ストレージへのアクセスを行う点ではiSCSIと同じ。
    違いは、iSCSIがSCSIレベルでブロック・データのアクセスをIPネットワークで行うのに対して、
    NASはファイル・レベルでのアクセスを行うこと。

ストレージ・デバイス側にファイルシステムを持つことから、マルチプラットフォーム間でのファイル共有などのメリットがある。
しかし、パフォーマンスやコストの面でデメリットがある。

iSCSI階層モデル


イニシエータ ターゲット
SCSI Application(File System) ↓↑ Device Server
SCSI ↓↑ SCSI
iSCSI ↓↑ iSCSI
TCP/IP ↓↑ TCP/IP
データリンク層 ↓↑ データリンク層
物理層 ↓↑ 物理層
IPネットワーク

iSCSIレイヤは、SCSIレイヤとTCP/IPレイヤとの間に位置する。
SCSIレイヤからのSCSIコマンドやレスポンス、データを受けて、それをカプセル化処理してiSCSI PDUを作成し、TCP/IPが提供するTCPコネクションを介して送信を行う
また、TCPコネクションを介して受信したiSCSI PDUを処理して、SCSIコマンドやレスポンス、データを抜きだして、それをSCSIレイヤに通知する。

iSCSIプロトコル概要


  • セッションの確立とログイン iSCSIにおいて、イニシエータとターゲット間の論理的な通信路は、iSCSIセッションと呼ばれる。
    iSCSIセッションは、1つもしくは複数のTCPコネクションから構成される。

このiSCSIセッションの確率は、イニシエータがターゲットとの間でTCPコネクションを張り、認証とネゴシエーションをすることによって行う。
認証は、不正アクセスを防ぐためにターゲットによりイニシエータの認証を行うのみならず、成りすましなどを防ぐためにイニシエータによるターゲットの認証を行うことも可能である。

iSCSIのイニシエータ・ターゲット間のやり取り詳細


iSCSIにおいて、
SCSIコマンドの送信は、SCSI Comand PDUにより、
データ転送は、SCSI Data In/Out PDUにより、それぞれ行う。

イニシエータは、iSCSIセッション内のどのコネクションからでもSCSIコマンドの発行を行うことができるが、コマンドに対するデータ転送やSCSIレスポンスはコマンドが発行されたコネクションを使用する必要がある。

データ転送は、受信側の準備が整うのを待って送信することが基本となる。
データ受信側が受信可能になれば、Ready To Transfer(R2T)送信

送信側がR2Tに対するレスポンスとしてデータ送信

(データが大きい場合、複数に分けるので)受信側R2T送信(データがまだ残っているかはFINALフラグで判別)

送信側がデータ送信(最後のデータならFINAL=TRUEとして)

受信側がレスポンスを返す(ステータスコード)

iSCSIネームとその解決


iSCSIノードは、ノード識別や管理のためのiSCSIネームを持つ。
これは、静的に設定できたり、SendTargetsコマンドを発行してターゲットに問い合わせたり、「ゼロ設定」と呼ばれる方法ととって解決する

iSCSIの将来と今後の課題


  • セキュリティ面の対策
    iSCSIはIPSecを使用することでセキュリティ面の対応をしている)

  • iSCSIイニシエータの実装形態について
    2つ方法がある。
    1つは、通常のNICを使用して、TCP/IPプロトコル処理やiSCSIプロトコル処理をSCSIデバイス・ドライバで行う方式。
    こちらはコストの面でメリットがある。
    しかし、プロトコル処理に古たーのCPUパワーを消費するために、パフォーマンス面がデメリットとなる。
    もう一つは、TCP/IPやiSCSIのプロトコル処理をアダプタ側にオフロードするもの。
    こちらはイニシエータのCPU処理としてはSCSIの場合と同程度となってパフォーマンス面でメリットがあるが、コストがデメリット。

  • iSCSIの技術的な課題 上記のように、iSCSI使用のメリットは、従来のプロセスを変更する必要がないこと、既存のIPインフラを利用できることなどがある。
    しかし、TCP/IPを使用することで、デメリットもある。
    そもそもTCP/IPは、ネットワークにアナログ網かつ低速/中速の通信インフラを想定していた時代のプロトコルであってきわめて古典的な処理が依然として残っている。
    一方、ストレージ機器へのデータ通信は大量のデータがバースト的に発生する特徴がある。
    通信インフラが高速になってくる段階で、この冗長的なプロトコル処理が機器本体のCPU処理負荷に大きな影響を及ぼすらしい。
    特にイニシエータ側のCPU負担は顕著らしい

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment