‘patch’ タグのついている投稿

FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/25版 for Microsoft iSCSI Initiator

2008年12月25日 木曜日

機能UP更新>MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/17版

今年最後のパッチリリースです。
ただいま将来の拡張に向けていろいろ準備中です。
ライトキャッシュの操作を揮発性(iscsi-targetを終了するまで)ですが
変更できるようになりました。

パッチファイル: iscsi-target-20081225-patch.bz2

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081225-patch.bz2 | patch -p0
# make
# make install

新しいコマンドラインオプション:
-C 同一ターゲットへの接続コネクション数(デフォルト8)
-P 接続可能なポータルのIPアドレス(セミコロン区切り)
-A Discoveryセッションにも認証を強制する(デフォルトなし)
-a <path> 認証用データファイル(デフォルト /usr/local/etc/iscsi/auths)
-i <path> 作成するPIDファイル(デフォルト /var/run/iscsi-target.pid)

※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。

新しい機能:
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できます。
いまのところZFS以外のファイルシステムをサポートする予定はありません。
2TB以上はGPT(GUIDパーティションテーブル)を使えるOSが必要です。

認証ファイル及びPIDファイルを個別に指定し複数のポートで起動できます。

認証なしで探索(Discovery)セッションを通さないモードが選択できます。

MCS(Multiple Connections per Session)機能により複数コネクションで
同一のターゲットに接続可能になります。

ダイジェスト機能(CRC32によるデータチェック)を有効にできます。
データダイジェスト=ディスクへの読み書きデータなどに有効。
ヘッダダイジェスト=iSCSIプロトコルヘッダに有効。

targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。

targetsファイル内のflagsカラムにターゲット接続(ログイン)時の
認証とダイジェストを強制するフラグを指定できます。

auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。

targetsファイル内のsizeカラムにペタバイト、エクサバイト、ゼタバイトの
短縮形としてP, E, Zが利用できます。
それぞれ、PB=1024TB, EB=1024PB, ZB=1024EBとして計算されます。

targetsファイル内でクォート文字(“と’)により空白文字を
文字列の一部として扱えます。

認証情報は/usr/local/etc/iscsi/authsに書きます。
Microsoft iSCSI Initiator が相手の場合はシークレットを
12文字以上16文字以下で指定します。

相互認証を有効にできます。
認証情報は/usr/local/etc/iscsi/authsに書きます。
相互認証キー(ユーザ名)はターゲットのIQNになります。

IPv6のリンクローカルアドレスでの接続を考慮します。

いわゆる仕様:
全てのIPアドレスが同じポート番号でグループ1のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
デバイスの最大容量(LBA)が符号付64ビット(2^63=8EB)に制限されています。

主な修正点:
SCSIのライトキャッシュを切られたらO_FSYNCを設定するように修正しました。
シグナル処理用スレッドを新設しました。(処理は未実装)
SIGTERM/SIGINTに対してシャットダウン処理を行うように修正しました。

~参考設定~
ターゲットにはしばらくブログに書いてきたExpress5800/110Ge
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
(参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、
IPv6に2001:380:e00:42::/64をルータ広告で利用)

ターゲット側(FreeBSD 7.1):
/etc/rc.conf

ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"

/usr/local/etc/iscsi/targets

# extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
extent2         /tank/iscsi/iscsi-target2       0       80GB
# target        flags           storage         netmask
target0         rw,auth         extent0         192.168.2.0/24
target1         rw,digest       extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128
target2         rw,auth,headerdigest extent2    192.168.2.0/24;129.168.3.0/24

/usr/local/etc/iscsi/auths

# CHAP secret
# name:type:secret
iqn.1991-05.com.microsoft\:ceres:CHAP:1234567890123456
#

ホスト側(Windows Server 2008):
オンボードLANに192.168.2.33/24を、
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。
ここではIPv4による画像のみ掲載しますがIPv6でも同様に接続できます。

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

 

必要に応じてダイジェストにチェックを付けて有効にします。
(指定しなくてもターゲット側で強制していれば自動的に有効になります)

接続に認証が必要な場合は指定します。

相互認証が必要な場合は、予め双方に設定した上で指定します。

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

[追加]を押します。

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

必要に応じてダイジェストおよび認証を指定します。

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

~相互認証の参考設定~
相互認証を実施するにはイニシエータにシークレットを設定して、
その設定をターゲット側にも設定します。
(通常のCHAPシークレットの設定も必要です)
認証ファイルの検索キー(ユーザ名)はターゲットのIQN(iSCSI Qualified Name)に固定されています。

ターゲット側(FreeBSD 7.1):
相互認証データは通常の認証ファイルと同じになっていますので、
追加して書きます。

/usr/local/etc/iscsi/auths

# mutual authentication
# name:type:secret
iqn.1994-04.org.netbsd.iscsi-target\:target1:CHAP:testchaptest1234
#

イニシエータ側(Windows Server 2008):
iSCSIイニシエータのプロパティで全般タブの[シークレット]を押します。

12文字以上16文字以下でシークレットを設定します。

~2TB以上の容量~
Windows Server 2003以降またはWindows Vistaが必要です。
Windows 2000やWindows XPで利用する場合は2TB(2097152MB)未満にします。

大容量ドライブの利用についてはこちらも参照してください。
http://shell.peach.ne.jp/aoyama/archives/191

FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/23版 for Microsoft iSCSI Initiator

2008年12月24日 水曜日

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

iscsi-targetの内部構造もだいぶ理解できたので、
簡易同期機能を廃止してまともに追従するようにしてみました。

パッチファイル: iscsi-target-20081223-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081223-patch.bz2 | patch -p0
# make
# make install

設定例は以前の投稿をどうぞ。

主な修正点:
メディアの境界チェックが甘かったのを修正しました。
ソースコードの切り分け定義名を変更しました。
従来のMCS簡易同期機能を廃止してより正確に追跡するようになりました。
再接続時にクラッシュする事があったのを修正しました。

FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/21版 for Microsoft iSCSI Initiator

2008年12月22日 月曜日

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

IPv6のリンクローカルアドレスで接続した場合も処理できるようになりました。
複数のiscsi-targetを起動した場合でも使えるように、
認証ファイル及びPIDファイルを個別に指定できるようになりました。
認証なしで探索もできないモードをつけてみました。
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できるようになりました。
(FreeBSD7.1/i386においては符号付64ビット処理の関係で実質8EBが限界)
いまのところZFS以外のファイルシステムをサポートする予定はありません。
ゼタバイト~ヨタバイトのファイルが問題なく作れるようになったら考えるかも?

Windowsで2TB以上のデバイスを利用する場合はGPTが必要になるので、
Windows Server 2003以降またはWindows Vistaが必要です。
2TB以上でブートするには64ビット版 Windows Server 2008または
64ビット版 Windows Vistaが必須ですが未確認です。
Windows 2000やWindows XPで利用する場合は2TB(2097152MB)
未満にします。

~参考URL~
MS WHDC:GPT ドライブを使用する
http://www.microsoft.com/japan/whdc/device/storage/GPT-on-x64.mspx

MS TechNet:GUID パーティション テーブル
http://technet.microsoft.com/ja-jp/library/cc773223.aspx

MS Support:1 ボリュームのサイズが 2 TB 以上のシステム パーティションから Windows Vista を起動できない
http://support.microsoft.com/kb/946557/ja

MS Support:Windows Server 2003、Windows XP、および Windows 2000 で Diskpart.exe を使用してデータ ボリュームを拡張する方法
http://support.microsoft.com/kb/325590/ja

2TB以上のデバイス利用時の注意点:
現時点のWindows Server 2008はGUI上の表示が2147483648MBに
制限されます。
これは2PB(=2048TB)に相当します。
2PB以上のデバイスはdiskpartコマンドラインユーティリティで動くようですが
未確認です。

パッチファイル: iscsi-target-20081221-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081221-patch.bz2 | patch -p0
# make
# make install

設定例は以前の投稿をどうぞ。

新しいコマンドラインオプション:
-A Discoveryセッションにも認証を強制する(デフォルトなし)
-a <path> 認証用データファイル(デフォルト /usr/local/etc/iscsi/auths)
-i <path> 作成するPIDファイル(デフォルト /var/run/iscsi-target.pid)

新しい機能:
targetsファイル内のsizeカラムにペタバイト、エクサバイト、ゼタバイトの
短縮形としてP, E, Zが利用できます。
それぞれ、PB=1024TB, EB=1024PB, ZB=1024EBとして計算されます。

設定ファイルでクォート文字(“と’)により空白文字を文字列として扱えます。

リンクローカル設定例:
実際に設定する場合はifconfigでアドレスを確認すること。
/etc/rc.conf

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;[fe80::290:ccff:fee9:48c9]'"

/usr/local/etc/iscsi/targets

# extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
# target        flags           storage         netmask
target0         rw,digest       extent0         192.168.2.0/24;[fe80::%em0]/10

既知の問題:
長時間ターゲットからの応答がないとWindowsがクラッシュすることがあります。

いわゆる仕様:
全てのIPアドレスが同じポート番号でグループ1のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
デバイスの最大容量(LBA)が符号付64ビット(2^63=8EB)に制限されています。

主な修正点:
オリジナルのバグを修正しました。
Discoveryセッションに認証を強制するオプションを追加しました。
リセットが必要ない場所でリセットしていたので修正しました。
リンクローカルアドレスを処理するように修正しました。
認証ファイル及びPIDファイルを指定できるように修正しました。
LOパラメータを維持できるように修正しました。
LBA4294967040以降にアクセスできない問題を修正しました。
SCSIコマンドのMODE SELECT(6)に応答するようにしました。
SCSIコマンドのMODE SELECT(10),MODE SENSE(10)に応答するようにしました。
SCSIコマンドのREAD CAPACITY(10)をLongLBAに対応しました。
SCSIコマンドのREAD CAPACITY(16)に応答するようにしました。
SCSIコマンドのSYNC CACHE(16)に応答するようにしました。
SCSIコマンドのREAD(12),WRITE(12),WRITE VERIFY(12)に応答するようにしました。
SCSIコマンドのREAD(16),WRITE(16),WRITE VERIFY(16)に応答するようにしました。
ストレージ容量定義にZEPの単位を追加しました。
コンフィグファイルでクォートを解釈するようになりました。

FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/18版 for Microsoft iSCSI Initiator

2008年12月19日 金曜日

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

通信エラー発生時の不具合を多々修正しました(汗)
相互認証に対応しました。

パッチファイル: iscsi-target-20081218-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081218-patch.bz2 | patch -p0
# make
# make install

設定例は以前の投稿をどうぞ。

新しい機能:
ログイン時の相互認証を有効にできます。
認証情報は/usr/local/etc/iscsi/authsに書きます。

主な修正点:
リセットが発生した場合に当該スレッドを正常終了するように変更しました。
リセット時にセッションデータをクリアできない問題を修正しました。
エラー再接続時にマルチパスと誤認識する問題を修正しました。
エラー再接続時に旧コネクションを強制終了するように変更しました。
相互認証関係を追加しました。

~参考設定~
相互認証を実施するにはイニシエータにシークレットを設定して、
その設定をターゲット側にも設定します。
(通常のCHAPシークレットの設定も必要です)
現時点ではユーザ名はターゲットのIQN(iSCSI Qualified Name)に固定されています。

イニシエータ側(Windows Server 2008):
iSCSIイニシエータのプロパティで全般タブの[シークレット]を押します。

12文字以上16文字以下でシークレットを設定します。

ターゲット側(FreeBSD 7.1):
現時点では相互認証データは通常の認証ファイルと同じになっています。

/usr/local/etc/iscsi/auths

# name:type:secret
# mutual authentication
iqn.1994-04.org.netbsd.iscsi-target\:target1:CHAP:testchaptest1234
#

FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/17版 for Microsoft iSCSI Initiator

2008年12月18日 木曜日

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

SCSIステータスを最終パケットで返すようになったので、
小さいサイズでのREAD処理が早くなってネットワーク的に優しくなったはず?
一部の挙動が時々おかしいのだけど、何やらmallocで確保した領域が
すべてゼロクリアされている事を期待しているのかもしれない。
全コードを精査するのは面倒なので、後ろ向きにゼロクリアしてみた。
ここで精査するぐらいなら書き直します(笑)
なんだか当初の予定とは別の方向にいってるような気が・・・(汗)
とりあえず、一ヶ月間の作業成果はこんな感じです。

パッチファイル: iscsi-target-20081217-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081217-patch.bz2 | patch -p0
# make
# make install

新しいコマンドラインオプション:
-C 同一ターゲットへの接続コネクション数(デフォルト8)
-P 接続可能なポータルのIPアドレス(セミコロン区切り)

※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。

新しい機能:
targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。

targetsファイル内のflagsカラムにターゲット接続(ログイン)時の
認証とダイジェストを強制するフラグを指定できます。

auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。

認証情報は/usr/local/etc/iscsi/authsに書きます。
Microsoft iSCSI Initiator が相手の場合はシークレットを
12文字以上16文字以下で指定します。

ダイジェスト機能(CRC32によるデータチェック)を有効にできます。
データダイジェスト=ディスクへの読み書きデータなどに有効。
ヘッダダイジェスト=iSCSIプロトコルヘッダに有効。

いわゆる仕様:
全てのIPアドレスが同じポート番号でグループ1のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
相互認証(mutual authentication)には対応していません。

主な修正点:
ビット演算を気休め的に変更してみました。
mallocで領域確保時に毎回ゼロクリアするように変更しました。
ターゲットログイン時に認証やダイジェストを強制するモードをつけました。
ターゲットログイン時にネットマスクに一致しないイニシエータは拒否するようになりました。
SCSIコマンドのModeSense(6)に少し応答するように変更しました。
Data-Inフェーズの最終PDUでSCSIコマンドステータスも返すように変更しました。
タスクコマンドを正しく処理できなかったのを修正しました。
デフォルトの同時接続数を8に変更しました。

~参考設定~
ターゲットにはしばらくブログに書いてきたExpress5800/110Ge
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
(参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、
IPv6に2001:380:e00:42::/64をルータ広告で利用)

ターゲット側(FreeBSD 7.1):
/etc/rc.conf

ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"

/usr/local/etc/iscsi/targets

# extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
extent2         /tank/iscsi/iscsi-target2       0       80GB
# target        flags           storage         netmask
target0         rw,auth         extent0         192.168.2.0/24
target1         rw,digest       extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128
target2         rw,auth,headerdigest extent2    192.168.2.0/24;129.168.3.0/24

/usr/local/etc/iscsi/auths

# name:type:secret
iqn.1991-05.com.microsoft\:ceres:CHAP:1234567890123456

ホスト側(Windows Server 2008):
オンボードLANに192.168.2.33/24を、
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。
ここではIPv4による画像のみ掲載しますがIPv6でも同様に接続できます。

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

必要に応じてダイジェストにチェックを付けて有効にします。
(指定しなくてもターゲット側で強制していれば自動的に有効になります)

接続に認証が必要な場合は指定します。

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

[追加]を押します。

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

必要に応じてダイジェストおよび認証を指定します。

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

FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/11版 for Microsoft iSCSI Initiator

2008年12月12日 金曜日

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

探索ログインの時にデータダイジェストを使うとエラーになる事が
あったので修正しました。
ネットマスクをセミコロン区切りで複数IPに対応しました。
(オリジナルが対応していないIPv6についても暫定対応)
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。

パッチファイル: iscsi-target-20081211-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081211-patch.bz2 | patch -p0
# make
# make install

/etc/rc.conf

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"

/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         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128

いわゆる仕様:
全てのIPアドレスが同じポート番号でグループ1のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。

主な修正点:
テキストネゴシエーションのバッファ長が増加しました。
データダイジェストでテキスト文字列のパディングを考慮するように修正しました。
ネットマスクをセミコロン区切りで指定できるように修正しました。

MCS/MPIOパッチ修正 2008/12/05版

2008年12月6日 土曜日

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

複数イニシエータから同時にアクセスがあった場合に
パフォーマンスが悪くなっていたので修正しました。
MCSとMPIOのどちらでも接続できるように修正してみました。
ただし、まだ実験的なのでデータ破壊されても自己責任でよろしく。
ついでに独自管理テーブルとダイジェスト機能を作ってみた。
スレッドとデバイスのロック時間を減らしてみた。
ポータルの指定方法が変更されたので/etc/rc.confの修正を忘れずに。

パッチファイル: iscsi-target-20081205-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081205-patch.bz2 | patch -p0
# make
# make install

新規オプション:
-C 最大接続コネクション数(デフォルト4)
-P 接続可能なポータルのIPアドレス(セミコロン区切り)

設定例は以前の投稿をどうぞ。

IPv6でポータルを指定するには[]でIPv6アドレスを書きます。
Microsoft iSCSI InitiatorではソースアドレスにIPv6を指定して、
ここで指定したポータルを設定すればIPv6で接続できます。

/etc/rc.conf

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"

ダイジェスト(CRC32によるデータチェック)を有効にするには、
ログイン時の詳細設定でチェックボックスに印を付けます。
データダイジェスト=読み書きデータなどに有効。
ヘッダダイジェスト=iSCSIプロトコルヘッダに有効。

マルチパス(まだ実験的)にするには、
MPIOをあらかじめインストールしてログイン時に、
マルチパスを有効にチェックして詳細設定からIPを指定します。
マルチパスを使うときはダイジェストを両方使うことを推奨します。
マルチパスの設定を変更するには、
1.iSCSIイニシエータのプロパティからターゲットタブを選択する。
2.[詳細]ボタンでターゲットのプロパティを開く。
3.デバイスタブの詳細設定からデバイス詳細を開く。
4.MPIOタブを選択し、負荷分散ポリシーを変更します。

左側がマルチパス(2本接続)、両方のダイジェスト有効のとき。
右側が通常接続、両方のダイジェスト有効のとき。

 

既知の問題:
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
(可能であればリトライ復帰ルーチンをいれるべき)

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

主な修正点:
独自管理テーブルを作成してスレッドを制御するようになった。
TSIHが消えることがあったのを修正しました。
SCSIコマンドのロック範囲を当該スレッドのみに制限しました。
データダイジェスト及びヘッダダイジェストに対応しました。
ポータルの区切り文字がカンマからセミコロンに変更されました。
書込みストリームが異常な場合にはエラー戻りに変更されました。
マルチパスの状態でもできるだけ動くように修正しました。

MCSパッチ修正 2008/12/02版

2008年12月3日 水曜日

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

またしても問題が。
TSIH (Target Session Identifying Handle)が消えてしまうけど、
マルチセッション>マルチコネクションとかにしなければ大丈夫そう。
そもそもターゲットを1スレッドが全部握っているiscsi-targetのままではどうにも・・・。
根本的にはI/O系を全部書き直すしかないのかな。

パッチファイル: iscsi-target-20081202-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081202-patch.bz2 | patch -p0
# make
# make install

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

設定例は以前の投稿をどうぞ。

IPv6で指定するには[]でIPv6アドレスを書きます。
Microsoft iSCSI Initiator ではソースアドレスにIPv6を指定して、
ここで指定したポータルを設定すればIPv6で接続できます。

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.3.36,[2001:380:e00:42:21f:d0ff:fe16:38bd]"

 

既知の問題:
マルチセッションで一つでもログアウトするとTSIHが消えてしまう。

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

主な修正点:
マルチセッションが張られた場合などに各スレッドからSCSIコマンドが
ぶつからないようにミューテックスをいれました。

MCSパッチ修正 2008/11/30版

2008年12月1日 月曜日

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

やっぱりバグバグだった。

パッチファイル: 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

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

設定例は以前の投稿をどうぞ。

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

主な修正点:
オリジナルのバグを修正しました。
セッション中の1コネクションが再接続した場合も接続を許可するようになりました。

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

2008年11月30日 日曜日

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

いつもエラーが出て気になっていたので修正しました(汗)

パッチファイル: iscsi-target-20081129-patch.bz2
更新版をご利用ください。

# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat < /path/to/iscsi-target-20081129-patch.bz2 | patch -p0
# make
# make install

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

設定例は以前の投稿をどうぞ。

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

主な修正点:
正常ログアウト及びフェールオーバー時にシーケンス番号が
上書きされないようになりました。
再接続した場合に旧スレッドを破棄するようになりました。