2009年4月 のアーカイブ

istgt (iSCSI target) 20090414版 for FreeBSD 7.x with ZFS

2009年4月14日 火曜日

更新>istgt 2009/4/16版

SCSIコマンドのREAD(6)及びWRITE(6)においてLBAの取得時に上位5ビットを
欠落させる問題がありました。
この問題は初期版から現在に至るまですべてのバージョンに存在します。
21ビットLBAで表現できるのは容量1GBまでなのでそれ以上の領域のみに
アクセスする場合は発現しません。
Windows系は1GB未満の領域及びドライブに対しても常に10バイトCDBを
発行するため影響を受けません。

原因:
 6バイトCDBでは21ビット幅あるLBAのうち下位16ビットしか読み取らない為

影響を受ける環境:
 o READ(6)及びWRITE(6)を発行するSCSIアプリケーション(OS、ドライバ等)
 現在の所、当該コマンドを発行するのはFreeBSDのみ把握しています

影響を受けない環境:
 o 1GB未満の領域にREAD(10)及びWRITE(10)を発行する場合(Windows系)
 o 1GB以上の領域のみにアクセスする場合

istgt (tarball): istgt-20090414.tar.gz
更新版をご利用ください。

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20090414.tar.gz) = 431843b9271e15a1b7cb24dde51b7601
SHA256 (istgt-20090414.tar.gz) = 1ef44aeb189fab0119f262e6942e66343a6222355d5e6b814e73c4575df02fe3

主な修正点:
READ(6)/WRITE(6)のLBA上位5ビットが欠落する問題を修正

istgt (iSCSI target) 20090412版 for FreeBSD 7.x with ZFS

2009年4月12日 日曜日

更新>istgt 2009/4/14版

FreeNASでの利用とバグ報告を元にいくつか修正しました。

新しい設定:
syslogのファシリティをコンパイル時固定のLOCAL7から設定ファイルで変更できるようになりました。
指定できるファシリティは daemon, auth, authpriv, local1~local7 です。

[Global]
  # syslog facility
  LogFacility "local7"

istgt (tarball): istgt-20090412.tar.gz
更新版をご利用ください。

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20090412.tar.gz) = 8cbfb89920f64418c94ad7b1a5ea5840
SHA256 (istgt-20090412.tar.gz) = 25119e8b87500a6c76858383bdce02348e63bbe31ac16fab09cbff96d56cd79d

既知の問題:
FreeBSD(iscsi2.1.1)から接続するとumount時に正しく処理されない事があります。(現在調査中)

主な修正点:
デフォルトのiqnをiqn.2007-09.jp.ne.peach.istgtに変更しました。
データ設定取得マクロを関数呼び出しからマクロ展開に変更しました。
ショートサイズの判定に誤ったマクロを利用していたのを修正しました。
Discoveryセッションは最大接続数を1に制限するようになりました。
NOPIN間隔が0の場合は送信しないようになりました。
syslogファシリティを設定ファイルで指定できるようになりました。

FreeNAS 0.7 を使って iSCSI Target を構成する

2009年4月11日 土曜日

テスト用のFreeNASのダウンロードはこちらから。
http://sourceforge.net/project/showfiles.php?group_id=151951&package_id=229704

※テスト用の空いてるUSBメモリがもうないので余っていたmicroSDカードに
FreeNAS 0.7.4531 (i386)をインストールしました。

1.FreeNASの初期設定

起動したらコンソールからネットワークカードとIPを設定します。
設定できたらブラウザで設定したIPを開きます。

System>Generalを開きます。
LanguageをJapaneseに変更します。
Time zoneをAsia/Tokyoに変更します。
「Save」をクリックします。
パスワードタブで新しいパスワードを設定してWebGUIを開き直します。

追加のアダプタがある場合はネットワークから設定します。
このテストマシンにはオンボード1個、PCIe拡張スロットに
シングルポートのアダプタを2個装備してありますので、
LAN,OPT1,OPT2の合計三個にIPを設定しました。
(再起動を要求されるので一旦再起動)

2.ディスクの用意

ディスク>マネージメントを開きます。
FreeNASで利用するドライブを追加します。
テストマシンは500GBのSATAドライブが1台なのでそれを指定しました。

ディスク>フォーマットを開きます。
UFS (GPT with Soft Updates)などでフォーマットを実行します。

ディスク>マウントポイントを開きます。
dataなどにマウントします。

3.iSCSIターゲットの設定

サービス>iSCSIターゲットを開きます。
iSCSIターゲットを構成する前に、利用する領域をエクステントに、
サービスの待ち受けに利用するIPアドレスやポート番号をPortal Groupに、
アクセスを許可するイニシエータ名やIPアドレスをInitiator Groupに、
それぞれ設定します。
CHAPによる認証機能を使う場合はAuth Groupに設定します。
グループ設定は一個のみ設定して共通で使っても、
複数設定して使い分けてもどちらでも構いません。

最低1個のPortal GroupとInitiator Groupを予め設定しないと
iSCSIターゲットを構成できません。

3.1.ポータルグループの作成
サービス>iSCSIターゲット>Portalsを開きます。
追加のボタンをクリックすると、最初のグループ(Tag1)として、FreeNASに
設定したIPとiSCSI標準ポートの3260を使ったデフォルト設定が作成されます。
複数で分ける必要がない場合は修正せずに、そのまま追加をクリックします。

3.2.イニシエータグループの作成
サービス>iSCSIターゲット>Initiatorsを開きます。
追加のボタンをクリックすると、最初のグループ(Tag1)として、FreeNASに
設定したIPとネットマスクからデフォルト設定が作成されます。

接続を許可するIPをさらに厳しく制限したり、
イニシエータ名を制限する場合はここで変更しておきます。
(または後ほど新規グループを作成して適用する事も可能です)
※クラスタ対応のファイルシステムを使わない限り、
1ターゲット=1イニシエータの関係は必須事項です。

必要な変更が終わったら、追加をクリックします。

3.3.認証グループの作成(オプション)
サービス>iSCSIターゲット>Authsを開きます。
追加のボタンをクリックすると、ユーザ名とシークレットを入力する画面
になります。初期入力では一度に4ユーザまでしか追加できません。
5個以上必要な場合は一度4個追加した後に編集でさらに追加します。

一般的にユーザ名はイニシエータの名前がデフォルトになっています。
詳しくは利用するイニシエータの説明書を参照してください。
マイクロソフトのイニシエータを使う場合はシークレットに
12文字以上16文字以下の文字列を設定します。

相互認証を使う場合は、接続先のユーザ名とシークレットを入力します。

3.4.エクステントの作成
サービス>iSCSIターゲット>Targetsを開きます。

エクステント名は設定を変更したりするときに利用するだけなので、
デフォルト値のまま利用します。

タイプは現時点のWebGUIではファイルのみサポートしています。

追記:r4928から生デバイスを、r4960からZFSボリュームを選択できるようになりました。

パスはマウント済みの領域のいずれかを選択し、ファイル名を書きます。
ここではテスト用に/mnt/data/test-disk0としました。

ファイルサイズはMiB/GiB/TiBのいずれかの単位を選択して指定します。
(MiB=2^20, GiB=2^30, TiB=2^40)
ここではテスト用に20GiBで作成しました。

3.5.ターゲットの作成
サービス>iSCSIターゲット>Targetsを開きます。
上記項目で作成してき待ち受けIPアドレスやポート番号、
許可するイニシエータ名やIPアドレス、認証データ、
ディスク領域をイニシエータから見える形にするのがこの項目です。

ターゲット名はiqn.を含まない省略形でデフォルトとして入力されています。
もし必要ならばiqn.YYYY-MM.reverse-domain:optionalの完全形式も入力可能です。

タイプは現時点のWebGUIではディスクのみサポートしています。

追記:r4912でDVDとTape(DLT8000型)とパススルーが追加されました。

フラグはrw(読み書き用)かro(読み込み専用)のどちらかを選択します。

Portal GroupとInitiator Groupは上記で作成した物を指定します。

LUN0のストレージに作成したエクステント(ディスク領域)を割り当てます。
SCSI仕様上は少なくともLUN255までは利用できるはずですが、
現時点のWebGUIはLUN0のマップのみ作成可能です。

CHAP認証を行うには、高度な設定から
Auth MethodでCHAPを選択し、
Auth Groupに上記で作成したグループを指定します。

コマンドキューイングを有効にするには、高度な設定で
Queue Depthを1~255の数値にします。
現時点のテスト済み推奨値は16です。
キューが深くなるとメモリ消費量が増えますので注意が必要です。

追記:FreeNAS0.7.4919以降はQueue Depth 32 を推奨値とします。

3.6.iSCSIサービスの起動
サービス>iSCSIターゲット>設定を開きます。
右側にある有効のチェックボックスに印を入れて、
「保存して再起動」をクリックします。

以上でターゲットが作成されました。
後はイニシエータ側で接続して自由に利用できます。

現時点で少なくとも以下のイニシエータに接続できる事を確認してあります。

Windows Server 2008
Windows Server 2003 + MS iSCSI initiator 2.08
Windows XP + MS iSCSI initiator 2.08
VirtualBOX 2.1.2
ESXi 3.5 U3
Xen Server 5.0.0 U3
PRO1000/PT Server Adpater (iSCSI Remote Boot 2.1.22)

性能の方はと言うと別にFreeNASにしたから高速化するなんて事はなくて、
いつもどおり書き込みは遅いですね!な状態です。

↓コマンドキューイングあり(深さ16)で1000MBをGbE1本で実行した結果

(クリックで拡大)

↓コマンドキューイングあり(深さ16)で1000MBをGbE2本で実行した結果

(クリックで拡大)

現時点の制限:
iSCSI初期パラメータがターゲット毎に設定できない。

FreeNAS r4529においてistgtと設定画面が登場!

2009年4月9日 木曜日

登場したのは良いけど、スクリプトをインストールされるように
修正してもらえなかった(汗)
速攻メールして修正依頼を出しておきました。
直してもらえるみたいだからそれまでお待ちください。

と思ったけど、他にも作業した方がよさげだから、暫定的に置いておきます。

http://www.peach.ne.jp/archives/freenas/iscsi_target
FreeNASにSSHで入って以下のコマンドを実行します。

# cd /etc/rc.d
# fetch http://www.peach.ne.jp/archives/freenas/iscsi_target
# chmod 755 iscsi_target 

追記:r4531で修正されました

現時点の仕様:
ExtentをLUN0にのみ割り当てる事ができる。
認証データは4個づつしか入力できない。(最大数の上限なし)
ガイド文章が少なすぎる。

既知の不具合:
Settings(Advanced settings)がすべて必須項目にも関わらず
ボールド体になっていない。
QueueDepthが空欄の場合に問題が起こる。
istgtのログ出力先が指定できない。
/etc/rc.d/iscsi_targetが存在しない。

istgtへの報告:
GEOM raid に関する問題
FreeBSD initiatorによる接続の問題

FreeNAS用の作業がほぼ完了しました

2009年4月8日 水曜日

r4521ベースの版を統合用に提供しました。
あとはプロジェクトマネージャーがなんとかしてくれるはず。
そのうちnightly buildに入ると思うので改めてよろしく!

今のところ、表示の改善を求めるのと、iSCSIブートに関する件しか
報告が来ていないけどちゃんと動いているのだよね?

iSCSIターゲット及びGUIをテストする為のバイナリ(ISO形式)をアップしました

2009年4月5日 日曜日

iSCSI以外の機能が動くかどうかはテストしていません。
GUIによる設定はサブセットではあるけど、既存の設定よりは多くの項目が
設定できるようになります。

以下の物を使って構成してあります。
FreeNAS r4506
FreeBSD 7.2PRE
istgt 20090326
startup script for FreeNAS
WebGUI for istgt (not complete)
Hyper-V reboot issue patch
iSCSI initiator StatSN patch

MD5 (FreeNAS-i386-LiveCD-0.7.4506.iso) = 07ffcefce0450be79e64a217c43d34af
SHA256 (FreeNAS-i386-LiveCD-0.7.4506.iso) = 1d7b4ecd232e6f4619e4d1382ce50887556b819dd3c53e7a0185066a92a1988b

http://www.peach.ne.jp/archives/freenas/FreeNAS-i386-LiveCD-0.7.4506.iso

追記:
amd64版は問題があったので削除しました。
i386版も4GB以上のメモリを搭載すると動かない模様?

追記:
r4531からFreeNAS本家trunkにマージされました。
ダウンロードはこちらからどうぞ。
http://sourceforge.net/project/showfiles.php?group_id=151951&package_id=229704

自分で作っておいて言うのも何だけど

2009年4月4日 土曜日

ちょっと設定項目が多すぎるね。
最初からすべての組み合わせを網羅するのは無理がある。
そしてDiscoveryセッションにAGを一個しか割り当てられないのは問題かも。
PG毎にAGを割り当て出来ないと制限が大きいかも。
元々これはApacheのバーチャルホストみたいな感じで、ターゲットが
分離できるといいかもと思ってグルーピングを導入したのですが、
Target毎にAGを割り当てたのは間違いだったかなぁ。

設定代替案:
DiscoveryAuthMap AuthGroup1 PortalGroup1
DiscoveryAuthMap AuthGroup2 PortalGroup2
[LU1]
AuthMap AuthGroup1 PortalGroup1
[LU2]
AuthMap AuthGroup2 PortalGroup2

作成中のFreeNAS管理画面


(クリックで拡大)