2009年3月28日 のアーカイブ

言いだしっぺの法則(謎)に基づきFreeNASのスクリプトを提供開始しました

2009年3月28日 土曜日

追記:
r4531からFreeNAS本家trunkにマージされているので、ダウンロードは本家のnightly buildからできます。
http://sourceforge.net/project/showfiles.php?group_id=151951&package_id=229704

このスクリプトはテスト目的の為だけに作成してあります。
もしかしたら不具合が何かあるかもしれません。
しばらくここを見ている人には自明ですが、istgtではデバイスのサポートは
していませんのでファイル形式でエクステントを作成します。

最低限機能すると思われる特徴:
 o MCS/MPIOを使ったフェイルオーバー (最大255並列セッション)
 o マルチパスI/O (Microsoft MPIOとVMware ESXiのみサポート)
 o クラスタノード向けのSPC-3永続的装置予約
 o 2TBを超える媒体を扱える64bit LBA
 o CRC32Cによるヘッダ及びデータダイジェスト
(実験的実装)
 o Intel PRO/1000 Server Adaptersを使ったiSCSIブート機能
 o Windows7対応の準備

既存GUIからは設定できない機能:
 o 双方向または単方向CHAP認証
 o 複数のLUNおよびACL
(実験的実装)
 o コマンドキューイング (最大255の深さ)
 o 仮想DVDROM/DLTエミュレータ
 o パススルーデバイス (DA/SA/CD型のみサポート)

必要なもの:
(FreeNAS r4498/FreeBSD 7.1p4/istgt 20090326でテスト済み)
FreeNAS 0.7
FreeBSD 7.1 またはそれ以降
istgt 20090326 またはそれ以降
FreeNAS 0.7x用のistgt起動用スクリプト
http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20090326-freenas.sh.gz
iSCSI initiator 2.1.1 またはそれ以降 (FreeBSD 7.xから利用する時のオプション)
http://www.cs.huji.ac.il/~danny/ftp/freebsd/iscsi-2.1.1.tar.gz

スクリプト使用上の制限:
 o 認証ファイルと制御用設定ファイルは空でないと更新されません。
 (変更が必要な場合は、削除した後に/etc/rc.d/iscsi_targetを起動してください)
 o マルチコネクション(MCS)、マルチパス(MPIO)が必要な場合は、
 すべてのインターフェースに固定IPを設定してください。
 o 許可するネットワークにはMCS/MPIOで利用するすべてのIPが
 含まれるように設定します。iscsi-targetは一個しか設定できないので、
 複数IPを利用する場合は注意が必要です。
 o 待ち受けポートは固定の1個になっています。iscsi-tagetには当該する
 機能が存在しません。

 

istgtインストール:
FreeBSD 7.xのマシンで以下を実行します。
1)Portsを最新版に更新します。(この記事を作成時点で20090326が最新です)
# portsnap fetch update

2)istgtのパッケージを作成します。
# cd /usr/ports/net/istgt
# make package -DNOPORTDOCS

3)作成した物をFreeNASをインストールしたマシンにコピーします。
# scp istgt-20090326.tbz user@host:/path

4)スクリプトを取得して(伸張して)、FreeNASにコピーします。
# fetch /path/to/istgt-20090326-freenas.sh.gz
# gunzip istgt-20090326-freenas.sh.gz
# scp istgt-20090326-freenas.sh user@host:/path

FreeNAS 0.7のマシンで以下を実行します。
1)パッケージを追加します。
# pkg_add istgt-20090326.tbz

2)NetBSD iscsi-targetを停止します。
(止める前にすべてのドライブをイニシエータからログオフします)
# /etc/rc.d/iscsi_target stop

3)起動用スクリプトをistgtのFreeNAS修正版で置き換えます。
# cd /etc/rc.d
# mv iscsi_target iscsi_target.old
# chmod -x iscsi_target.old
# cp /path/to/istgt-20090326-freenas.sh iscsi_target
# chmod 755 iscsi_target

4)istgtを開始します。
# /etc/rc.d/iscsi_target start

このステップまで終わるとGUIからiSCSIサービスの制御が可能になります。
設定ファイルは/var/etc/iscsiの中に作成されます。
まだiSCSIターゲットを有効にしていない場合はGUIから設定します。

※ 初回起動時にドライブがオフラインのまま認識されない事があります。
識別用の数値がiscsi-targetと違う為なので、手動でオンラインにしてください。

 

istgtアンインストール:
FreeNAS 0.7のマシンで以下を実行します。
1)iSCSIサービスを停止します。
# /etc/rc.d/iscsi_target stop

2)istgt用スクリプトを削除して、元のファイルに戻します。
# cd /etc/rc.d
# rm iscsi_target
# mv iscsi_target.old iscsi_target
# chmod +x iscsi_target

3)パッケージを削除します。
# pkg_delete istgt-20090326

4)NetBSD iscsi-targetを開始します。
# /etc/rc.d/iscsi_target start

 

追記:
FreeNASの本家リポジトリには20090309版がexperimentalにr4442より
コミットされていますが、ブログで書いた通り初期版から20090313版までの
MCS複数接続において根本的な設計ミスが見つかっています。
そのため最低でも20090314版(同期I/Oのみの最終版)を、
できれば20090326版以降(非同期I/O対応版,同期I/O部分は
20090314相当)が推奨です。

#ドキュメントがまったくないので設定難しいよって意見が(汗)

FreeNASでコマンドキューイングを試したい場合は
起動スクリプトとしてコピーしたiscsi_targetの222行目の部分を

-v "concat('  QueueDepth ','0')" -n \
↓
-v "concat('  QueueDepth ','16')" -n \

このように数値0を16に修正します。この数値を極端に大きくしても
消費メモリが増えるだけで現時点ではあまり意味はありません。