TOP
«
»

FreeBSD 7.1 + Microsoft iSCSI Initiator / Multiple Connections per Session(MCS)

更新>MCS/MPIO/64bitLBAパッチ 2008/12/25版

Microsoft iSCSI Initiator Users Guide によると
現バージョンでサポートしている冗長化は
Multiple Connections per Session(MCS)
Microsoft MPIO support
だそうな。

iscsi-targetは1コネクション(TCP)を1スレッド、
当該セッションパラメータをスレッドに埋め込みで管理しています。
もし複数スレッド間でパラメータを共有できればMCSが容易になります。
でもそこまで作りこむのはかなり時間がかかりそうなので、
動作確認の意味も込めて、スレッド内のSCSIコマンド処理前に
各スレッドから必要なシーケンス番号をコピーするという
なんちゃって同期機能をつけて対応(笑)
この動作の前提として複数スレッドが同時に同じシーケンス番号を
更新しないとすごく期待しています。
一般化するなら送受信スレッドとパケット処理スレッドを作って、
FIFOキューでつなぐのがいいと思ってるけどどうでしょ。

用意するもの:
LANを2ポート以上装備したマシン2台
スイッチングハブ2台
iscsi-targetのパッチファイル iscsi-target-20081118-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make patch
# bzcat < iscsi-target-20081118-patch.bz2 | patch -p0
# make
# make install

-C 最大接続コネクション数(デフォルト4)
-P 接続可能なポータルのIPアドレス(カンマ区切り)

いわゆる仕様:
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ1のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
最初に接続したコネクションが壊れるとおかしくなります。

~参考設定~
ターゲットにはしばらくブログに書いてきたExpress5800/110Geに
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
(参考設定では192.168.2.0/24と192.168.3.0/24を利用)

ターゲット側(FreeBSD7.1):
/etc/rc.conf

ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em0_alias0="inet 192.168.3.37  netmask 255.255.255.255"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"
ifconfig_em1_alias0="inet 192.168.2.37  netmask 255.255.255.255"

iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.2.36,192.168.3.36,192.168.2.37,192.168.3.37"

/usr/local/etc/iscsi/targets

extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
target0                 rw      extent0         192.168.2.0/24
target1                 rw      extent1         0/0

ホスト側(WindowsServer2008):
オンボードLANに192.168.2.33/24を、
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。

ログインするときに[詳細設定]でローカルアダプタ、ソースIP、
ターゲットポータルを指定します。

接続できたら、[詳細]でセッションのプロパティを開き、[接続]を押します。

[追加]を押します。

ソースIP、ターゲットポータルを別のものを指定します。

負荷分散ポリシーを適当に変更する。

設定はこんな感じですが、先に述べた通り最初のコネクションが
すべてのデータを持っているのでこれが死ぬと復帰できなくなります。
とりあえず動くところを見ないとね。

タグ: , , ,

コメント / トラックバック2件

  1. FreeBSD 7.1 + Microsoft iSCSI Initiator / MCSパッチの新しいの…

    いつもエラーが出て気になっていたので修正しました(汗)
    パッチファイル: iscsi-target-20081129-patch.bz2
    # cd /usr/ports/net/iscsi-target
    # make clean
    # make patch
    # bzcat < /path/to/iscsi-target-20081129-patch.bz2 | pa…

  2. MCSパッチ修正 2008/11/30版…

    やっぱりバグバグだった。
    パッチファイル: iscsi-target-20081130-patch.bz2
    # cd /usr/ports/net/iscsi-target
    # make clean
    # make patch
    # bzcat < /path/to/iscsi-target-20081130-patch.bz2 | patch -p0
    # make
    # make install
    新規オ…..

コメントをどうぞ