iSCSIイニシエーター
iSCSIイニシエーターなどソフトウェアを利用する場合、サーバー側には特別なハードウェアを用意する必要はない。通常のネットワークで利用するNICを利用できる。このNICは普通のネットワーク・アプリケーションでも利用できるし、iSCSIデバイスへのアクセスにも共用して利用することができる。
SCSIコマンドが発行されると、普通このコマンドはSCSIカード、もしくはFCカードに送られて処理されるのであるが、iSCSIイニシエーターはこのコマンドを横からさらい、IPの箱の中に押し込めてネットワーク経由でiSCSIデバイスに送り出す。IPネットワーク上を通過する時点では何処から見ても普通のIPの箱であるため、途中のスイッチやハブに不審がられる事はない。そのまま普通の転送が行なわれる。iSCSIだからといって特別な機能を持ったスイッチが必要になるわけではない。目的地となるiSCSIデバイスは、IPの箱の中からSCSIコマンドを取り出し、そのコマンドを実行する。例えばそれが読み込み命令であったなら、必要となるデータをやはりIPの箱の中に詰め、同じようにIPネットワークを経由してサーバーへとデータを送り返すのだ。
ソフトウェアを利用する場合、特別な機器が要らないというメリットがある反面、I/O処理のためにネットワーク処理が実行されてしまうため、通常の利用形態に比べてCPU負荷が増大するという欠点が生ずる。実行するI/O処理の種類にもよるが、FCを使った場合に比べ、筆者の経験ではCPU全体に対し数%から15%弱程度余計にCPU使用率が上がってしまう可能性がある。従ってiSCSIを使う場合は後述するオフロード・エンジンが必須アイテムであると主張する方もいるほどだ。オフロード・エンジンが利用できると、CPUの負荷が相当軽減できるので、確かに効果は大きいが、CPUのパワーは技術進歩と共に年々コスト・パフォーマンスを向上させているので、そのような細かなことは気にすることはないという考え方もある。筆者はどちらかと言うと後者の意見に賛成だ。
iSCSIオフロード・エンジン
iSCSIに必要となるTCP/IPやiSCSIにかかわる処理を、サーバーのCPUではなくカード(NIC)側で実行してしまおうというのがオフロード・エンジンである。当然ながらiSCSIだけの機能を備えていても仕方がないため、通常はTCP/IPの機能とセットで提供される。
因みにTCP/IPの機能だけを装備したオフロード・エンジン(TCP/IP offload engine :TOE)も存在するが、これを用いてiSCSIデバイスへアクセスする場合、CPU負荷はある程度軽減できるが、iSCSIイニシエーターをサーバーへ導入せねばならない。iSCSIデバイスへのアクセスはiSCSIオフロード・エンジンに搭載されたNICを使った場合でも、ソフトウェアを使った場合と全く変わりはない(図8-6)。
iSCSIオフロード・エンジンが搭載されたNICはiSCSI専用に使われることが多いので、この観点で言うとFC用のHBAと大差はない。まだiSCSIが出て間もない頃、オフロード・エンジンを使わないとiSCSIは使い物にならないのだ!とまで言い切った方は多数おられたが、筆者の感覚としてはそこまで言うほどの必須アイテムではないという印象だ。
この理由として現在CPUのパワー向上は非常に目覚しく、かつWindowsサーバーなどで利用されるIA(Intel Architecture)サーバーであっても、マルチコアのプロセッサーが多数出現しているという事実が見逃せない。マルチコアのプロセッサーであればCPUはiSCSI処理のために適用業務処理がピタッと止まってしまうことはない。そうは言ってもiSCSIオフロード・エンジンがないよりはあったほうが望ましいという点は否定できない。CPUパワーをiSCSI処理で消費されてしまうのは如何にも勿体ないと考えるのは至極当然のことだからだ。
現在、iSCSIオフロード・エンジンを採用する最大の価値はCPUの負荷分散目的よりも、「iBoot」と呼ばれるiSCSIを使ったシステム・ブートが容易になる点が大きい。NASでは実現できていないシステム・ブートがiSCSIでは可能なのだ。
ソフトウェアによるiSCSIイニシエーターの利用では当然ながら普通はOS上で稼動するTPC/IPが起動しないとその上で動くiSCSI処理は実行できない。これに対してiSCSIオフロード・エンジンではOSの起動前にTPC/IPとiSCSIをカード上で実行できるので、OSを立ち上げるIPL用途ではオフロード・エンジンを使うほうが使いやすく簡単であり安心感が大きい。
FCカードやSCSIカードと使い勝手を比べてみてもほぼ同じなので、iSCSIオフロード・エンジンを使ってみると意外に今までと違和感がないというのが実感であろう。iSCSIを利用したSAN環境でiBootを利用する形態は、FC SANにおけるSANブートと区別するため、特に「iSCSI SANブート」と呼ばれている。