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

あけましておめでとうございます。

2012年1月1日 日曜日

あけましておめでとうございます。
Happy New Year!

昨年は激動の年でしたけど、今年は無事に終わると良いですね。

今年の目標はカーネルドライバを片手間で作成できるようになる!
と全部のPCに10GbEのiSCSI専用線を配置する!

あたりですかね。たぶん面倒なのはMini-ITXなマシンでしょうね。
Mini-ITXはオンボードで10GbEかデュアル1GbE実装がないと結構敷居が高い。
昨年中にiSCSIホストと仮想化ホスト(ESXi正副とWS/Hyper-V2)には装着しました。

では、またのんびり進行ですがよろしくお願いします。

istgt (iSCSI target) 20111008版 for FreeBSD

2011年10月8日 土曜日

ロックの期間の調整、SendTargetsの応答追加などを行いました。
将来の拡張用にLUNオプションにReadCache/WriteCacheを追加しました。
これにより、以前からサポートしていた揮発性ライトキャッシュモード
(O_FSYNC)を最初から設定できるようになりました。
一応、これが今年の安定版になる予定です。

新規のコンフィグキー(LUNオプション):
  #LUN0の数字部分は各LUN番号(デフォルトは両方有効)
  LUN0 Option ReadCache Disable
  LUN0 Option WriteCache Disable

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20111008.tar.gz) = f9a685851e127f018502a07181d7799e
SHA256 (istgt-20111008.tar.gz) = 41ddc49dbd0cda81c3f7557e76d27b851e042a32acb448dac1b743c759b0b37e

主な修正点:
 ノーマルセッション中のSendTargetsに応答追加
 リードキャッシュ、ライトキャッシュ設定追加
 ロック期間などの改善

istgt (iSCSI target) 20110928版 for FreeBSD

2011年9月28日 水曜日

更新>istgt 2011/10/08版

10ギガビット上の処理がとても残念だったので、
ロックの削減など超高速化を行いました。

その結果、ESXi5のVM上から400MB/sの読込と800MB/sの書込処理が
可能になりました。
実際の速さはハードディスクの書き込み処理に依存します。
当方のRAIDZ2環境(RAID6相当、2TBx7)では
4GBで400MB/sの読込と200MB/sの書込でした。

※追記 – 書き忘れた。
モードフラグが増設されたので、従来の -m1 が -m2 になりました。

※2011/10/02追記
FreeNAS 8.0.1 リリース版に搭載されました。
※2011/10/14追記
改良版がFreeNAS 0.7.2.81917S-8191に搭載されました。

iSCSIターゲット側 (FreeBSD 8-STABLE)
AMD Phenom II X6 1065T (2.9GHz/6core) + Memory 16GB
Intel Ethernet Server Adapter X520-DA2 (Dual SFP+/82599)
Intel Gigabit ET Dual Port Server Adapter (82576)

ESXi5サーバ側 (ESXi 5.0.0, 474610)
Intel Pentium G6950 (2.8GHz/2core) + Memory 16GB
Qlogic QLE8152 (Dual SFP+/10Gbps CNA)
Intel Gigabit ET Dual Port Server Adapter (82576)

参考用10ギガビット1本での処理能力

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20110928.tar.gz) = f7f75e48edfa88809b54f9c2427ab69b
SHA256 (istgt-20110928.tar.gz) = 2add885c857470de3d24ba157f5c9e82f8caa76957ce6d12775f848f84da48ed

主な修正点:
 LUN処理の改善
 normalモードの追加
 フラグ操作をアトミック変数処理に変更
 送信スレッドにタイムアウトを設定

10ギガビットのデータストアの為にiSCSIの処理を高速化してみる

2011年9月25日 日曜日

状態チェックでmutexによるロックであったのを廃止して、
アトミック処理に変更などいろいろ調査中です。

現在のESXi5テスト環境で以下のようなパフォーマンスです。
リードはあまり変わらず。ライトは劇的に改善。
当初の予想とは反対にライトが600MB/sを超えてます。

さらに高速化。800MB/s超えちゃった。リードもだいぶ改善された。

※追記
いろいろ試した結果、こんな感じに落ち着きました。今回は4000MBも計測しました。
ZFS RAIDZ2(RAID6相当、2TBx7)な領域にエクステントを置いてあります。


(クリックで拡大)

istgt (iSCSI target) 20110918版 for FreeBSD

2011年9月18日 日曜日

更新>istgt 2011/09/28版

ESXi5で警告がすごいのとEager Zeroedの処理が遅いと言う指摘が
ありましたので対処しました。

シカでした。さんにテスト用バイナリでの試験を行って頂きました。
ありがとうございました。結果は後日アップして頂けるとのこと。
VMWare ESXi 5.0 – 外部ストレージを試してみる。
FreeNAS – ESXi5.0 Eager Zeroed 対策版の動作確認について。

※9/21追記
結果が公開されたのでリンクを追加しました。

この修正版が8.0.1-RC2に搭載される予定です。8.0.1-RC2.1に搭載されました。
その後に7Sと安定板も更新する予定です。

※Eager Zeroedとは?
ストレージ上に領域を確保すると同時にゼロフィルを行って初期化する方式。
20110902から搭載されたBlock Zeroing機能とESXi5の機能により
ネットワークトラフィック不要で巨大な空ファイル作成を行えるようになります。
(現時点ではエクステント即時書き込み)

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20110918.tar.gz) = bbf6e99a53131bddadc8ac9c6fd225f6
SHA256 (istgt-20110918.tar.gz) = 00f2d9958437212d5a0131e06d1ea9d9f27daa673a56cc94abc134e2a555fed4

主な修正点:
 WRITE_SAMEを複数ブロックまとめて処理
 WRITE_SAMEの転送済みサイズの間違いを修正


Linux (arm) 版バイナリパッケージ (LANDISK HDL-GTなど)

istgt (arm binary): istgt-20110918-arm.tar.gz
(arm版実行ファイルとスクリプト)

インストール/アップグレード作業:

# cd work
# wget http://www.peach.ne.jp/archives/istgt/build/istgt-20110918-arm.tar.gz
# tar zxvf istgt-20110918-arm.tar.gz
# cd istgt-20110918-arm
# sh setup.sh

デーモンの再起動方法:

# /etc/init.d/istgt restart

自動起動スクリプトの登録方法:

# update-rc.d istgt defaults 30

設定ファイルパス:
/opt/istgt/etc/istgt.conf
/opt/istgt/etc/auth.conf
/opt/istgt/etc/istgtcontrol.conf

初期インストール参考用:http://shell.peach.ne.jp/aoyama/archives/1513

MD5 (istgt-20110918-arm.tar.gz) = a764263e3140ba887e60999876cca8b0
SHA256 (istgt-20110918-arm.tar.gz) = d341c7f2bb8f94218d91bb58a5157284e0430b7d34163be7f7889801b31d9d2e

arm版の注意点:
QueueDepth 32がデフォルトになったので、armではCPUとメモリが少ないので、
istgt.conf で QueueDepth 16 または QueueDepth 0 を推奨です。

前バージョンはスクリプトに問題があったので、もしも起動せず
プロセスが残ってしまう場合は一旦、

killall istgt

を実行して、プロセスが完全に停止した後に再度セットアップを行ってください。

ESXiで既存LUNがデータストアとして認識されない場合

2011年9月11日 日曜日

デバイスとして認識するのにデータストアとして認識されない場合は、
スナップショットLUNとして識別されている可能性があります。
/var/log/vmkernel.log にはこんな感じで出ています。
2011-09-11T21:55:32.943Z cpu0:3434)LVM: 8445: Device t10.FreeBSD_iSCSI_DISK______10000001________________________:1 detected to be a snapshot:
2011-09-11T21:55:32.943Z cpu0:3434)LVM: 8452:   queried disk ID: <type 2, len 14, lun 0, devType 0, scsi 0, h(id) 17351408149820670746>
2011-09-11T21:55:32.943Z cpu0:3434)LVM: 8459:   on-disk disk ID: <type 2, len 14, lun 3, devType 0, scsi 0, h(id) 16645779391740574531>

vSphere ClientのイベントタブでもLVMに関するイベントが参照できます。

こんな場合は「構成」->「ストレージ」 -> 「ストレージの追加」で
ディスク/LUNを選択すると、VMFSラベルが参照できるので、必要なLUNを選び、
「既存の署名を保持」を選択します。

しばらく待つと、ちゃんとデータストアに出てくるようになります。


(クリックで拡大)

追記:
GUIから操作できない場合は、SSHでログインして、

esxcfg-volume -l

でVMFS UUIDを表示して、

esxcfg-volume -M “49d22e2e-996a0dea-b555-001f2960aed8″

みたいな感じでマウントします。

istgt (iSCSI target) 20110907版 for FreeBSD

2011年9月8日 木曜日

更新>istgt 2011/09/18版

ESXi5に搭載されているハードウェアアクセラレーション向けに強化しました。
前回のBlock Zeroingに加えて、今回、Hardware Assisted Lockingを
追加しました。また、LUN毎のシリアル、回転数、形状が設定可能になりました。
副作用で複数LUNがESXiから認識されるようになりますが、
性能最適化はまだ行っていません。

新しい設定:
各LUNに対して以下のようなオプション設定が可能です。
例はLUN0のエクステントが7200回転HDD上にあると想定しています。
ここで回転数を非回転ドライブに指定するとSSDとしてESXi5から認識されます。

なお、すべてデフォルト値が予め設定してありますので、
こだわらない場合は修正する必要はありません。

[LogicalUnit1]
  LUN0 Storage /tank/iscsi/istgt-disk1 10GB

  # override the serial of LUN0 specified with UnitInquiry
  #LUN0 Option Serial “10000001″

  # for 3.5inch, 7200rpm HDD
  # RPM 0=not reported, 1=non-rotating(SSD), n>1024 rpm
  LUN0 Option RPM 7200
  # FormFactor 0=not reported, 1=5.25, 2=3.5, 3=2.5, 4=1.8, 5=less 1.8 inch
  LUN0 Option FormFactor 2

  # for 2.5inch, SSD
  #LUN0 Option RPM 1
  #LUN0 Option FormFactor 3

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

修正版をご利用ください。

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20110907.tar.gz) = 5e0805ae82f4bdcc9d09138ac055df29
SHA256 (istgt-20110907.tar.gz) = 49315e10a039fe08283cd32096487561f34e6552eee340a2afc2aceb59e75dd1

主な修正点:
LUN毎の回転数(RPM)、形状(FormFactor)設定を追加
LUN毎のシリアル設定を追加(デフォルト値は id+”L”+LUN番号)
COMPARE AND WRITEを実装
ターゲット名のチェックを強化

istgt (iSCSI target) 20110902版 for FreeBSD

2011年9月2日 金曜日

更新>istgt 2011/09/07版

できるだけ早い方が良いだろうと思ったので早速リリースします。
万一、この版でもESXi5で問題がある場合はブログで報告して頂けるとありがたいです。

ESXi5に接続できないと言う致命的問題が発覚したので修正しました。
また、前回のAIO関連は次のステップの邪魔になるので削除しました。

機能的な部分では WRITE_SAME コマンド(繰り返し書き込み)を追加したので、
ゼロフィルを要求するような場面で使えるけど効果の程は不明です。

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20110902.tar.gz) = a35d4b9bde2974f8f0a37c6db2206091
SHA256 (istgt-20110902.tar.gz) = 309c2c6ca2fbcbb261f77b02b53ed5692761038c95fe8b41ca7c7d6a53280ffb

主な修正点:
WRITE_SAME(10)/WRITE_SAME(16)を実装
Block LimitsなどのVPDを追加
ESXi5との接続問題を解消
Makefileなどビルド系を修正(Thanks to Arno Toell)


Linux (arm) 版バイナリパッケージ (LANDISK HDL-GTなど)

istgt (arm binary): istgt-20110902-arm.tar.gz
(arm版実行ファイルとスクリプト)

修正版をご利用ください。

インストール/アップグレード作業:

# cd work
# wget http://www.peach.ne.jp/archives/istgt/build/istgt-20110902-arm.tar.gz
# tar zxvf istgt-20110902-arm.tar.gz
# cd istgt-20110902-arm
# sh setup.sh

デーモンの再起動方法:

# /etc/init.d/istgt restart

自動起動スクリプトの登録方法:

# update-rc.d istgt defaults 30

設定ファイルパス:
/opt/istgt/etc/istgt.conf
/opt/istgt/etc/auth.conf
/opt/istgt/etc/istgtcontrol.conf

初期インストール参考用:http://shell.peach.ne.jp/aoyama/archives/1513

MD5 (istgt-20110902-arm.tar.gz) = 23b18115a5f1b79ef1b1481cbf6cdda9
SHA256 (istgt-20110902-arm.tar.gz) = 2776c39e8bfe3ffc59a36b6e20d05e63ec61c20cd015cfc99c99e2b624926964

arm版の注意点:
QueueDepth 32がデフォルトになったので、armではCPUとメモリが少ないので、
istgt.conf で QueueDepth 16 または QueueDepth 0 を推奨です。

前バージョンはスクリプトに問題があったので、もしも起動せず
プロセスが残ってしまう場合は一旦、

killall istgt

を実行して、プロセスが完全に停止した後に再度セットアップを行ってください。

istgt が Debian(kfreebsd) のパッケージになりました!

2011年8月20日 土曜日

NetBSDに続き、Debianでも使えるようになりました。

詳細はこちらです。
http://packages.debian.org/unstable/main/istgt

現在は20110717の最新版が登録されています。ぜひお試しください。

istgt (iSCSI target) 20110717版 for FreeBSD

2011年7月17日 日曜日

更新>istgt 2011/09/02版

次の追加をやる前にAIO使えないかなぁと試してみたら、いまの処理だと
面倒なことがわかったので、とりあえず無効化しました・・・。
試してみたい人は configure に –with-aio を付けると有効になります。
(experimentalのさらにexperimental的なものですが)

一部で要望のあったイニシエータ名拒否機能を追加しました。

  InitiatorName “!iqn.1991-05.com.microsoft:moon”
  InitiatorName “ALL”

こんな感じで、iqn.1991-05.com.microsoft:moon 以外のすべてという指定が
可能です。

PR kern/157770 に接続問題が出ていたので、対処しました。
http://lists.freebsd.org/pipermail/freebsd-scsi/2011-June/004982.html

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

作成方法:

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

デーモンの再起動方法:

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

MD5 (istgt-20110717.tar.gz) = dfbf157762e1c8d79cc6a49820ade568
SHA256 (istgt-20110717.tar.gz) = b9605c6ca4286e25a581791871ca4c90d253b4aad6d25bbde6eed0713d50bdb3

主な修正点:
イニシエータ指定で!を先頭につけると拒否する機能を追加
初期ファイルサイズを最少サイズで割り当てるように変更(-m1)
ファイルの範囲外で全てゼロの場合は書き込みスキップに変更(-m1)
AIOを使った書き込み処理を追加(デフォルト無効)
無指定時のQueueDepthを32に変更
Discoveryセッションで処理するべきでないキーを追加


Linux (arm) 版バイナリパッケージ (LANDISK HDL-GTなど)

istgt (arm binary): istgt-20110717-arm.tar.gz
(arm版実行ファイルとスクリプト)
修正版をご利用ください。

インストール/アップグレード作業:

# cd work
# wget http://www.peach.ne.jp/archives/istgt/build/istgt-20110717-arm.tar.gz
# tar zxvf istgt-20110717-arm.tar.gz
# cd istgt-20110717-arm
# sh setup.sh

デーモンの再起動方法:

# /etc/init.d/istgt restart

自動起動スクリプトの登録方法:

# update-rc.d istgt defaults 30

設定ファイルパス:
/opt/istgt/etc/istgt.conf
/opt/istgt/etc/auth.conf
/opt/istgt/etc/istgtcontrol.conf

初期インストール参考用:http://shell.peach.ne.jp/aoyama/archives/1513

MD5 (istgt-20110717-arm.tar.gz) = 61ee36a564ab0c5518e507cbfab1414c
SHA256 (istgt-20110717-arm.tar.gz) = c9f46b9ddd826e5f3817f14d750e8f76b53dc84ec5b27253225d4bbac0a68ef5

arm版の注意点:
QueueDepth 32がデフォルトになったので、armではCPUとメモリが少ないので、
istgt.conf で QueueDepth 16 または QueueDepth 0 を推奨です。

前バージョンはスクリプトに問題があったので、もしも起動せず
プロセスが残ってしまう場合は一旦、

killall istgt

を実行して、プロセスが完全に停止した後に再度セットアップを行ってください。