‘FreeBSD’ タグのついている投稿

istgt-20100125がNetBSDのパッケージになったらしいです

2010年2月4日 木曜日

題名の通りです。連絡を貰いました。すばらしい。
pkgsrc/net/istgt から導入できるらしい。
NetBSD固有の問題とかありましたら報告お願いします。
では、今後ともよろしくお願いします。

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

2010年1月25日 月曜日

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と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を利用するになりました。

今年最後のsend-prを完了しました(istgt-20091225)

2009年12月26日 土曜日

ESXiから利用時の高負荷状態での問題が修正されています。

初期リリースしたのが2009/02/22、今年最後のリリースが2009/12/25ですね。
リリース直前のパススルーテストに手間取り実際の作業は26日に
日付がかわっちゃたけど^^;
当初は想定外だったESXiもサポートに入り、各種報告を元にその他の
イニシエータとの互換性問題もだいぶ改修してきました。
特にFreeNAS0.7にバンドルしてもらえた事で利用形態がだいぶ広がって、
それ関連のバグ報告も多くなりました。
OSXもいくつかあがってきてるけど実機がないため検証が難航中だったり。

現在はESXi二台からの同時接続試験まで行っています。
実はこの段階でESXiサーバのNICが故障してるぽいことが判明して、
どうしようか迷い中です。
内部iSCSIと外部iSCSIトラフィックを完全分離してマルチパスすると
サーバに最低5ポート(管理+マルチパス用x2)は欲しいのです。

ここでちょっと横道に、FreeBSDイニシエータの作者様がマルチパスと
iSCSIブートの対応を検討しているみたい。
ターゲットの書き込みが遅いのをなんとかしないと遅いよ!って言われそうだ。

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

2009年12月26日 土曜日

更新>istgt 2010/01/05版

規格外の文字があるとMSイニシエータから見えないようなので、
起動時に警告を出すようにしてみました。動作自体には変更ありません。
パススルーでモードセンスコマンドがない場合に起動できない問題がありました。

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20091225.tar.gz) = baa35331503f15ac9807f480bf08ec78
SHA256 (istgt-20091225.tar.gz) = 7bbe4ec587788404ae6c15f3886124ea043b70585536f7577dbdf884339354b0

主な修正点:
パススルーでMODESENSEに失敗する場合を考慮するようにしました。
iSCSIターゲット名に規格外の文字があるか調べるようになりました。

スピンロックで変わるかなと思ってやってみた

2009年12月26日 土曜日

その結果、2割ぐらい転送効率が落ちてしまった・・・。
これじゃ意味ないじゃない。
関数呼び出しを減らす方向で検討してみよう。

書き込み処理のデータ受信ルーチン(istgt_iscsi_transfer_out)のgprofデータの
一部だけどistgt_iscsi_read_pdu()がほとんどなのでどうにも。。。
ソケットの読み出ししたいけど相手が遅いよ!って状態なのだろうか。

R2Tリクエストをイニシエータになげて必要な書き込みデータを受信する。
その後、正しい部分データなら連続したI/Oバッファに格納する、
それ以外はキューにコピーを保存して書き込み後に再処理する。
転送要求サイズに一致するまで繰り返す。


                0.02       19.94   23036/23036       worker [1]
[15]    18.4    0.02       19.94   23036         istgt_iscsi_transfer_out [15]
                0.02       16.09  110778/324387      istgt_iscsi_read_pdu [3]
                0.00        3.45   33823/404133      istgt_iscsi_write_pdu [4]
                0.31        0.00  127922/823078      memcpy [28]
                0.01        0.03  105061/2833592     free [40]
                0.01        0.00    5995/1723731     memset [29]
                0.00        0.01   33200/4674885     __pthread_mutex_lock [47]
                0.00        0.00    6014/478204      istgt_queue_enqueue [71]
                0.00        0.00    6016/2153019     xmalloc [34]
                0.00        0.00   33653/10313149     pthread_mutex_unlock [54]
                0.00        0.00  210104/2622567     xfree [92]
                0.00        0.00    6005/12005       istgt_iscsi_copy_pdu [113]
                0.00        0.00    6006/998597      istgt_queue_count [88]

一方、読み込み処理を含むデータ/レスポンス送信部分はこんな感じ。
連続したI/Oバッファに入ったデータをオフセットをずらしつつCRC計算して送信するだけ。


                0.04       28.09  102574/102574      istgt_iscsi_task_response [6]
[9]     25.9    0.04       28.09  102574         istgt_iscsi_transfer_in [9]
                0.03       27.99  274040/404133      istgt_iscsi_write_pdu [4]
                0.01        0.04  272135/4674885     __pthread_mutex_lock [47]
                0.01        0.00  272976/10313149     pthread_mutex_unlock [54]

物理ディスクをiSCSIターゲットに利用した場合の転送速度(参考用)

2009年12月23日 水曜日

FreeNASには7S-amd64版にアップデータを適用したものを利用しました。

7S-FreeNAS-amd64-LiveCD-0.7.1.4947.iso

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

FreeNASのチューンは以下の3点です。

ZFSテスト用の/cf/boot/loader.confの追加設定

vm.kmem_size="3072M"
vfs.zfs.arc_min="1024M"
vfs.zfs.arc_max="1024M"

System|Advanced の Enable tuning of some kernel variables のチェック

System|Advanced|sysctl.confの値修正

net.inet.tcp.recvspace 393216
net.inet.tcp.sendspace 393216

テスト環境の主要構成パーツは以下の通りです。

FreeNAS 7S-amd64(4947):
M/B: ASUS M2A-VM (AMD 690G + SB600)
Mem: DDR2-800(PC6400) 2GB x 2
CPU: AMD X2 5200+ (2.7GHz, 2core)
Net: onboard Realtek 8111 (LAN management)
NIC: Intel PRO/1000 PT Server Adapter (OPT1 for iSCSI primary)
NIC: Intel PRO/1000 PT Server Adapter (OPT2 for iSCSI secondary)
HDD: Maxtor 4K080H4 (U100/80GB) (/mnt/data)
HDD: Western Digital WD5000AAKS (SATAII/500GB) (/dev/ad4)

ESXi4.0 Host:
M/B: MSI K9NGM3-FIH (nVidia GeForce7050PV + nForce 630a)
CPU: AMD X2 BE-2400 (2.4GHz, 2core)
Mem: DDR2-800(PC6400) 2GB x 2
Net: onboard nForce integrated (VMKernel for iSCSI primary)
NIC: Realtek 8169S (32bitPCI) (VM Network for LAN management)
USB: SILICON POWER Ultima II I-Series 2GB (ESXi boot device)
iSCSI: 120GB on FreeBSD 7.2 + UFS (temporary, iso images, etc)
iSCSI: 465GB on FreeNAS (/dev/ad4)

WS2008R2 Hyper-V Host:
M/B: GIGABYTE GA-G33-DS3R (Intel G33 + ICH9R)
CPU: Intel C2Q Q6600 (2.4GHz, 4core)
Mem: DDR2-800(PC6400) 2GB x 4
Net: onboard Realtek 8111 (for iSCSI secondary)
NIC: Intel PRO/1000 PT Desktop Adapter (for iSCSI primary)
NIC: Realtek 8169S (32bitPCI) (LAN management)
HDD: Western Digital WD5000ABYS (SATAII/500GB) (boot device)
iSCSI: 180GB on FreeBSD 7.1 + ZFS RAIDZ2 (main storage, VHD)
iSCSI: 120GB on FreeBSD 7.2 + UFS (backup, iso images, etc)

FreeNAS shell 上でのディスク情報

freenas:/mnt# diskinfo -t ad4
ad4
        512             # sectorsize
        500107862016    # mediasize in bytes (466G)
        976773168       # mediasize in sectors
        969021          # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        ad:WD-WCAPW3808248      # Disk ident.

Seek times:
        Full stroke:      250 iter in   8.933453 sec =   35.734 msec
        Half stroke:      250 iter in   5.990421 sec =   23.962 msec
        Quarter stroke:   500 iter in   9.154314 sec =   18.309 msec
        Short forward:    400 iter in   2.128259 sec =    5.321 msec
        Short backward:   400 iter in   2.014236 sec =    5.036 msec
        Seq outer:       2048 iter in   0.330524 sec =    0.161 msec
        Seq inner:       2048 iter in   0.330175 sec =    0.161 msec
Transfer rates:
        outside:       102400 kbytes in   1.222357 sec =    83773 kbytes/sec
        middle:        102400 kbytes in   1.394441 sec =    73434 kbytes/sec
        inside:        102400 kbytes in   2.501426 sec =    40937 kbytes/sec
 

FreeNAS -> WS2008R2 Host (direct)

FreeNAS -> ESXi4.0 VMFS -> WS2008R2 Guest

ESXiゲストでCrystalDiskMark 3.0beta2を実行した時のFreeNAS負荷
 

FreeNASの設定など各種
 
 
 
 
(クリックで拡大) (click to see large image)


 

ESXi上で実行した場合はおよそ、

Seq.Read 72MB/s CPU load 10%
Seq.Write 52MB/s CPU load 25%

ぐらいが期待できるようです。

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

2009年12月22日 火曜日

更新>istgt 2009/12/25版

ESXから利用時に書き込み処理が間に合わないと、ESXからABORT_TASKが
発行されますが、その処理方法に問題がありました。
詳しくはわかりませんが、およそ5~10秒以内にSCSI反応できないと、
発行されるようです。
(シーケンシャル書き込みが連続しているとライトキャッシュで発生)
この為に再接続処理でVMFSに対する応答速度が犠牲になっていました。
ESXに関してはさらなる負荷テストを必要とします。
余裕があれば後ほどESX接続によるSSをアップします。

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20091222.tar.gz) = 67403ae7ea4035a226d86606bc6dc7b9
SHA256 (istgt-20091222.tar.gz) = 9d1f73667833339aee4bcc63f893436ad84dd97dd47913923300ce53f3ed89a6

主な修正点:
デフォルトのキューサイズを32に変更しました。
syslogプライオリティをconfigure時に変更可能にしました。
待ち時間を増加、タイムアウト値と連動するように修正しました。
タスクの処理開始時間を記録するようにしました。
ベンダ定義のVPDに対してエラーではなく警告を出すようにしました。
TASK管理のStatSN処理を変更しないようにしました。