‘IPv6’ カテゴリーのアーカイブ

istgt (iSCSI target) 20100707版 for FreeBSD

2010年7月7日 水曜日

istgtも七夕エディションに(謎)
isbootとの組み合わせで気づいた点を修正しました。
また、一か月ほどWindows7のディスクレス環境を支えて来れたというのを
踏まえてPortsの更新も行います。
ちなみに4KBとか小サイズIOを大量に投げるとギガビットイーサの遅さも
相まって、ありえないほどの遅延が生じます。
これは今後の課題と言うことで。

参考用:
http://shell.peach.ne.jp/aoyama/archives/1077
http://shell.peach.ne.jp/aoyama/archives/1107
http://shell.peach.ne.jp/aoyama/archives/1114

istgt (tarball): istgt-20010707.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100707.tar.gz
# cd istgt-20100707
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100707.tar.gz) = 2774a6487b65a182648503eb76c2c4a3
SHA256 (istgt-20100707.tar.gz) = 98b910da623a127f575e35f45dfc7f8f5ec3334fc260b28cbd31b83ec32ca868

主な修正点:
DefaultTime2Waitの比較を最大値を取るように修正
ターゲットが存在しない場合に検索した記録を残すように修正

istgt (iSCSI target) 20100606版 for FreeBSD 7.x

2010年6月6日 日曜日

更新>istgt 2010/07/07版

ロックの衝突による速度低下を低減する為にロック範囲を変更しました。
単一のターゲットではまったく効果ありませんが、複数ターゲットを
設定している場合は、衝突回避が期待できます。

iSCSIパラメータをターゲット毎に指定できるようになりました。
省略時は従来通りグローバル設定が適用されます。
なお、一部のキーは機能未実装のため現時点では設定変更できません。

新規のコンフィグキー(Global):
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0

新規のコンフィグキー(LogicalUnit):
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0

istgt (tarball): istgt-20010606.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100606.tar.gz
# cd istgt-20100606
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100606.tar.gz) = cdd56ef75a2b03eeed694f73811dc720
SHA256 (istgt-20100606.tar.gz) = 42cafd6560bb1e99465c592f45bc8fb2333f76320d2d343162ecd5dc94218e5e

主な修正点:
グローバルの状態ロックをターゲット毎に変更
各ターゲット毎にローカル設定を持てるように設定を追加
InitialR2T, ImmediateData, DataPDUInOrder, DataSequenceInOrder,
ErrorRecoveryLevelの設定を追加
LUNリセット時にファイルの再オープンをするように変更

istgt (iSCSI target) 20100525版 for FreeBSD 7.x

2010年5月26日 水曜日

更新>istgt 2010/06/06版

先日の版はWindows7がインストールできませんでした。
報告のあった問題と共に修正しました。Portsもすぐに更新をかけます。
20100522をインストールしてしまった場合は、
お手数ですがアップグレードを行うようにしてください。

istgt (tarball): istgt-20010525.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100525.tar.gz
# cd istgt-20100525
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100525.tar.gz) = ccdc37cb3d9b1dc6b8fe9411e824f015
SHA256 (istgt-20100525.tar.gz) = 3445d1b68b49535d849b83f4b542d05bd2fed32d2066836e39b8ab8dff8a66c1

主な修正点:
特定条件下でR2Tが送信されない問題を修正しました。
メモリ解放間違いを修正しました。
エラー処理が抜けていたのを追加しました。

istgt (iSCSI target) 20100522版 for FreeBSD 7.x

2010年5月22日 土曜日

更新>istgt 2010/05/25版

認証なしを強制するオプションを追加しました。
これによりCHAPのみを要求するイニシエータとの接続を拒否します。
また、CHAPありなしのどちらでもいい場合は認証なしを選択します。
その他、細かい調整を行いました。

機能追加したコンフィグキー:
  DiscoveryAuthMethod None
  AuthMethod None

istgt (tarball): istgt-20010522.tar.gz
修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100522.tar.gz
# cd istgt-20100522
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100522.tar.gz) = a262d060e9edf6a06f0573233df1a8d4
SHA256 (istgt-20100522.tar.gz) = 61345f7b373706180f89834bc54ff4bbd9ae850a03fb7888e008aaccd93c3aff

主な修正点:
認証なしを強制するオプションを追加しました。
readキャッシュの状態をMODESENSEで返すようになりました。

追記:
ChangeLog.jpを更新するのを忘れました…以下を修正点に追加します。
8KB, 16KB, 32KB, 64KB, 128KBの論理ブロック長を追加
とりあえず、動作には影響しないのでこの版でPortsを更新します。

istgt (iSCSI target) 20100521版 for FreeBSD 7.x

2010年5月22日 土曜日

更新>istgt 2010/05/22版

先日の版ではコンパイル時オプションで有効・無効を切り替えできましたが、
設定ファイルで送信するR2Tの最大数を制限できるように修正しました。
最大数=0で無効になり従来通りの処理になります。
実際に送信できる数は、QueueDepthの設定とイニシエータのMaxCmdSNおよび
ExpCmdSNに依存します。

また、8KB以内の小さい書き込みコマンドに対してメモリ割り当てを
毎回行って断片化するのを避ける為に一回で確保するようになりました。
小さいサイズの高速化に関しては落ち着いてから試そうと思っています。

新規のコンフィグキー:
  MaxR2T 32

istgt (tarball): istgt-20010521.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100521.tar.gz
# cd istgt-20100521
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100521.tar.gz) = 5d9939c5df13db68ad852a96620bb8f3
SHA256 (istgt-20100521.tar.gz) = 8a4c46c45eceb956ef7d2927f8c3d4cc8d522014738bfa8921ef4da91cea449d

主な修正点:
WRITEコマンドで先送りするR2T最大数の設定を追加しました。
エラー時にイニシエータ及びターゲットポートを表示するようになりました。
8KB以下のショートパケットにデータ領域を作成しないようになりました。

istgt (iSCSI target) 20100516版 for FreeBSD 7.x

2010年5月16日 日曜日

更新>istgt 2010/05/21版

先のCTアダプタの結果が残念なので・・・効率アップを図ってみました。
また、ESXiでの利用を想定してデフォルトの値を修正してみました。
(FirstBurstLength 64K => 256K, MaxBurstLength 256K => 1M)

通常はキューイングした後に送信されるR2Tコマンドを、
キューに入れる前に送信して後からデータPDUを回収する
という方法を取ってみました。

補足:
キューの深さと同数のライトバッファを用意するという意味です。

結果は以下のSS通りで、キャッシュが利用される領域において
15%以上の高速化ができました。
実際の速度は利用するエクステントの速度に制限されるとはいえ、
シングルパスのシーケンシャルで100MB/sを達成できたのはよかった。
デュアルパスでラウンドロビンするとリード190MB/s、ライト170MB/sと
単体HDDではおそらく処理が間に合わない程の速度が出ます。

   
(クリックで拡大)

さて、こうやって見ると…はい、ショートI/Oの性能が悪いですね。
こうしてさらに深みにはまっていくと。

あまりにも基本すぎて今まで書いていませんでしたけど、
マルチスレッドで動くのが前提なのでシングルコアのCPUの場合は、
ここで期待しているような値が出ることはないと思います。

※ラウンドロビンは処理データ(R/W)が偏って期待通りに行かない事があります:-)

新規のコンフィグキー:
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60

修正したコンフィグキー:
  FirstBurstLength 262144
  MaxBurstLength 1048576

istgt (tarball): istgt-20010516.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100516.tar.gz
# cd istgt-20100516
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100516.tar.gz) = 358eec46c4cddc3a5944a49f96509e68
SHA256 (istgt-20100516.tar.gz) = fdb3d82d74d09bfc06204158147c8c7b63e642f67b83e74527875db3424e663e

主な修正点:
CHAPの乱数生成に arc4random を利用するようになりました。
シーケンシャル書き込みの処理を改善しました。
MaxOutstandingR2T, DefaultTime2Wait, DefaultTime2Retain が設定ファイルで変更可能になりました。
デフォルトの設定値を変更しました。

istgt (iSCSI target) 20100407版 for FreeBSD 7.x

2010年4月8日 木曜日

更新>istgt 2010/05/16版

NetBSD, Mac OS X, LinuxでブロックデバイスをAuto指定できるように修正してみました。
ただし、動作検証までは行っていないので動かないかもしれません。
この部分はいろいろな報告が欲しいです。
(設定ファイルにない場合の)デフォルト値の変更を行いました。
サンプルの設定ファイルを使っている場合は影響ありません。
ビルド環境を仮定しないようにちょこっとマイナー修正しました。
syslogサーバに大量に記録されてCPUパワーとネットワーク帯域が
もったいないので、トレースモードでない場合は同一イニシエータからの
重複予約(常に成功する)の警告を出さないように修正しました。

今回の修正とは直接関係しないのですが、以前書いたようにFreeBSD7.3の環境に7.1から移行しているので、今後は7.1での通常検証は行いません。
また、FreeNAS 0.7.1 nightly buildの作成にESXi4のVMFSとして利用する関係でそちらのフォローも多くなると期待しています。

istgt (tarball): istgt-20010407.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100407.tar.gz
# cd istgt-20100407
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100407.tar.gz) = d606f4e1520f486325910e105da1bf30
SHA256 (istgt-20100407.tar.gz) = 9ff40e921187c1ff78bad3585cc6c6ac05796921fdc906342a9e0e3cc74121c2

主な修正点:
NetBSD, Mac OS X, LinuxでブロックデバイスのAuto指定を考慮しました。
ビルド環境をなるべく特定しない仕組みを導入しました。
既定の設定ファイルがない特殊な環境でのデフォルト値を修正しました。
トレースモードが無効な場合は重複予約の警告を出さないようになりました。

FreeNAS 0.8 の開発について

2010年2月1日 月曜日

おそらくかなりの人が今後について気になっていると思います。
そこで、週末に取ったSSだけを先行公開しましょう。
現段階ではnano BSDベースの移植は完了していません。
そこで、FreeBSD8.0カーネルを使って、0.7.1(5008)相当の機能を
搭載したバージョンを作成しました。

FreeBSD 8.0には ZFSv13 が搭載されていますので、
非公式7S版でZFSv13を利用している人も問題なく移行できるようになります。

※この作業自体は先月中頃より開始されました。

開発テストには先日より公開しているVirtualBox機能が多大な貢献をしています。
改めてFreeBSDに移植された方々に感謝します。

FreeNAS on FreeNASの作り方についてはフォーラム(英語)を参照してください。
http://sourceforge.net/apps/phpbb/freenas/viewtopic.php?f=96&t=5597

そういえば、まだ書いていませんでしたが、開発チームに加わった事で、
公式フォーラムのグローバルモデレータ(いわゆる運営スタッフ)になりました。


(クリックで拡大)

FreeBSD自体のセキュリティ保守期間についてはこちらを参照してください。
http://www.freebsd.org/security/security.html
FreeBSD 8.0はNormalタイプが適用されるためリリース後1年間は保守されます。
上記によると、具体的には2010年11月30日までです。
ちなみに7.2は2010年5月31日までです。
現在7.3-BETA1が公開されているので、7.2系はいずれ7.3に移行すると思います。
当然ですが7S系の人は7.3版であれば容易に移行できます。

FreeNAS 0.7用 iSCSIターゲット(istgt)アップデータ 20100125版

2010年1月25日 月曜日

このアップデータはRC1(4735)以降のFreeNAS 0.7用です。
FreeNASの本体を更新することなくiSCSIターゲットのみを更新します。

設定ファイルはすべて保たれますが、バックアップを取ることを推奨します。
システム|バックアップ/リストアから設定のダウンロードをクリックしてください。

istgt-20100125版アップデータ: istgt-update-20100125.tar.gz

ネットに接続できるマシンからは以下のように/tmpなどにダウンロードして、
展開した中にはいっている istgt-install.php を実行します。
これにより現在のファイルが上書きされます。
また、embeddedやlivecdの場合は、設定保存ディレクトリに保存して、
FreeNASの再起動時にコピーして再現できるように、コピー処理コマンドを、
システム|高度な設定|スクリプトに事前実行型のコマンドとして
登録されます。(設定保存領域を約150KBほど消費します。)
すでに登録されている場合はしませんので、何度でもインストール可能です。

以下はFreeNASのコンソール(shell)での作業例になります。

# cd /tmp
# fetch http://www.peach.ne.jp/archives/freenas/istgt-update-20100125.tar.gz
# tar zxf istgt-update-20100125.tar.gz
# cd istgt-update
# ./istgt-install.php
 

このアップデータはi386とamd64のどちらにも適用できます。
それぞれ、full、embedded、livecdのいずれでも適用できます。
これにはistgt本体の他に起動用スクリプトと制御プログラムも含まれます。
FreeNAS0.7リリース版(4919)でiSCSIターゲットが正常に起動しないという問題も
このインストールにより修正されます。

ネットに接続されてない場合は、NFSでもWindowsの共有でもいいので、
fetchのかわりにファイルを手動でコピーして利用してください。

完了したら、WebGUIからサービス|iSCSI ターゲットで再起動します。
診断|ログでこのようなログが現れます。

istgt[1795]: istgt version 0.2 (20100125)

※ESXなどでQueueDepthを指定する場合32以上を推奨します。
※現在アンインストール機能はありません。fullインストールでなければ、
登録されたスクリプトを削除して再起動すれば戻ります。

MD5 (istgt-update-20100125.tar.gz) = 3f1c7f84d8854bca1ed053386d93d588
SHA256 (istgt-update-20100125.tar.gz) = 2b9f585ee3e50c44952f63f90448610e9a25a56f357619b8b318e702cbef03d7

istgt (iSCSI target) 20100125版 for FreeBSD 7.x

2010年1月25日 月曜日

更新>istgt 2010/04/07版

ABORT_TASKからエラーリカバリーができなくなる可能性がある問題に
対応するため若干の修正を加えました。
Ivan Vorasさんから提案とパッチを頂きましたので追加してみました。

istgt (tarball): istgt-20010125.tar.gz
修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100125.tar.gz
# cd istgt-20100125
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100125.tar.gz) = 1af4006dd185b2e2326a356ef17dc2cc
SHA256 (istgt-20100125.tar.gz) = 028dd131300d24b2c425543ef84805735a9361cac79437c829a5062f84532618

主な修正点:
内部でスレッド名を保持するようになりました。
実行待ちのタスクを強制終了させるフラグなどを追加しました。
スレッド条件待ち時間の最小を5秒まで短縮しました。