どうもiBFTが破損しているとカーネルごとお亡くなりになるようなので、
ロード処理を対応してみました。
処理のボトルネックになっていたコマンド実行数の制限を無くす為に、
キューイング処理を追加しました。
これにより読み込み速度が61MB/sから74MB/sに13MB/s程度改善しました。
また、R2Tコマンド、およびimmediateなしモードに対応したため、
istgt以外のiSCSIターゲットとの互換性が大幅にアップしています。
8.1-RC2が公開されたので、そちらの統合版も作成しました。
※FreeBSDのCAMの制限なのかVFSの制限なのか不明ですがTL>64KBで
処理をしてくれないようです。
CAM用のタグも64個用意しているけどdd bs=1mでは2個しか使っていないように
見えます。対処方法があったら教えてください。
istgt以外のiSCSIターゲットとの接続がうまくいかない場合は、
ブログコメントにでも残して頂けると助かります。
作成・アップグレード方法:
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.2.1.tar.gz
# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install
インストール後に、新モジュールを適用する為にサーバを再起動してください。
ログで iSCSI boot driver version 0.2.1 が表示される事を確認してください。
主な修正点:
CHAP/Mutual CHAPに対応しました。
タスクキューを実装しました。
immediateなしモード及びR2Tコマンドに対応しました。
iBFTチェックサムが破損している場合もモジュール登録するようになりました。
パフォーマンス(ダイジェストなし):
# dd if=/dev/da4 of=/dev/null bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 14.374117 secs (74699672 bytes/sec)
# dd if=/dev/zero of=/dev/da4 bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 17.823493 secs (60243064 bytes/sec)
Read: 74MB/s Write: 60MB/s (at bs=1m)
ダウンロードリンク:
http://www.peach.ne.jp/archives/isboot/isboot-0.2.1.tar.gz
ダウンロードリンク(for testing purpose only):
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.2.1.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.2.1.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-amd64-isboot-0.2.1.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-i386-isboot-0.2.1.iso
http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh
gPXE + isboot + istgt(参考用):
http://lists.freebsd.org/pipermail/freebsd-scsi/2010-June/004432.html