MCSとマルチパスのどちらがいいのかと言われると困るけど、
しいて言うならロジカルユニットがキューイングしない現時点では、
マルチパス、ラウンドロビンの方が先行したコマンドの結果を受信する前に
次のコマンドを送信できるのでスループットがあがる可能性が高いです。
もちろん利用するアプリケーションによっては差がないことも考えられます。
MCSはiSCSI規格で規定された基本機能ですので細かい制御はできないかわりに依存性はさほどありません。
マルチパスの場合は利用するパス制御ソフトによってはバージョンや機能等に制限がある場合もあります。
どちらの方法を選択するにしてもターゲットとイニシエータの
双方に二系統以上のポートを用意することでパスの冗長化が可能です。
MCSやMPIO(マルチパスI/O)を使うと以下のような状態になります。
+---------------+ TSIH1/CID1 +-----------+
| |------------| |
| initiator 1 | |iSCSI Node |
| (MCS) | TSIH1/CID2 | (Target) |
| |------------| |
+---------------+ +-----------+
+---------------+ TSIH1/CID1 +-----------+
| |------------| |
| initiator 1 | |iSCSI Node |
| (MPIO) | TSIH2/CID1 | (Target) |
| |------------| |
+---------------+ +-----------+
TSIH: Target Session Identifying Handle
CID: Connection ID
ここでパス1(上側)に通信障害が発生すると、
WS2008の場合はおよそ30秒後に正常パスに切り替えが発生します。
+---------------+ TSIH1/CID1 +-----------+
| |--- XXXX ---| |
| initiator 1 | |iSCSI Node |
| (MCS) | TSIH1/CID2 | (Target) |
| |------------| |
+---------------+ +-----------+
+---------------+ TSIH1/CID1 +-----------+
| |--- XXXX ---| |
| initiator 1 | |iSCSI Node |
| (MPIO) | TSIH2/CID1 | (Target) |
| |------------| |
+---------------+ +-----------+
障害発生中は生き残っているパスでI/Oをすべて処理します。
注:現時点のistgtはコネクション単位のリカバリーを行わない為、
MCSの場合はセッション自体の張り直しが行われます
+---------------+ +-----------+
| |--- XXXX ---| |
| initiator 1 | |iSCSI Node |
| (MCS) | TSIH2/CID2 | (Target) |
| |------------| |
+---------------+ +-----------+
+---------------+ +-----------+
| |--- XXXX ---| |
| initiator 1 | |iSCSI Node |
| (MPIO) | TSIH2/CID1 | (Target) |
| |------------| |
+---------------+ +-----------+
障害が修復されると自動的に再接続により冗長パスに戻ります。
+---------------+ TSIH2/CID1 +-----------+
| |------------| |
| initiator 1 | |iSCSI Node |
| (MCS) | TSIH2/CID2 | (Target) |
| |------------| |
+---------------+ +-----------+
+---------------+ TSIH3/CID1 +-----------+
| |------------| |
| initiator 1 | |iSCSI Node |
| (MPIO) | TSIH2/CID1 | (Target) |
| |------------| |
+---------------+ +-----------+
このような冗長パスに対して、
双方のパスをアクティブとして交互に利用するラウンドロビン、
片方をスタンバイとして障害時のみ利用するフェイルオーバーのみなど
いくつかの負荷分散ポリシーの設定ができます。
もちろんパス利用中にポリシーを変更する事も可能です。
ヘッダダイジェスト、データダイジェストを共に有効にして、
MCS、MPIOでそれぞれ二本接続ラウンドロビンに設定して、
CrystalDiskMarkの最大値である1000MBに対してWS2008
から実行した場合はこんな感じに。
さらにデフォルトの100MBに対してMPIOするとこんな感じに。
MCS/ラウンドロビン/1000MB

MPIO/ラウンドロビン/1000MB

MPIO/ラウンドロビン/100MB

見ての通り対象サイズが大きい場合はMCSでMPIOでも今はまだそんなに違いは出ない。
(シーケンシャルライトでちょっと成績いいか)
しかしながら小サイズのI/OではMPIOによる効率アップが効いているようです。
ダイジェストを無効にすると10%ぐらいのスループットアップが期待できますが、
万が一途中経路でデータ破損した場合にそのまま転送されてしまいます。
せっかく経路を冗長化しても転送データ自体が破損していたら意味ないので、
そのあたりのトレードオフを良く考えた方がいい。