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

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秒まで短縮しました。

FreeNAS 0.7(ホストOS)でVirtualBox 3.1.2を動かそうという計画2

2010年1月24日 日曜日

この版から計画1で利用していたパッチは破棄して、
LibVNCServer (ports/net/libvncserver)を利用して自前で
フレームバッファを作るように変更しました。
キーマップは/usr/share/syscons/keymaps/us.pc-ctrl.kbdを元に
修正したkeysym変換テーブルを内蔵してあります。
これはvnckeymapオプションで任意のマップに変更可能です。

VirtualBox 3.1.2 OSE for FreeNAS 0.7(バイナリパッケージ)
http://www.peach.ne.jp/archives/freenas/test/vboxpkg-20100124.tar.gz

未完成のものに同じ事を何度も書くのが面倒なので、
英語で書いてフォーラムに投稿したものを参照してください。
コマンドラインの書式は英語も日本語も同じですし。

このトピックを参照してください。(英語)
http://sourceforge.net/apps/phpbb/freenas/viewtopic.php?f=13&t=5466

注意点としては現時点は非公式4967版および4986版でのみ動作保証します。
FreeNAS 0.7.1.4967 + istgt 2010/01/12版
http://shell.peach.ne.jp/aoyama/archives/766
FreeNAS 0.7.1 4986版
http://shell.peach.ne.jp/aoyama/archives/789

追記:
公式4997版(nightly build)から対応できるようになりました。
非公式FreeNAS 0.7.1 5008版も利用できます。
http://shell.peach.ne.jp/aoyama/archives/816

FreeNAS 0.7とATAPICAMを使ってSATA接続のDVDマルチドライブをiSCSIデバイスとして構成する

2010年1月13日 水曜日

この機能は非公式のFreeNAS 0.7.1(4967)版から利用できます。
すぐに本家にも取り込まれると思います。

非公式版のダウンロードはこちらから。
http://shell.peach.ne.jp/aoyama/archives/766

ここではATAPICAMでの最低限の情報のみ書きます。
一般的なiSCSIデバイスの作成方法は以前書いたものを参考にしてください。

FreeNAS 0.7 を使って iSCSI Target を構成する
http://shell.peach.ne.jp/aoyama/archives/431

FreeNAS 0.7 で ZFS と iSCSI Target を構成する
http://shell.peach.ne.jp/aoyama/archives/466

まず、準備として初期化前のコマンドとして以下を登録して再起動します。
システム|高度な設定|スクリプト を開き、事前実行で登録します。

/sbin/kldload atapicam

できたら再起動します。


(※画像はクリックですべて拡大します)

正しく登録できていれば、以下のようなログが 診断|ログ に表示されます。
ここではLG電子のGH20NS10(SATA接続)を使いましたが、
IDEでも同様に作成可能かと思います。

Jan 13 02:42:19 freenas kernel: cd0 at ata4 bus 0 target 0 lun 0
Jan 13 02:42:19 freenas kernel: cd0:  Removable CD-ROM SCSI-0 device
Jan 13 02:42:19 freenas kernel: cd0: 150.000MB/s transfers
Jan 13 02:42:19 freenas kernel: cd0: Attempt to query device size failed: NOT READY, Medium not present

ログを確認できたら、そこに表示されているデバイス名(/dev/を付ける)を使って、
エクステントを作成します。
ここではcd0になっているので /dev/cd0 を利用します。

タイプ=>ファイル
パス=>/dev/cd0
ファイルサイズ=>オート

次に作成したエクステントをパススルーモードでターゲットを作成します。

タイプ=>Device Pass-through
フラグ=>読込み/書込み(rw)
ストレージ=>上記で作成したもの (/dev/cd0)

設定を終えるとこんな感じになります。

ではさっそく使ってみます。
ここではイニシエータにはESXi4.0の仮想マシンにインストールした
Windows Server 2008R2(評価版)を使ってみました。

 

DVDマルチドライブを利用したのでISOイメージを書込みしたりもできます。
もちろん再生アプリケーションが対応していればDVD動画も見れます。

FreeBSD 7.2のCD-Rを作成するとこんな感じ。

ちなみにここで使った2008R2は下記テストのために
FreeNAS上のiSCSIディスク(/dev/ad4)に作成したものです。
http://shell.peach.ne.jp/aoyama/archives/679
一度でも仮想マシンとiSCSIの便利さに慣れるとiSCSIなしの環境が面倒になってくると思う。
簡単に構築できるFreeNASを使っていろいろ試してみて欲しいと思います。
もちろんFreeBSDサーバでもistgtの最新版を利用すれば同様の事が可能です。

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

2010年1月12日 火曜日

更新>istgt 2010/01/25版

パススルーが正常に動かなくなっていました。
ATAPICAMをロードしてSATA接続のDVDライタを使い、
iSCSI経由でメディアに書き込む事は確認しました。

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20100112.tar.gz) = de95e0888103d2f978d94a90288834de
SHA256 (istgt-20100112.tar.gz) = eecf9e9611ff33c8da1ac8b1aa807a5170722e1c179cf9760fa82a3853fc9342

主な修正点:
センスデータ長の間違いを修正しました。
MMCデバイスにMODESENSE(6)を発行しないように修正しました。
パススルーでBlockDescriptorがない場合に誤動作するのを修正しました。

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

2010年1月6日 水曜日

更新>istgt 2010/01/12版

遅くなりましたが、あけましておめでとうございます。
今年もよろしくお願いします。

BSD系OSの場合はkqueue/keventを利用するようになりました。
FreeNASフォーラムで仮想テープに関する書き込みがあったので、
少し前倒しでリムーバブルメディアの扱いを調整しました。
最低限使えるところまで変更したのでお試しください。
WebGUIは開発中ですが、最低限の機能を搭載した版を用意しましたので、
こちらもすぐにアップします。
なお、ZFSボリュームは前バージョンから対応してあります。
本バージョンよりリムーバブルデバイス(DVD/TAPE)が/dev/null指定で
スロットにメディア挿入せずに起動できるようになりました。
空で起動した場合はistgtcontrolでメディア交換する必要があります。

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20100105.tar.gz) = a8e7ebb77eb3f1e23fd1cb8c538cfe39
SHA256 (istgt-20100105.tar.gz) = f4cb6e0df3f6e75ec1315a8d458d2593c57c2ebefbe3594d503b43463f19fc89

新規コンフィグキー:

  MediaDirectory /var/istgt

リムーバブルメディアのあるディレクトリを指定します。
(現時点は一個だけ指定可能です)

空メディアの指定例:

[LogicalUnit3]
  TargetName "dvd2"
  Mapping PortalGroup1 InitiatorGroup1
  AuthMethod Auto
  AuthGroup None
  UseDigest Auto
  ReadOnly Yes
  UnitType DVD
  LUN0 Removable "ro" /dev/null 0

主な修正点:
uctl: パススルーデバイスを出力するようになりました。
uctl: LUNタイプを出力するようになりました。
MediaDirectoryの中にないメディアへの交換を拒否するようになりました。
全書き込みビットがないファイルを読み込み専用と認識するようになりました。
テープ作成前に制御ブロックが破損していないか検査するようになりました。
istgtcontrol: 認証系の処理を改善しました。
/dev/nullのメディアを空スロットと認識するようになりました。
BSD系ではkqueue/keventを利用するになりました。