<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>環境さんぷる &#187; ネットワーク</title>
	<atom:link href="http://shell.peach.ne.jp/aoyama/archives/category/%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af/feed" rel="self" type="application/rss+xml" />
	<link>http://shell.peach.ne.jp/aoyama</link>
	<description>WordPress 2.9.2</description>
	<lastBuildDate>Fri, 30 Jul 2010 08:13:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>臨時メンテナンス終了</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1128</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1128#comments</comments>
		<pubDate>Sun, 06 Jun 2010 04:41:57 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[ネットワーク]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1128</guid>
		<description><![CDATA[1TBの複製に予想外の時間(60MB/s程度)がかかりましたが終了しました。
以前VT6130の実験に使ったままずっと放置されていたExpress5800/110Geに
パーツ補強をして、仮運用のESXiマシンを作成しました。
とりあえずistgtの実験とESXi用サーバを導入するまでのつなぎと言うことで。
Express5800/110Ge
BIOS 1.0.0042
CPU Celeron E3400 (Dual-Core/2.6GHz/L2 1MB)
メモリ 4GB
HDD なし
NIC1 82566DM-2 (onboard)
NIC2 PRO/1000 PT Server Adapter
NIC3 GBE-PCIe2 (VT6130)
NIC4 PRO/100 Management Adapter
iSCSIターゲットはistgt 20100604版(非公開)にて180GBを割り当てました。
NICは種類をみれば想像はつくかもしれないけど、
NIC1とNIC2をiSCSI用に、NIC3を管理用に、NIC4を外部接続用に
それぞれ割り当てました。
補足：
iSCSIターゲットの容量が不足した場合でもストレージプールの余裕があれば、
istgtの設定を増加して、サービスの再起動をすればESXi側はいつでも拡張
できます。(もちろん仮想マシンを起動したままで)
追記：
20100606版をアップしました。
上記環境も20100606版に移行しました。
]]></description>
			<content:encoded><![CDATA[<p>1TBの複製に予想外の時間(60MB/s程度)がかかりましたが終了しました。<br />
以前VT6130の実験に使ったままずっと放置されていたExpress5800/110Geに<br />
パーツ補強をして、仮運用のESXiマシンを作成しました。<br />
とりあえずistgtの実験とESXi用サーバを導入するまでのつなぎと言うことで。</p>
<p>Express5800/110Ge<br />
BIOS <a href="http://support.express.nec.co.jp/dload/410496-A01/410496-A01_633951727369950981.htm" target="_blank">1.0.0042</a><br />
CPU Celeron E3400 (Dual-Core/2.6GHz/L2 1MB)<br />
メモリ 4GB<br />
HDD なし<br />
NIC1 82566DM-2 (onboard)<br />
NIC2 PRO/1000 PT Server Adapter<br />
NIC3 GBE-PCIe2 (VT6130)<br />
NIC4 PRO/100 Management Adapter</p>
<p>iSCSIターゲットはistgt 20100604版(非公開)にて180GBを割り当てました。<br />
NICは種類をみれば想像はつくかもしれないけど、<br />
NIC1とNIC2をiSCSI用に、NIC3を管理用に、NIC4を外部接続用に<br />
それぞれ割り当てました。</p>
<p>補足：<br />
iSCSIターゲットの容量が不足した場合でもストレージプールの余裕があれば、<br />
istgtの設定を増加して、サービスの再起動をすればESXi側はいつでも拡張<br />
できます。(もちろん仮想マシンを起動したままで)</p>
<p>追記：<br />
20100606版をアップしました。<br />
上記環境も20100606版に移行しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1128/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>臨時メンテナンス</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1124</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1124#comments</comments>
		<pubDate>Sat, 05 Jun 2010 14:05:06 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[ネットワーク]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1124</guid>
		<description><![CDATA[昨日、セカンダリネームサーバおよび当ブログを実行させているサーバの
メンテナンスを行いハードディスク・ネットワークカード増設や仮想化への
準備を行いました。現在仮運用中です。
本日ネットワーク機器の臨時メンテナンスの為に、21:15～22:10まで
IPv6を含む外部接続が不安定になっていました。
現在は、サービスの再起動を確認しています。
また、明日の早朝にバックアップサーバのメンテナンスを行う為に、各サーバの
スナップショット作成や転送等で一時的にネットワークが繋がりにくくなったり
遅延するかもしれませんがご了承ください。
]]></description>
			<content:encoded><![CDATA[<p>昨日、セカンダリネームサーバおよび当ブログを実行させているサーバの<br />
メンテナンスを行いハードディスク・ネットワークカード増設や仮想化への<br />
準備を行いました。現在仮運用中です。</p>
<p>本日ネットワーク機器の臨時メンテナンスの為に、21:15～22:10まで<br />
IPv6を含む外部接続が不安定になっていました。<br />
現在は、サービスの再起動を確認しています。</p>
<p>また、明日の早朝にバックアップサーバのメンテナンスを行う為に、各サーバの<br />
スナップショット作成や転送等で一時的にネットワークが繋がりにくくなったり<br />
遅延するかもしれませんがご了承ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>久しぶりにNICのFirm更新をしてみる。</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/585</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/585#comments</comments>
		<pubDate>Fri, 27 Nov 2009 19:02:06 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=585</guid>
		<description><![CDATA[Intel iSCSI Remote Boot Setup Utility 14.7(10/23/2009) に含まれる
ISCSIUTLでカードを更新すると2.3.81になりました。
このバージョンにてブートしようとするとistgtのログに
&#62;istgt_iscsi.c:3635:istgt_iscsi_transfer_out: ***WARNING*** lun(0&#215;7457809901000002)
こんな感じのログが大量に吐き出されます。
よくよく考えると、警告ログを省略する手段が存在しない。
（トレースログの変更は可能ですが）
警告の内容自体は動作に影響を及ぼすものではないので無視できます。
まぁ、警告が出る時点でistgtがダメなのかもだけど変更できたほうがいいかも。
Intel PRO1000/PT Server Adapter(2.3.81) + Windows Server 2008 R2
のディスクレスブートを確認しました。
VirtulBOX 3.0.12でiSCSIディスクが認識し、VM起動ができる事を確認しました。
istgt-20091124がportsにコミットされました。
portsnap/potrtupgrade等でどうぞ。
FreeNAS方面は別記事にします。
]]></description>
			<content:encoded><![CDATA[<p>Intel iSCSI Remote Boot Setup Utility 14.7(10/23/2009) に含まれる<br />
ISCSIUTLでカードを更新すると2.3.81になりました。</p>
<p>このバージョンにてブートしようとするとistgtのログに</p>
<p>&gt;istgt_iscsi.c:3635:istgt_iscsi_transfer_out: ***WARNING*** lun(0&#215;7457809901000002)</p>
<p>こんな感じのログが大量に吐き出されます。<br />
よくよく考えると、警告ログを省略する手段が存在しない。<br />
（トレースログの変更は可能ですが）<br />
警告の内容自体は動作に影響を及ぼすものではないので無視できます。<br />
まぁ、警告が出る時点でistgtがダメなのかもだけど変更できたほうがいいかも。</p>
<p>Intel PRO1000/PT Server Adapter(2.3.81) + Windows Server 2008 R2<br />
のディスクレスブートを確認しました。</p>
<p>VirtulBOX 3.0.12でiSCSIディスクが認識し、VM起動ができる事を確認しました。</p>
<p>istgt-20091124がportsにコミットされました。<br />
portsnap/potrtupgrade等でどうぞ。</p>
<p>FreeNAS方面は別記事にします。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/585/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/17版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/242</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/242#comments</comments>
		<pubDate>Sat, 17 Jan 2009 15:40:59 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[64bitLBA]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[仮想デバイス]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=242</guid>
		<description><![CDATA[更新＞MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/22版
仮想デバイスの構想一ヶ月、メディアの交換が正常にできずに悩むこと一週間あまり、やっと動くようになったので公開します。
記念すべき今年初のリリースです。
何か要望とかあればブログコメントでもメールでも構わないのでよろしくお願いします。
マルチパスの対応は都合によりしばらく凍結します。
またZFS/IPv6/64bitLBA以外の問題は後回しにします。
当面仮想デバイスの開発調整を最優先事項とします。
とりあえず実行速度よりロジック優先で作成してあります。
まずは仮想CD/DVDROMと仮想テープドライブ(DLT8000を想定)をリリースします。
現時点でバックアップリストアの基本動作確認のとれたソフトは
Windows 2000 Sever SP4 添付のWindowsバックアップ
Windows Server 2003 R2 添付のWindowsバックアップ
Symantec BackupExec 12.5 for Windows Server
FreeBSD 7.x の tar/mt コマンド
GNU tar 1.20 マルチボリューム
BackupExecに関してはiSCSI接続後にホットスワップ対応デバイスウィザードを
実行する事によりデバイスプールに追加できます。
※注意事項※
DLT8000が解釈できないコマンド類はエラーとしてsyslogに記録されますがテープの動作は行います。
現在の所、制御ポート経由(telnet等)で任意のターゲットのメディア操作が出来てしまいます。
それにしてもサイズがすんごい大きくなった。
パッチ元はFreeBSDで利用されてないコードを含めても2万行もないのに
仮想DVDと仮想テープドライブ対応だけで9千行を超えてサイズも500kに達してる。
もはやパッチレベルの範疇を超えてる気が。
そして、インストールテスト中に気が付いたけど制御コマンドのインストールとか
まったく考えてなかった(涙)とりあえず手動コピーでよろしく。
今後の予定もとい導入したほうがよさそうな事？
☆メディア制御をもうすこし賢い方法にする。
☆SCSIパススルーデバイスを追加する。
☆USBメモリ等のリムーバブルデバイスにも対応する。
☆デバイスのホットスワップに対応する。
☆複数のメディアスロットをサポートする。
☆複数イニシエータからの接続を可能にする。
☆マルチパスを考慮する。
パッチファイル： iscsi-target-20090117-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20090117-patch.bz2 &#124; patch -p0
# make
# make install
#
# cp -p work/netbsd-iscsi-20080207/src/istgtcontrol /usr/local/bin/
#
手動でメディア制御コントローラーをインストールしてください。
これは仮想DVDやテープの取り出し交換などに使います。
設定例は以前の投稿をどうぞ。
新しい機能：
targetsファイル内のlengthカラムで加減算で一個だけ追加指定できます。
ZEPTGMKのサフィックスも合わせて利用できます。
1023MBの指定例： 1GB-1MB (=1024MB-1MB=1023MB)
1025MBの指定例： 1GB+1MB (=1024MB+1MB=1025MB)
targetsファイル内の各targetにデバイス固有値を指定できます。
type 仮想デバイスのタイプ
 disk SBC-2準拠 Direct access block device
 dvd  MMC-4準拠 CD/DVD device [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/252" target="_self">更新＞MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/22版</a></p>
<p>仮想デバイスの構想一ヶ月、メディアの交換が正常にできずに悩むこと一週間あまり、やっと動くようになったので公開します。<br />
記念すべき今年初のリリースです。<br />
何か要望とかあればブログコメントでもメールでも構わないのでよろしくお願いします。</p>
<p>マルチパスの対応は都合によりしばらく凍結します。<br />
またZFS/IPv6/64bitLBA以外の問題は後回しにします。<br />
当面仮想デバイスの開発調整を最優先事項とします。<br />
とりあえず実行速度よりロジック優先で作成してあります。<br />
まずは仮想CD/DVDROMと仮想テープドライブ(DLT8000を想定)をリリースします。<br />
現時点でバックアップリストアの基本動作確認のとれたソフトは</p>
<p>Windows 2000 Sever SP4 添付のWindowsバックアップ<br />
Windows Server 2003 R2 添付のWindowsバックアップ<br />
Symantec BackupExec 12.5 for Windows Server<br />
FreeBSD 7.x の tar/mt コマンド<br />
GNU tar 1.20 マルチボリューム</p>
<p>BackupExecに関してはiSCSI接続後にホットスワップ対応デバイスウィザードを<br />
実行する事によりデバイスプールに追加できます。</p>
<p>※注意事項※<br />
DLT8000が解釈できないコマンド類はエラーとしてsyslogに記録されますがテープの動作は行います。<br />
現在の所、制御ポート経由(telnet等)で任意のターゲットのメディア操作が出来てしまいます。</p>
<p>それにしてもサイズがすんごい大きくなった。<br />
パッチ元はFreeBSDで利用されてないコードを含めても2万行もないのに<br />
仮想DVDと仮想テープドライブ対応だけで9千行を超えてサイズも500kに達してる。<br />
もはやパッチレベルの範疇を超えてる気が。</p>
<p>そして、インストールテスト中に気が付いたけど制御コマンドのインストールとか<br />
まったく考えてなかった(涙)とりあえず手動コピーでよろしく。</p>
<p>今後の予定もとい導入したほうがよさそうな事？<br />
☆メディア制御をもうすこし賢い方法にする。<br />
☆SCSIパススルーデバイスを追加する。<br />
☆USBメモリ等のリムーバブルデバイスにも対応する。<br />
☆デバイスのホットスワップに対応する。<br />
☆複数のメディアスロットをサポートする。<br />
☆複数イニシエータからの接続を可能にする。<br />
☆マルチパスを考慮する。</p>
<p><span style="text-decoration: line-through;">パッチファイル： iscsi-target-20090117-patch.bz2</span><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20090117-patch.bz2 | patch -p0
# make
# make install
#
# cp -p work/netbsd-iscsi-20080207/src/istgtcontrol /usr/local/bin/
#</code></pre>
<p>手動でメディア制御コントローラーをインストールしてください。<br />
これは仮想DVDやテープの取り出し交換などに使います。</p>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>新しい機能：<br />
targetsファイル内のlengthカラムで加減算で一個だけ追加指定できます。<br />
ZEPTGMKのサフィックスも合わせて利用できます。<br />
1023MBの指定例： 1GB-1MB (=1024MB-1MB=1023MB)<br />
1025MBの指定例： 1GB+1MB (=1024MB+1MB=1025MB)</p>
<p>targetsファイル内の各targetにデバイス固有値を指定できます。<br />
type 仮想デバイスのタイプ<br />
 disk SBC-2準拠 Direct access block device<br />
 dvd  MMC-4準拠 CD/DVD device (現在はRead系のみ)<br />
 tape SSC-2準拠 Sequential-access device<br />
id 仮想デバイス識別子<br />
 1～2147483647（重複不可）</p>
<p>省略時はtype=disk,id=自動採番(0&#215;0100～)と解釈します。<br />
現時点ではidは装置シリアル番号の下位4桁に利用しています。省略可能です。</p>
<p>targetsファイルでリムーバブルメディアを定義できます。<br />
type メディアタイプ<br />
 iso ISOイメージ<br />
 tape 仮想テープイメージ<br />
flags メディアフラグ<br />
 rw 読み書き用とします。<br />
 ro 読み込み専用とします。（ライトプロテクト状態でイニシエータに応答）<br />
 extend メディアの末尾まで書き込みした場合に可能であれば256MB単位で拡張します。<br />
 dynamic メディアの書き込み状況に応じて可能であれば拡大縮小します。</p>
<p>メディアを読み書き用にしてもtarget指定がroならば書き込み不可能です。<br />
メディアサイズの拡大縮小はtype=tapeのみサポートします。<br />
dynamicを指定した場合はメディアの長さ指定は意味がありません。<br />
現時点ではidカラムは特に利用していません。省略可能です。</p>
<p>※targetsの書式は将来変更する可能性があります</p>
<pre id="ex"><code># mcs extra style
#
# media         type    id      flags           file                    length
#
media31         iso     1       ro              /tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso auto
media41         tape    41      rw              /tank/iscsi/tapes/41    20GB
media42         tape    42      rw,extend       /tank/iscsi/tapes/42    40GB
media43         tape    43      rw,dynamic      /tank/iscsi/tapes/43    auto
#
# target        type    id      flags           storage         netmask
#
target2         disk    2       rw              extent2         192.168.2.0/24
target3         dvd     3       ro              media31         192.168.2.0/24
target4         tape    4       rw              media41         192.168.2.0/24
#</code></pre>
<p>制御用ポートとしてiSCSIターゲットポートの次の番号でオープンするようになりました。<br />
デフォルトのiSCSI標準ポートは3260なので制御ポートは3261になります。</p>
<p>既知の問題：<br />
iSCSIで接続しても正常に通信出来ずにPnPデバイスとして認識しない事があります。<br />
（一度iSCSI接続をログアウトして再接続すると認識されます）<br />
仮想テープの入出力にエラーが発生した場合、以後の書き込みができない可能性があります。<br />
（メディアを一旦取り出して再挿入すると認識するかもしれない）<br />
極端に小さい論理ブロック長でテープに大量に書き込むと論理ブロック数が不足する可能性があります。<br />
（内部的には64ビットですが現時点の対応ポジション変更系コマンドが32ビットなので）<br />
メディア交換した直後にエラーなどが発生する可能性があります。<br />
（ターゲットから非同期通信を行わない為、イニシエータがポーリングするまで内部情報が変化しない）<br />
メディア制御用のセキュリティが特に考慮されていない。<br />
メディア制御用コマンド istgtcontrol が自動でインストールされない。</p>
<p>いわゆる仕様：<br />
仮想デバイスは利用時(コマンド実行時)ロックのみでリザーブ・リリースに対応していない。<br />
（複数イニシエータからはもちろん、単機のマルチパス接続も想定していない）<br />
仮想デバイスのホットスワップには対応していない。<br />
テープドライブの圧縮機能は実装していない。<br />
単一の書き込みメディアを複数の仮想デバイスに装着した場合の動作は未定義。<br />
メディアのアンロードを行ってもメディアスロット内に残留するので次のロードで再セットされる。<br />
動的仮想テープのハードリミット（最大サイズ）が16EBの固定になっている。<br />
1本の仮想テープでは最大1024個のファイルマーク(BOT/EOTを含む)に限定される。</p>
<p>主な修正点：<br />
LUNの計算を間違えていたのを修正しました。<br />
違うターゲットに接続した場合に誤ってエラーが記録されるのを修正しました。<br />
MODE SELECT(10)が正常に動かないのを修正しました。<br />
MODE SENSE(6)(10)がショートモードで正しいブロック数を返さないのを修正しました。<br />
数値指定で加減算表記をできるように変更しました。<br />
マルチターゲット仕様のために内部データ構成を変更しました。<br />
tagetsファイルの定義を拡張しました。<br />
SCSIエラー時にセンスキーやASC/ASCQを返すようになりました。<br />
SSC2/MMC4のデバイスエミュレーションに対応しました。<br />
オーバーフローとアンダーフローをiSCSI PDUに返すように修正しました。<br />
メディアの拡大縮小を考慮するように変更しました。<br />
パッチ元のオリジナルに存在するバグを多数修正しました。<br />
メディア制御用スレッドを新設しました。<br />
スレッドの作成結果を調べていないバグを修正しました。<br />
メディア制御コマンドが新設されました。</p>
<p>～メディア制御のしかた～<br />
まず、制御対象がローカルホストであり、上記の設定がされていると仮定すると、<br />
target3のDVD装置にはメディアスロットmedia31が付いていて、<br />
/tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso が挿入されている状態になります。</p>
<p>このメディアを排出するにはOS上から取り出しを実行するか、以下のコマンドで行います。<br />
（コマンド行が長いので複数行に書きますが実際は一行です）</p>
<p># istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 unload</p>
<p>この状態はトレイ式DVDドライブのトレイが開いた状態に相当します。（メディア変更なし）<br />
以下のコマンドでトレイを閉めると同じメディアが読み込みされます。</p>
<p># istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 load</p>
<p>メディア自体を交換するにはファイルを指定します。追加でフラグとサイズも指定できます。</p>
<p># istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 -f ro -s auto change /tank/iscsi/dvds/7.1-RELEASE-i386-disc2.iso</p>
<p>ここで指定するファイル名は制御ターゲットサーバにある実際のパスです。<br />
今のところリモートメディアをマウントする事はできません。<br />
フラグとサイズの省略時はrwとautoになります。<br />
空白文字を含むファイル名はもちろんクオートしてください。</p>
<p>このコマンドを実行すると現在のメディアをunloadしてメディアを交換した後に<br />
loadするという一連の作業を排他ロックをかけた状態で行います。<br />
不幸にしてロードに失敗した場合は可能ならunload状態で終了します。<br />
成功するにしても失敗するにしてもコマンドが終了するまではOSなどからアクセスはできません。</p>
<p>現在のメディア状態をみるには、以下のコマンドを使います。</p>
<p># istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 list</p>
<p>実行例：</p>
<pre id="ex"><code># istgtcontrol -t iqn.1994-04.org.netbsd.iscsi-target:target3 -m media31 list
iqn=iqn.1994-04.org.netbsd.iscsi-target:target3, slot=media31
media file=NULL, flags=rw, size=auto
connect to localhost:3261
target banner "iSCSI Target Controller version 20090117 on ::1 from ::1"
slot1 present unlock media31 iso 1 ro "/tank/iscsi/dvds/7.1-RELEASE-i386-disc1.iso" auto
DONE LIST command</code></pre>
<p>以上の操作をリモートから実行するには -h オプションでターゲットホストを指定します。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/242/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>あけましておめでとうございます</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/230</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/230#comments</comments>
		<pubDate>Thu, 01 Jan 2009 07:58:39 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[64bitLBA]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=230</guid>
		<description><![CDATA[新年あけましておめでとうございます。
今年もよろしくお願いいたします。
昨年を振り返ってみると、Hyper-Vのパッチを公開してからアクセスが急激に伸びました。
FreeBSDでも興味ある人はそこそこいるのだなと(笑)
むろん海外からもアクセスされるようになったのも一因でしょうけど、
こんな場所でもアクセスして頂けるのはありがたい。
↓統計はこんな感じ。ちなみに検索キーワードはfreebsd,iscsi,hyepr-v,zfsとなってました。

そのHyper-Vによってテスト環境構築の手間がすごい削減されました。
VirtualServerに幻滅していただけにちょっとだけ見直した。
ZFSとかもっと触りたかったのだけど後半はiSCSIパッチだけに集中していたので、
あまりできなかった。残念。↓去年解決できなかった機能のスクリーンショット。

リームバブルメディアをどうやって簡単に出し入れするのかとか、
一度挿入されたメディアは不測の再起動でも永続的に使えるようにするとか、
考慮することが多すぎて(略)
この機能をなんとする為に複数動かせるように改造してたり(笑)
Hyper-VでのVM用のシステムディスク領域には20081225パッチ版でのMCS接続で安定して動いています。
上記画像の2003自体もこのiSCSIディスク上に容量可変で構築してあります。
今年も引き続きiSCSIとZFSを中心に活動していけたらと思います。
]]></description>
			<content:encoded><![CDATA[<p>新年あけましておめでとうございます。<br />
今年もよろしくお願いいたします。</p>
<p>昨年を振り返ってみると、Hyper-Vのパッチを公開してからアクセスが急激に伸びました。<br />
FreeBSDでも興味ある人はそこそこいるのだなと(笑)<br />
むろん海外からもアクセスされるようになったのも一因でしょうけど、<br />
こんな場所でもアクセスして頂けるのはありがたい。<br />
↓統計はこんな感じ。ちなみに検索キーワードはfreebsd,iscsi,hyepr-v,zfsとなってました。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2009/01/awstats2008.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-231" title="awstats2008" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2009/01/awstats2008-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>そのHyper-Vによってテスト環境構築の手間がすごい削減されました。<br />
VirtualServerに幻滅していただけにちょっとだけ見直した。<br />
ZFSとかもっと触りたかったのだけど後半はiSCSIパッチだけに集中していたので、<br />
あまりできなかった。残念。↓去年解決できなかった機能のスクリーンショット。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2009/01/ws2003istest1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-232" title="ws2003istest1" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2009/01/ws2003istest1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>リームバブルメディアをどうやって簡単に出し入れするのかとか、<br />
一度挿入されたメディアは不測の再起動でも永続的に使えるようにするとか、<br />
考慮することが多すぎて(略)<br />
この機能をなんとする為に複数動かせるように改造してたり(笑)<br />
Hyper-VでのVM用のシステムディスク領域には20081225パッチ版でのMCS接続で安定して動いています。<br />
上記画像の2003自体もこのiSCSIディスク上に容量可変で構築してあります。</p>
<p>今年も引き続きiSCSIとZFSを中心に活動していけたらと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/25版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/207</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/207#comments</comments>
		<pubDate>Thu, 25 Dec 2008 10:24:43 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[64bitLBA]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=207</guid>
		<description><![CDATA[機能UP更新＞MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/17版
今年最後のパッチリリースです。
ただいま将来の拡張に向けていろいろ準備中です。
ライトキャッシュの操作を揮発性（iscsi-targetを終了するまで）ですが
変更できるようになりました。
パッチファイル： iscsi-target-20081225-patch.bz2
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081225-patch.bz2 &#124; patch -p0
# make
# make install
新しいコマンドラインオプション：
-C 同一ターゲットへの接続コネクション数（デフォルト８）
-P 接続可能なポータルのIPアドレス（セミコロン区切り）
-A Discoveryセッションにも認証を強制する（デフォルトなし）
-a &#60;path&#62; 認証用データファイル（デフォルト /usr/local/etc/iscsi/auths）
-i &#60;path&#62; 作成するPIDファイル（デフォルト /var/run/iscsi-target.pid）
※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。
新しい機能：
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できます。
いまのところZFS以外のファイルシステムをサポートする予定はありません。
2TB以上はGPT(GUIDパーティションテーブル)を使えるOSが必要です。
認証ファイル及びPIDファイルを個別に指定し複数のポートで起動できます。
認証なしで探索(Discovery)セッションを通さないモードが選択できます。
MCS(Multiple Connections per Session)機能により複数コネクションで
同一のターゲットに接続可能になります。
ダイジェスト機能（CRC32によるデータチェック）を有効にできます。
データダイジェスト＝ディスクへの読み書きデータなどに有効。
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。
targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。
targetsファイル内のflagsカラムにターゲット接続（ログイン）時の
認証とダイジェストを強制するフラグを指定できます。
auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。
targetsファイル内のsizeカラムにペタバイト、エクサバイト、ゼタバイトの
短縮形としてP, E, Zが利用できます。
それぞれ、PB=1024TB, EB=1024PB, ZB=1024EBとして計算されます。
targetsファイル内でクォート文字(&#8220;と&#8217;)により空白文字を
文字列の一部として扱えます。
認証情報は/usr/local/etc/iscsi/authsに書きます。
Microsoft iSCSI Initiator が相手の場合はシークレットを
12文字以上16文字以下で指定します。
相互認証を有効にできます。
認証情報は/usr/local/etc/iscsi/authsに書きます。
相互認証キー（ユーザ名）はターゲットのIQNになります。
IPv6のリンクローカルアドレスでの接続を考慮します。
いわゆる仕様：
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
デバイスの最大容量(LBA)が符号付64ビット(2^63=8EB)に制限されています。
主な修正点：
SCSIのライトキャッシュを切られたらO_FSYNCを設定するように修正しました。
シグナル処理用スレッドを新設しました。（処理は未実装）
SIGTERM/SIGINTに対してシャットダウン処理を行うように修正しました。
～参考設定～
ターゲットにはしばらくブログに書いてきたExpress5800/110Geに
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
（参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、
IPv6に2001:380:e00:42::/64をルータ広告で利用）
ターゲット側(FreeBSD 7.1)：
/etc/rc.conf
ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/242" target="_self">機能UP更新＞MCS/64bitLBA/仮想DVD/仮想テープパッチ 2009/1/17版</a></p>
<p>今年最後のパッチリリースです。<br />
ただいま将来の拡張に向けていろいろ準備中です。<br />
ライトキャッシュの操作を揮発性（iscsi-targetを終了するまで）ですが<br />
変更できるようになりました。</p>
<p>パッチファイル： <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/iscsi-target-20081225-patch.bz2" target="_blank">iscsi-target-20081225-patch.bz2</a></p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081225-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>新しいコマンドラインオプション：<br />
-C 同一ターゲットへの接続コネクション数（デフォルト８）<br />
-P 接続可能なポータルのIPアドレス（セミコロン区切り）<br />
-A Discoveryセッションにも認証を強制する（デフォルトなし）<br />
-a &lt;path&gt; 認証用データファイル（デフォルト /usr/local/etc/iscsi/auths）<br />
-i &lt;path&gt; 作成するPIDファイル（デフォルト /var/run/iscsi-target.pid）</p>
<p>※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。</p>
<p>新しい機能：<br />
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できます。<br />
いまのところZFS以外のファイルシステムをサポートする予定はありません。<br />
2TB以上はGPT(GUIDパーティションテーブル)を使えるOSが必要です。</p>
<p>認証ファイル及びPIDファイルを個別に指定し複数のポートで起動できます。</p>
<p>認証なしで探索(Discovery)セッションを通さないモードが選択できます。</p>
<p>MCS(Multiple Connections per Session)機能により複数コネクションで<br />
同一のターゲットに接続可能になります。</p>
<p>ダイジェスト機能（CRC32によるデータチェック）を有効にできます。<br />
データダイジェスト＝ディスクへの読み書きデータなどに有効。<br />
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。</p>
<p>targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。<br />
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。</p>
<p>targetsファイル内のflagsカラムにターゲット接続（ログイン）時の<br />
認証とダイジェストを強制するフラグを指定できます。</p>
<pre>auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。</pre>
<p>targetsファイル内のsizeカラムにペタバイト、エクサバイト、ゼタバイトの<br />
短縮形としてP, E, Zが利用できます。<br />
それぞれ、PB=1024TB, EB=1024PB, ZB=1024EBとして計算されます。</p>
<p>targetsファイル内でクォート文字(&#8220;と&#8217;)により空白文字を<br />
文字列の一部として扱えます。</p>
<p>認証情報は/usr/local/etc/iscsi/authsに書きます。<br />
Microsoft iSCSI Initiator が相手の場合はシークレットを<br />
12文字以上16文字以下で指定します。</p>
<p>相互認証を有効にできます。<br />
認証情報は/usr/local/etc/iscsi/authsに書きます。<br />
相互認証キー（ユーザ名）はターゲットのIQNになります。</p>
<p>IPv6のリンクローカルアドレスでの接続を考慮します。</p>
<p>いわゆる仕様：<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。<br />
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。<br />
デバイスの最大容量(LBA)が符号付64ビット(2^63=8EB)に制限されています。</p>
<p>主な修正点：<br />
SCSIのライトキャッシュを切られたらO_FSYNCを設定するように修正しました。<br />
シグナル処理用スレッドを新設しました。（処理は未実装）<br />
SIGTERM/SIGINTに対してシャットダウン処理を行うように修正しました。</p>
<p>～参考設定～<br />
ターゲットにはしばらくブログに書いてきた<a href="http://www.express.nec.co.jp/pcserver/products/g/110ge/" target="_blank">Express5800/110Ge</a>に<br />
<a href="http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm" target="_blank">Intel PRO 1000/PT Desktop Adapter</a> を増設して利用しました。<br />
ホストはWindows Server 2008に同型カードを挿しました。<br />
それぞれのカードのIPアドレスを別のネットワークにして、<br />
スイッチングハブをそれぞれに独立して接続します。<br />
（参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、<br />
IPv6に2001:380:e00:42::/64をルータ広告で利用）</p>
<p>ターゲット側(FreeBSD 7.1)：<br />
/etc/rc.conf</p>
<pre id="ex"><code>ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"</code></pre>
<p>/usr/local/etc/iscsi/targets</p>
<pre id="ex"><code># extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
extent2         /tank/iscsi/iscsi-target2       0       80GB
# target        flags           storage         netmask
target0         rw,auth         extent0         192.168.2.0/24
target1         rw,digest       extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128
target2         rw,auth,headerdigest extent2    192.168.2.0/24;129.168.3.0/24</code></pre>
<p>/usr/local/etc/iscsi/auths</p>
<pre id="ex"><code># CHAP secret
# name:type:secret
iqn.1991-05.com.microsoft\:ceres:CHAP:1234567890123456
#</code></pre>
<p>ホスト側(Windows Server 2008)：<br />
オンボードLANに192.168.2.33/24を、<br />
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。<br />
ここではIPv4による画像のみ掲載しますがIPv6でも同様に接続できます。</p>
<p>ターゲットへログオンするときに[詳細設定]でローカルアダプタ、ソースIP、<br />
ターゲットポータルを指定します。</p>
<p> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-156" title="iscsi1" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>必要に応じてダイジェストにチェックを付けて有効にします。<br />
（指定しなくてもターゲット側で強制していれば自動的に有効になります）</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi2.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-157" title="iscsi2" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>接続に認証が必要な場合は指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi3.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-158" title="iscsi3" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi3-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>相互認証が必要な場合は、予め双方に設定した上で指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi11.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-208" title="iscsi11" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi11-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>接続できたら、[詳細]でターゲットのプロパティを開きます。<br />
セッションタブの[接続]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi4.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-159" title="iscsi4" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>[追加]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi5.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-160" title="iscsi5" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi5-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>ソースIP、ターゲットポータルを別のものを指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi6.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-161" title="iscsi6" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi6-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>必要に応じてダイジェストおよび認証を指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi7.jpg" target="_blank"></a><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi12.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-209" title="iscsi12" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi12-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>負荷分散ポリシーを適当に変更します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi8.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-163" title="iscsi8" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi8-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>～相互認証の参考設定～<br />
相互認証を実施するにはイニシエータにシークレットを設定して、<br />
その設定をターゲット側にも設定します。<br />
（通常のCHAPシークレットの設定も必要です）<br />
認証ファイルの検索キー（ユーザ名）はターゲットのIQN（iSCSI Qualified Name）に固定されています。</p>
<p>ターゲット側(FreeBSD 7.1)：<br />
相互認証データは通常の認証ファイルと同じになっていますので、<br />
追加して書きます。</p>
<p>/usr/local/etc/iscsi/auths</p>
<pre id="ex"><code># mutual authentication
# name:type:secret
iqn.1994-04.org.netbsd.iscsi-target\:target1:CHAP:testchaptest1234
#</code></pre>
<p>イニシエータ側(Windows Server 2008)：<br />
iSCSIイニシエータのプロパティで全般タブの[シークレット]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi9.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-170" title="iscsi9" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi9-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>12文字以上16文字以下でシークレットを設定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi10.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-171" title="iscsi10" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi10-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>～2TB以上の容量～<br />
Windows Server 2003以降またはWindows Vistaが必要です。<br />
Windows 2000やWindows XPで利用する場合は2TB(2097152MB)未満にします。</p>
<p>大容量ドライブの利用についてはこちらも参照してください。<br />
<a href="http://shell.peach.ne.jp/aoyama/archives/191" target="_blank">http://shell.peach.ne.jp/aoyama/archives/191</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/23版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/201</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/201#comments</comments>
		<pubDate>Tue, 23 Dec 2008 15:51:18 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[64bitLBA]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=201</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
iscsi-targetの内部構造もだいぶ理解できたので、
簡易同期機能を廃止してまともに追従するようにしてみました。
パッチファイル： iscsi-target-20081223-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081223-patch.bz2 &#124; patch -p0
# make
# make install
設定例は以前の投稿をどうぞ。
主な修正点：
メディアの境界チェックが甘かったのを修正しました。
ソースコードの切り分け定義名を変更しました。
従来のMCS簡易同期機能を廃止してより正確に追跡するようになりました。
再接続時にクラッシュする事があったのを修正しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>iscsi-targetの内部構造もだいぶ理解できたので、<br />
簡易同期機能を廃止してまともに追従するようにしてみました。</p>
<p><del datetime="2008-12-25T10:25:54+00:00">パッチファイル： iscsi-target-20081223-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081223-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/164" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>主な修正点：<br />
メディアの境界チェックが甘かったのを修正しました。<br />
ソースコードの切り分け定義名を変更しました。<br />
従来のMCS簡易同期機能を廃止してより正確に追跡するようになりました。<br />
再接続時にクラッシュする事があったのを修正しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/201/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIO/64bitLBAパッチ 2008/12/21版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/182</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/182#comments</comments>
		<pubDate>Sun, 21 Dec 2008 17:41:44 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[64bitLBA]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=182</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
IPv6のリンクローカルアドレスで接続した場合も処理できるようになりました。
複数のiscsi-targetを起動した場合でも使えるように、
認証ファイル及びPIDファイルを個別に指定できるようになりました。
認証なしで探索もできないモードをつけてみました。
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できるようになりました。
（FreeBSD7.1/i386においては符号付64ビット処理の関係で実質8EBが限界）
いまのところZFS以外のファイルシステムをサポートする予定はありません。
ゼタバイト～ヨタバイトのファイルが問題なく作れるようになったら考えるかも？
Windowsで2TB以上のデバイスを利用する場合はGPTが必要になるので、
Windows Server 2003以降またはWindows Vistaが必要です。
2TB以上でブートするには64ビット版 Windows Server 2008または
64ビット版 Windows Vistaが必須ですが未確認です。
Windows 2000やWindows XPで利用する場合は2TB(2097152MB)
未満にします。
～参考URL～
MS WHDC：GPT ドライブを使用する
http://www.microsoft.com/japan/whdc/device/storage/GPT-on-x64.mspx
MS TechNet：GUID パーティション テーブル
http://technet.microsoft.com/ja-jp/library/cc773223.aspx
MS Support：1 ボリュームのサイズが 2 TB 以上のシステム パーティションから Windows Vista を起動できない
http://support.microsoft.com/kb/946557/ja
MS Support：Windows Server 2003、Windows XP、および Windows 2000 で Diskpart.exe を使用してデータ ボリュームを拡張する方法
http://support.microsoft.com/kb/325590/ja
2TB以上のデバイス利用時の注意点：
現時点のWindows Server 2008はGUI上の表示が2147483648MBに
制限されます。
これは2PB(=2048TB)に相当します。
2PB以上のデバイスはdiskpartコマンドラインユーティリティで動くようですが
未確認です。
パッチファイル： iscsi-target-20081221-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081221-patch.bz2 &#124; patch -p0
# make
# make install
設定例は以前の投稿をどうぞ。
新しいコマンドラインオプション：
-A Discoveryセッションにも認証を強制する（デフォルトなし）
-a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>IPv6のリンクローカルアドレスで接続した場合も処理できるようになりました。<br />
複数のiscsi-targetを起動した場合でも使えるように、<br />
認証ファイル及びPIDファイルを個別に指定できるようになりました。<br />
認証なしで探索もできないモードをつけてみました。<br />
64ビットLBAを用いて最大8ZB(2^64(16E)x512B)まで対応できるようになりました。<br />
（FreeBSD7.1/i386においては符号付64ビット処理の関係で実質8EBが限界）<br />
いまのところZFS以外のファイルシステムをサポートする予定はありません。<br />
ゼタバイト～ヨタバイトのファイルが問題なく作れるようになったら考えるかも？</p>
<p>Windowsで2TB以上のデバイスを利用する場合はGPTが必要になるので、<br />
Windows Server 2003以降またはWindows Vistaが必要です。<br />
2TB以上でブートするには64ビット版 Windows Server 2008または<br />
64ビット版 Windows Vistaが必須ですが未確認です。<br />
Windows 2000やWindows XPで利用する場合は2TB(2097152MB)<br />
未満にします。</p>
<p>～参考URL～<br />
MS WHDC：GPT ドライブを使用する<br />
<a href="http://www.microsoft.com/japan/whdc/device/storage/GPT-on-x64.mspx" target="_blank">http://www.microsoft.com/japan/whdc/device/storage/GPT-on-x64.mspx</a></p>
<p>MS TechNet：GUID パーティション テーブル<br />
<a href="http://technet.microsoft.com/ja-jp/library/cc773223.aspx" target="_blank">http://technet.microsoft.com/ja-jp/library/cc773223.aspx</a></p>
<p>MS Support：1 ボリュームのサイズが 2 TB 以上のシステム パーティションから Windows Vista を起動できない<br />
<a href="http://support.microsoft.com/kb/946557/ja" target="_blank">http://support.microsoft.com/kb/946557/ja</a></p>
<p>MS Support：Windows Server 2003、Windows XP、および Windows 2000 で Diskpart.exe を使用してデータ ボリュームを拡張する方法<br />
<a href="http://support.microsoft.com/kb/325590/ja" target="_blank">http://support.microsoft.com/kb/325590/ja</a></p>
<p>2TB以上のデバイス利用時の注意点：<br />
現時点のWindows Server 2008はGUI上の表示が2147483648MBに<br />
制限されます。<br />
これは2PB(=2048TB)に相当します。<br />
2PB以上のデバイスはdiskpartコマンドラインユーティリティで動くようですが<br />
未確認です。</p>
<p><del datetime="2008-12-25T10:29:34+00:00">パッチファイル： iscsi-target-20081221-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081221-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/164" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>新しいコマンドラインオプション：<br />
-A Discoveryセッションにも認証を強制する（デフォルトなし）<br />
-a &lt;path&gt; 認証用データファイル（デフォルト /usr/local/etc/iscsi/auths）<br />
-i &lt;path&gt; 作成するPIDファイル（デフォルト /var/run/iscsi-target.pid）</p>
<p>新しい機能：<br />
targetsファイル内のsizeカラムにペタバイト、エクサバイト、ゼタバイトの<br />
短縮形としてP, E, Zが利用できます。<br />
それぞれ、PB=1024TB, EB=1024PB, ZB=1024EBとして計算されます。</p>
<p>設定ファイルでクォート文字(&#8220;と&#8217;)により空白文字を文字列として扱えます。</p>
<p>リンクローカル設定例：<br />
実際に設定する場合はifconfigでアドレスを確認すること。<br />
/etc/rc.conf</p>
<pre id="ex"><code>ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;[fe80::290:ccff:fee9:48c9]'"
</code></pre>
<p>/usr/local/etc/iscsi/targets</p>
<pre id="ex"><code># extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
# target        flags           storage         netmask
target0         rw,digest       extent0         192.168.2.0/24;[fe80::%em0]/10
</code></pre>
<p>既知の問題：<br />
長時間ターゲットからの応答がないとWindowsがクラッシュすることがあります。</p>
<p>いわゆる仕様：<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。<br />
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。<br />
デバイスの最大容量(LBA)が符号付64ビット(2^63=8EB)に制限されています。</p>
<p>主な修正点：<br />
オリジナルのバグを修正しました。<br />
Discoveryセッションに認証を強制するオプションを追加しました。<br />
リセットが必要ない場所でリセットしていたので修正しました。<br />
リンクローカルアドレスを処理するように修正しました。<br />
認証ファイル及びPIDファイルを指定できるように修正しました。<br />
LOパラメータを維持できるように修正しました。<br />
LBA4294967040以降にアクセスできない問題を修正しました。<br />
SCSIコマンドのMODE SELECT(6)に応答するようにしました。<br />
SCSIコマンドのMODE SELECT(10),MODE SENSE(10)に応答するようにしました。<br />
SCSIコマンドのREAD CAPACITY(10)をLongLBAに対応しました。<br />
SCSIコマンドのREAD CAPACITY(16)に応答するようにしました。<br />
SCSIコマンドのSYNC CACHE(16)に応答するようにしました。<br />
SCSIコマンドのREAD(12),WRITE(12),WRITE VERIFY(12)に応答するようにしました。<br />
SCSIコマンドのREAD(16),WRITE(16),WRITE VERIFY(16)に応答するようにしました。<br />
ストレージ容量定義にZEPの単位を追加しました。<br />
コンフィグファイルでクォートを解釈するようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/182/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/18版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/172</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/172#comments</comments>
		<pubDate>Thu, 18 Dec 2008 16:32:34 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=172</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
通信エラー発生時の不具合を多々修正しました（汗）
相互認証に対応しました。
パッチファイル： iscsi-target-20081218-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081218-patch.bz2 &#124; patch -p0
# make
# make install
設定例は以前の投稿をどうぞ。
新しい機能：
ログイン時の相互認証を有効にできます。
認証情報は/usr/local/etc/iscsi/authsに書きます。
主な修正点：
リセットが発生した場合に当該スレッドを正常終了するように変更しました。
リセット時にセッションデータをクリアできない問題を修正しました。
エラー再接続時にマルチパスと誤認識する問題を修正しました。
エラー再接続時に旧コネクションを強制終了するように変更しました。
相互認証関係を追加しました。
～参考設定～
相互認証を実施するにはイニシエータにシークレットを設定して、
その設定をターゲット側にも設定します。
（通常のCHAPシークレットの設定も必要です）
現時点ではユーザ名はターゲットのIQN（iSCSI Qualified Name）に固定されています。
イニシエータ側(Windows Server 2008)：
iSCSIイニシエータのプロパティで全般タブの[シークレット]を押します。

12文字以上16文字以下でシークレットを設定します。

ターゲット側(FreeBSD 7.1)：
現時点では相互認証データは通常の認証ファイルと同じになっています。
/usr/local/etc/iscsi/auths
# name:type:secret
# mutual authentication
iqn.1994-04.org.netbsd.iscsi-target\:target1:CHAP:testchaptest1234
#
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>通信エラー発生時の不具合を多々修正しました（汗）<br />
相互認証に対応しました。</p>
<p><del datetime="2008-12-25T10:33:20+00:00">パッチファイル： iscsi-target-20081218-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081218-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/164" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>新しい機能：<br />
ログイン時の相互認証を有効にできます。<br />
認証情報は/usr/local/etc/iscsi/authsに書きます。</p>
<p>主な修正点：<br />
リセットが発生した場合に当該スレッドを正常終了するように変更しました。<br />
リセット時にセッションデータをクリアできない問題を修正しました。<br />
エラー再接続時にマルチパスと誤認識する問題を修正しました。<br />
エラー再接続時に旧コネクションを強制終了するように変更しました。<br />
相互認証関係を追加しました。</p>
<p>～参考設定～<br />
相互認証を実施するにはイニシエータにシークレットを設定して、<br />
その設定をターゲット側にも設定します。<br />
（通常のCHAPシークレットの設定も必要です）<br />
現時点ではユーザ名はターゲットのIQN（iSCSI Qualified Name）に固定されています。</p>
<p>イニシエータ側(Windows Server 2008)：<br />
iSCSIイニシエータのプロパティで全般タブの[シークレット]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi9.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-170" title="iscsi9" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi9-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>12文字以上16文字以下でシークレットを設定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi10.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-171" title="iscsi10" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi10-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>ターゲット側(FreeBSD 7.1)：<br />
現時点では相互認証データは通常の認証ファイルと同じになっています。</p>
<p>/usr/local/etc/iscsi/auths</p>
<pre id="ex"><code># name:type:secret
# mutual authentication
iqn.1994-04.org.netbsd.iscsi-target\:target1:CHAP:testchaptest1234
#</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/172/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/17版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/164</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/164#comments</comments>
		<pubDate>Wed, 17 Dec 2008 17:04:03 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=164</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
SCSIステータスを最終パケットで返すようになったので、
小さいサイズでのREAD処理が早くなってネットワーク的に優しくなったはず？
一部の挙動が時々おかしいのだけど、何やらmallocで確保した領域が
すべてゼロクリアされている事を期待しているのかもしれない。
全コードを精査するのは面倒なので、後ろ向きにゼロクリアしてみた。
ここで精査するぐらいなら書き直します（笑）
なんだか当初の予定とは別の方向にいってるような気が･･･（汗）
とりあえず、一ヶ月間の作業成果はこんな感じです。
パッチファイル： iscsi-target-20081217-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081217-patch.bz2 &#124; patch -p0
# make
# make install
新しいコマンドラインオプション：
-C 同一ターゲットへの接続コネクション数（デフォルト８）
-P 接続可能なポータルのIPアドレス（セミコロン区切り）
※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。
新しい機能：
targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。
targetsファイル内のflagsカラムにターゲット接続（ログイン）時の
認証とダイジェストを強制するフラグを指定できます。
auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。
認証情報は/usr/local/etc/iscsi/authsに書きます。
Microsoft iSCSI Initiator が相手の場合はシークレットを
12文字以上16文字以下で指定します。
ダイジェスト機能（CRC32によるデータチェック）を有効にできます。
データダイジェスト＝ディスクへの読み書きデータなどに有効。
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。
いわゆる仕様：
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
相互認証（mutual authentication）には対応していません。
主な修正点：
ビット演算を気休め的に変更してみました。
mallocで領域確保時に毎回ゼロクリアするように変更しました。
ターゲットログイン時に認証やダイジェストを強制するモードをつけました。
ターゲットログイン時にネットマスクに一致しないイニシエータは拒否するようになりました。
SCSIコマンドのModeSense(6)に少し応答するように変更しました。
Data-Inフェーズの最終PDUでSCSIコマンドステータスも返すように変更しました。
タスクコマンドを正しく処理できなかったのを修正しました。
デフォルトの同時接続数を８に変更しました。
～参考設定～
ターゲットにはしばらくブログに書いてきたExpress5800/110Geに
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
（参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、
IPv6に2001:380:e00:42::/64をルータ広告で利用）
ターゲット側(FreeBSD [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>SCSIステータスを最終パケットで返すようになったので、<br />
小さいサイズでのREAD処理が早くなってネットワーク的に優しくなったはず？<br />
一部の挙動が時々おかしいのだけど、何やらmallocで確保した領域が<br />
すべてゼロクリアされている事を期待しているのかもしれない。<br />
全コードを精査するのは面倒なので、後ろ向きにゼロクリアしてみた。<br />
ここで精査するぐらいなら書き直します（笑）<br />
なんだか当初の予定とは別の方向にいってるような気が･･･（汗）<br />
とりあえず、一ヶ月間の作業成果はこんな感じです。</p>
<p><del datetime="2008-12-25T10:35:33+00:00">パッチファイル： iscsi-target-20081217-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081217-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>新しいコマンドラインオプション：<br />
-C 同一ターゲットへの接続コネクション数（デフォルト８）<br />
-P 接続可能なポータルのIPアドレス（セミコロン区切り）</p>
<p>※IPv6で指定する場合は[]付きでIPv6アドレスを書きます。</p>
<p>新しい機能：<br />
targetsファイル内のネットマスクをセミコロン区切りで複数指定できます。<br />
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。</p>
<p>targetsファイル内のflagsカラムにターゲット接続（ログイン）時の<br />
認証とダイジェストを強制するフラグを指定できます。</p>
<pre>auth          認証を必要とします。
digest        データおよびヘッダダイジェストを必要とします。
headerdigest  ヘッダダイジェストを必要とします。
datadigest    データダイジェストを必要とします。</pre>
<p>認証情報は/usr/local/etc/iscsi/authsに書きます。<br />
Microsoft iSCSI Initiator が相手の場合はシークレットを<br />
12文字以上16文字以下で指定します。</p>
<p>ダイジェスト機能（CRC32によるデータチェック）を有効にできます。<br />
データダイジェスト＝ディスクへの読み書きデータなどに有効。<br />
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。</p>
<p>いわゆる仕様：<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。<br />
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。<br />
相互認証（mutual authentication）には対応していません。</p>
<p>主な修正点：<br />
ビット演算を気休め的に変更してみました。<br />
mallocで領域確保時に毎回ゼロクリアするように変更しました。<br />
ターゲットログイン時に認証やダイジェストを強制するモードをつけました。<br />
ターゲットログイン時にネットマスクに一致しないイニシエータは拒否するようになりました。<br />
SCSIコマンドのModeSense(6)に少し応答するように変更しました。<br />
Data-Inフェーズの最終PDUでSCSIコマンドステータスも返すように変更しました。<br />
タスクコマンドを正しく処理できなかったのを修正しました。<br />
デフォルトの同時接続数を８に変更しました。</p>
<p>～参考設定～<br />
ターゲットにはしばらくブログに書いてきた<a href="http://www.express.nec.co.jp/pcserver/products/g/110ge/" target="_blank">Express5800/110Ge</a>に<br />
<a href="http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm" target="_blank">Intel PRO 1000/PT Desktop Adapter </a>を増設して利用しました。<br />
ホストはWindows Server 2008に同型カードを挿しました。<br />
それぞれのカードのIPアドレスを別のネットワークにして、<br />
スイッチングハブをそれぞれに独立して接続します。<br />
（参考設定ではIPv4に192.168.2.0/24と192.168.3.0/24を、<br />
IPv6に2001:380:e00:42::/64をルータ広告で利用）</p>
<p>ターゲット側(FreeBSD 7.1)：<br />
/etc/rc.conf</p>
<pre id="ex"><code>ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"

ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 8 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"</code></pre>
<p>/usr/local/etc/iscsi/targets</p>
<pre id="ex"><code># extents       file                            start   length
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
extent2         /tank/iscsi/iscsi-target2       0       80GB
# target        flags           storage         netmask
target0         rw,auth         extent0         192.168.2.0/24
target1         rw,digest       extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128
target2         rw,auth,headerdigest extent2    192.168.2.0/24;129.168.3.0/24</code></pre>
<p>/usr/local/etc/iscsi/auths</p>
<pre id="ex"><code># name:type:secret
iqn.1991-05.com.microsoft\:ceres:CHAP:1234567890123456</code></pre>
<p>ホスト側(Windows Server 2008)：<br />
オンボードLANに192.168.2.33/24を、<br />
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。<br />
ここではIPv4による画像のみ掲載しますがIPv6でも同様に接続できます。</p>
<p>ターゲットへログオンするときに[詳細設定]でローカルアダプタ、ソースIP、<br />
ターゲットポータルを指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-156" title="iscsi1" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>必要に応じてダイジェストにチェックを付けて有効にします。<br />
（指定しなくてもターゲット側で強制していれば自動的に有効になります）</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi2.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-157" title="iscsi2" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>接続に認証が必要な場合は指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi3.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-158" title="iscsi3" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi3-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>接続できたら、[詳細]でターゲットのプロパティを開きます。<br />
セッションタブの[接続]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi4.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-159" title="iscsi4" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>[追加]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi5.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-160" title="iscsi5" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi5-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>ソースIP、ターゲットポータルを別のものを指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi6.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-161" title="iscsi6" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi6-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>必要に応じてダイジェストおよび認証を指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi7.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-162" title="iscsi7" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi7-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>負荷分散ポリシーを適当に変更します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi8.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-163" title="iscsi8" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/iscsi8-150x150.jpg" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/164/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD iscsi-target MCS/MPIOパッチ 2008/12/11版 for Microsoft iSCSI Initiator</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/154</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/154#comments</comments>
		<pubDate>Thu, 11 Dec 2008 15:35:17 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=154</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
探索ログインの時にデータダイジェストを使うとエラーになる事が
あったので修正しました。
ネットマスクをセミコロン区切りで複数IPに対応しました。
（オリジナルが対応していないIPv6についても暫定対応）
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。
パッチファイル： iscsi-target-20081211-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081211-patch.bz2 &#124; patch -p0
# make
# make install
/etc/rc.conf
ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"
/usr/local/etc/iscsi/targets
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
target0                 rw      extent0         192.168.2.0/24
target1                 rw      extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128
いわゆる仕様：
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
主な修正点：
テキストネゴシエーションのバッファ長が増加しました。
データダイジェストでテキスト文字列のパディングを考慮するように修正しました。
ネットマスクをセミコロン区切りで指定できるように修正しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>探索ログインの時にデータダイジェストを使うとエラーになる事が<br />
あったので修正しました。<br />
ネットマスクをセミコロン区切りで複数IPに対応しました。<br />
（オリジナルが対応していないIPv6についても暫定対応）<br />
ネットマスク指定で/以降を省略するとIPv4は/32、IPv6は/128とみなします。</p>
<p><del datetime="2008-12-25T10:37:43+00:00">パッチファイル： iscsi-target-20081211-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081211-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>/etc/rc.conf</p>
<pre id="ex"><code>ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"</code></pre>
<p>/usr/local/etc/iscsi/targets</p>
<pre id="ex"><code>extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
target0                 rw      extent0         192.168.2.0/24
target1                 rw      extent1         192.168.2.33;129.168.3.33/32;[2001:380:e00:42:a957:4bf:58e0:bedc]/128</code></pre>
<p>いわゆる仕様：<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。<br />
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。</p>
<p>主な修正点：<br />
テキストネゴシエーションのバッファ長が増加しました。<br />
データダイジェストでテキスト文字列のパディングを考慮するように修正しました。<br />
ネットマスクをセミコロン区切りで指定できるように修正しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/154/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MCS/MPIOパッチ修正 2008/12/05版</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/142</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/142#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:05:10 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=142</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
複数イニシエータから同時にアクセスがあった場合に
パフォーマンスが悪くなっていたので修正しました。
MCSとMPIOのどちらでも接続できるように修正してみました。
ただし、まだ実験的なのでデータ破壊されても自己責任でよろしく。
ついでに独自管理テーブルとダイジェスト機能を作ってみた。
スレッドとデバイスのロック時間を減らしてみた。
ポータルの指定方法が変更されたので/etc/rc.confの修正を忘れずに。
パッチファイル： iscsi-target-20081205-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081205-patch.bz2 &#124; patch -p0
# make
# make install
新規オプション：
-C 最大接続コネクション数（デフォルト４）
-P 接続可能なポータルのIPアドレス（セミコロン区切り）
設定例は以前の投稿をどうぞ。
IPv6でポータルを指定するには[]でIPv6アドレスを書きます。
Microsoft iSCSI InitiatorではソースアドレスにIPv6を指定して、
ここで指定したポータルを設定すればIPv6で接続できます。
/etc/rc.conf
ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"
ダイジェスト(CRC32によるデータチェック）を有効にするには、
ログイン時の詳細設定でチェックボックスに印を付けます。
データダイジェスト＝読み書きデータなどに有効。
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。

マルチパス（まだ実験的）にするには、
MPIOをあらかじめインストールしてログイン時に、
マルチパスを有効にチェックして詳細設定からIPを指定します。
マルチパスを使うときはダイジェストを両方使うことを推奨します。
マルチパスの設定を変更するには、
１．iSCSIイニシエータのプロパティからターゲットタブを選択する。
２．[詳細]ボタンでターゲットのプロパティを開く。
３．デバイスタブの詳細設定からデバイス詳細を開く。
４．MPIOタブを選択し、負荷分散ポリシーを変更します。

左側がマルチパス（２本接続）、両方のダイジェスト有効のとき。
右側が通常接続、両方のダイジェスト有効のとき。
 
既知の問題：
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。
（可能であればリトライ復帰ルーチンをいれるべき）
いわゆる仕様：
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
主な修正点：
独自管理テーブルを作成してスレッドを制御するようになった。
TSIHが消えることがあったのを修正しました。
SCSIコマンドのロック範囲を当該スレッドのみに制限しました。
データダイジェスト及びヘッダダイジェストに対応しました。
ポータルの区切り文字がカンマからセミコロンに変更されました。
書込みストリームが異常な場合にはエラー戻りに変更されました。
マルチパスの状態でもできるだけ動くように修正しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>複数イニシエータから同時にアクセスがあった場合に<br />
パフォーマンスが悪くなっていたので修正しました。<br />
MCSとMPIOのどちらでも接続できるように修正してみました。<br />
ただし、まだ実験的なのでデータ破壊されても自己責任でよろしく。<br />
ついでに独自管理テーブルとダイジェスト機能を作ってみた。<br />
スレッドとデバイスのロック時間を減らしてみた。<br />
ポータルの指定方法が変更されたので/etc/rc.confの修正を忘れずに。</p>
<p><del datetime="2008-12-25T10:40:20+00:00">パッチファイル： iscsi-target-20081205-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081205-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>新規オプション：<br />
-C 最大接続コネクション数（デフォルト４）<br />
-P 接続可能なポータルのIPアドレス（セミコロン区切り）</p>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/65" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>IPv6でポータルを指定するには[]でIPv6アドレスを書きます。<br />
Microsoft iSCSI InitiatorではソースアドレスにIPv6を指定して、<br />
ここで指定したポータルを設定すればIPv6で接続できます。</p>
<p>/etc/rc.conf</p>
<pre id="ex"><code>ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P '192.168.2.36;192.168.3.36;[2001:380:e00:42:21f:d0ff:fe16:38bd]'"</code></pre>
<p>ダイジェスト(CRC32によるデータチェック）を有効にするには、<br />
ログイン時の詳細設定でチェックボックスに印を付けます。<br />
データダイジェスト＝読み書きデータなどに有効。<br />
ヘッダダイジェスト＝iSCSIプロトコルヘッダに有効。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/digest00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-140" title="digest00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/digest00-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>マルチパス（まだ実験的）にするには、<br />
MPIOをあらかじめインストールしてログイン時に、<br />
マルチパスを有効にチェックして詳細設定からIPを指定します。<br />
マルチパスを使うときはダイジェストを両方使うことを推奨します。<br />
マルチパスの設定を変更するには、<br />
１．iSCSIイニシエータのプロパティからターゲットタブを選択する。<br />
２．[詳細]ボタンでターゲットのプロパティを開く。<br />
３．デバイスタブの詳細設定からデバイス詳細を開く。<br />
４．MPIOタブを選択し、負荷分散ポリシーを変更します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/mpio00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-141" title="mpio00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/mpio00-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>左側がマルチパス（２本接続）、両方のダイジェスト有効のとき。<br />
右側が通常接続、両方のダイジェスト有効のとき。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/mphd00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-149" title="mphd00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/mphd00-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/sphd00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-151" title="sphd00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/sphd00-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>既知の問題：<br />
ダイジェストエラーになった場合にTCP接続の強制終了を第一選択肢にする。<br />
（可能であればリトライ復帰ルーチンをいれるべき）</p>
<p>いわゆる仕様：<br />
ネットマスクはまだ対応していないので0/0が必要です。<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。</p>
<p>主な修正点：<br />
独自管理テーブルを作成してスレッドを制御するようになった。<br />
TSIHが消えることがあったのを修正しました。<br />
SCSIコマンドのロック範囲を当該スレッドのみに制限しました。<br />
データダイジェスト及びヘッダダイジェストに対応しました。<br />
ポータルの区切り文字がカンマからセミコロンに変更されました。<br />
書込みストリームが異常な場合にはエラー戻りに変更されました。<br />
マルチパスの状態でもできるだけ動くように修正しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/142/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MCSパッチ修正 2008/12/02版</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/134</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/134#comments</comments>
		<pubDate>Tue, 02 Dec 2008 17:05:50 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=134</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
またしても問題が。
TSIH (Target Session Identifying Handle)が消えてしまうけど、
マルチセッション＞マルチコネクションとかにしなければ大丈夫そう。
そもそもターゲットを１スレッドが全部握っているiscsi-targetのままではどうにも・・・。
根本的にはI/O系を全部書き直すしかないのかな。
パッチファイル： iscsi-target-20081202-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081202-patch.bz2 &#124; patch -p0
# make
# make install
新規オプション：
-C 最大接続コネクション数（デフォルト４）
-P 接続可能なポータルのIPアドレス（カンマ区切り）
設定例は以前の投稿をどうぞ。
IPv6で指定するには[]でIPv6アドレスを書きます。
Microsoft iSCSI Initiator ではソースアドレスにIPv6を指定して、
ここで指定したポータルを設定すればIPv6で接続できます。
ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.3.36,[2001:380:e00:42:21f:d0ff:fe16:38bd]"
 
既知の問題：
マルチセッションで一つでもログアウトするとTSIHが消えてしまう。
いわゆる仕様：
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
主な修正点：
マルチセッションが張られた場合などに各スレッドからSCSIコマンドが
ぶつからないようにミューテックスをいれました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>またしても問題が。<br />
TSIH (Target Session Identifying Handle)が消えてしまうけど、<br />
マルチセッション＞マルチコネクションとかにしなければ大丈夫そう。<br />
そもそもターゲットを１スレッドが全部握っているiscsi-targetのままではどうにも・・・。<br />
根本的にはI/O系を全部書き直すしかないのかな。</p>
<p><del datetime="2008-12-25T10:42:09+00:00">パッチファイル： iscsi-target-20081202-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081202-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>新規オプション：<br />
-C 最大接続コネクション数（デフォルト４）<br />
-P 接続可能なポータルのIPアドレス（カンマ区切り）</p>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/65" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>IPv6で指定するには[]でIPv6アドレスを書きます。<br />
Microsoft iSCSI Initiator ではソースアドレスにIPv6を指定して、<br />
ここで指定したポータルを設定すればIPv6で接続できます。</p>
<pre id="ex"><code>ipv6_enable="YES"
iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.3.36,[2001:380:e00:42:21f:d0ff:fe16:38bd]"</code></pre>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/ipv6-01.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-135" title="ipv6-01" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/ipv6-01-150x150.jpg" alt="" width="150" height="150" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/ipv6-02.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-136" title="ipv6-02" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/12/ipv6-02-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>既知の問題：<br />
マルチセッションで一つでもログアウトするとTSIHが消えてしまう。</p>
<p>いわゆる仕様：<br />
ネットマスクはまだ対応していないので0/0が必要です。<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。</p>
<p>主な修正点：<br />
マルチセッションが張られた場合などに各スレッドからSCSIコマンドが<br />
ぶつからないようにミューテックスをいれました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/134/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MCSパッチ修正 2008/11/30版</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/131</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/131#comments</comments>
		<pubDate>Sun, 30 Nov 2008 15:38:38 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=131</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
やっぱりバグバグだった。
パッチファイル： iscsi-target-20081130-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081130-patch.bz2 &#124; patch -p0
# make
# make install
新規オプション：
-C 最大接続コネクション数（デフォルト４）
-P 接続可能なポータルのIPアドレス（カンマ区切り）
設定例は以前の投稿をどうぞ。
いわゆる仕様：
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
主な修正点：
オリジナルのバグを修正しました。
セッション中の１コネクションが再接続した場合も接続を許可するようになりました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>やっぱりバグバグだった。</p>
<p><del datetime="2008-12-25T10:43:20+00:00">パッチファイル： iscsi-target-20081130-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081130-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>新規オプション：<br />
-C 最大接続コネクション数（デフォルト４）<br />
-P 接続可能なポータルのIPアドレス（カンマ区切り）</p>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/65" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>いわゆる仕様：<br />
ネットマスクはまだ対応していないので0/0が必要です。<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。</p>
<p>主な修正点：<br />
オリジナルのバグを修正しました。<br />
セッション中の１コネクションが再接続した場合も接続を許可するようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/131/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD 7.1 + Microsoft iSCSI Initiator / MCSパッチの新しいの</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/123</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/123#comments</comments>
		<pubDate>Sat, 29 Nov 2008 16:54:50 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=123</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
いつもエラーが出て気になっていたので修正しました(汗)
パッチファイル： iscsi-target-20081129-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &#60; /path/to/iscsi-target-20081129-patch.bz2 &#124; patch -p0
# make
# make install
-C 最大接続コネクション数（デフォルト４）
-P 接続可能なポータルのIPアドレス（カンマ区切り）
設定例は以前の投稿をどうぞ。
いわゆる仕様：
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
主な修正点：
正常ログアウト及びフェールオーバー時にシーケンス番号が
上書きされないようになりました。
再接続した場合に旧スレッドを破棄するようになりました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>いつもエラーが出て気になっていたので修正しました(汗)</p>
<p><del datetime="2008-12-25T10:44:33+00:00">パッチファイル： iscsi-target-20081129-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex" style="font-size:0.9em"><code># cd /usr/ports/net/iscsi-target
# make clean
# make patch
# bzcat &lt; /path/to/iscsi-target-20081129-patch.bz2 | patch -p0
# make
# make install</code></pre>
<p>-C 最大接続コネクション数（デフォルト４）<br />
-P 接続可能なポータルのIPアドレス（カンマ区切り）</p>
<p>設定例は<a href="http://shell.peach.ne.jp/aoyama/archives/65" target="_blank">以前の投稿</a>をどうぞ。</p>
<p>いわゆる仕様：<br />
ネットマスクはまだ対応していないので0/0が必要です。<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。</p>
<p>主な修正点：<br />
正常ログアウト及びフェールオーバー時にシーケンス番号が<br />
上書きされないようになりました。<br />
再接続した場合に旧スレッドを破棄するようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/123/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NEC Express5800/110Ge にCore 2 Quad Q6600(G0)を載せてみる</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/91</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/91#comments</comments>
		<pubDate>Thu, 20 Nov 2008 12:27:15 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=91</guid>
		<description><![CDATA[以前書いた予定通りCPUを載せ替えしてみました。
ついでにシャドウベイに9cmFANを追加しました。
Intel Core 2 Quad Q6600(G0ステップ)
65nm/TDP95W/FSB1066MHz/2.4GHz/キャッシュ8MB/4コア
KAMA-FLEX9cm SA0925FDB12M (2000rpm)
Core2Quad Q6600搭載後の消費電力は、
電源投入直後＝＞最大256W
FreeBSD loginプロンプト＝＞134W
ZFS上でddを1個起動＝＞186W
ZFS上でbzip2圧縮を4個起動＝＞198W
Core2Quad Q6600にしたらkvmが足りなくなりました(汗)
とりあえずシングルモードでkmem_sizeを下げて起動、
カーネルコンフィグを以下のように修正しました。
もし起動しなくなったらブートローダから手動で設定するか、
シングルモードで変更します。
↓のKVAは2KB/ページです。
Kernel CONFIG
include PAE
options KVA_PAGES=1152
nomakeoptions   NO_MODULES
makeoptions     MODULES_OVERRIDE="opensolaris zfs"
device          iscsi_initiator
/boot/loader.conf
vm.kmem_size_max="1536M"
vm.kmem_size="1536M"
vfs.zfs.arc_max="512M"
vfs.zfs.vdev.cache.size="20M"
フリーメモリの確認
# sysctl -a &#124; grep kvm
vm.kvm_free: 253751296
vm.kvm_size: 2415915008
さっそくportsにあるbenchmarks/unixbenchを使って確認してみました。
オリジナルのExpress5800/110GeとCPU換装後の110Geと
参考にPentium4/2.2GHzで過去にとったデータです。
換装後にかけたZFS上でのdd結果もあわせて置いておきます。
見ての通りCore2ベースのCeleronならPentium4など余裕で勝てます。
マルチコアであきらかに向上してるのがわかるのが「Shell Scripts (8 concurrent)」（8プロセス並列実行）逆に下げたのが「Pipe-based Context Switching」ですね。
Q6600/ZFS raidz2(used 242GB) 書込 164.6MB/s 読込 326.6MB/s
RAID5/6の処理は重いですから、そういうのが必要ならCPU換装は有意義でしょう。
ハードウェアRAIDやソフトウェアミラーリングならCeleronでも十分使えると思う。
少なくともNetBurstのPentium4/DやCeleron300番台のマシンを置き替えるにはCPU換装前でも十分なスペックです。（消費電力的にも）
どうしてもシングルコアが気になるなら、
Pentium Dual-Core E2180 (2GHz/FSB800MHz/キャッシュ1MB/2コア)
Celeron Dual-Core E1400 (2GHz/FSB800MHz/キャッシュ512KB/2コア)
あたりを流用すれば安上がりにできると思う。
もちろんCPUを新規に買えるなら、
Pentium Dual-Core E5200(45nm/2.5GHz/FSB800MHz/キャッシュ2MB/2コア)
で決まりでしょうけど。
FreeBSD 7.1 Celeron 430 1.8GHz(FSB800MHz)
                     INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX

Dhrystone 2 using register [...]]]></description>
			<content:encoded><![CDATA[<p>以前書いた予定通りCPUを載せ替えしてみました。<br />
ついでにシャドウベイに9cmFANを追加しました。</p>
<p><a href="http://processorfinder.intel.com/details.aspx?sSpec=SLACR" target="_blank">Intel Core 2 Quad Q6600(G0ステップ)<br />
65nm/TDP95W/FSB1066MHz/2.4GHz/キャッシュ8MB/4コア</a></p>
<p><a href="http://www.scythe.co.jp/cooler/20050202-125656.html" target="_blank">KAMA-FLEX9cm SA0925FDB12M (2000rpm)</a></p>
<p>Core2Quad Q6600搭載後の消費電力は、<br />
電源投入直後＝＞最大256W<br />
FreeBSD loginプロンプト＝＞134W<br />
ZFS上でddを1個起動＝＞186W<br />
ZFS上でbzip2圧縮を4個起動＝＞198W</p>
<p>Core2Quad Q6600にしたらkvmが足りなくなりました(汗)<br />
とりあえずシングルモードでkmem_sizeを下げて起動、<br />
カーネルコンフィグを以下のように修正しました。<br />
もし起動しなくなったらブートローダから手動で設定するか、<br />
シングルモードで変更します。<br />
↓のKVAは2KB/ページです。</p>
<p>Kernel CONFIG</p>
<pre id="ex">include PAE
options KVA_PAGES=1152
nomakeoptions   NO_MODULES
makeoptions     MODULES_OVERRIDE="opensolaris zfs"
device          iscsi_initiator</pre>
<p>/boot/loader.conf</p>
<pre id="ex">vm.kmem_size_max="1536M"
vm.kmem_size="1536M"
vfs.zfs.arc_max="512M"
vfs.zfs.vdev.cache.size="20M"</pre>
<p>フリーメモリの確認</p>
<pre id="ex"># sysctl -a | grep kvm
vm.kvm_free: 253751296
vm.kvm_size: 2415915008</pre>
<p>さっそくportsにあるbenchmarks/unixbenchを使って確認してみました。<br />
オリジナルのExpress5800/110GeとCPU換装後の110Geと<br />
参考にPentium4/2.2GHzで過去にとったデータです。<br />
換装後にかけたZFS上でのdd結果もあわせて置いておきます。</p>
<p>見ての通りCore2ベースのCeleronならPentium4など余裕で勝てます。<br />
マルチコアであきらかに向上してるのがわかるのが「Shell Scripts (8 concurrent)」（8プロセス並列実行）逆に下げたのが「Pipe-based Context Switching」ですね。</p>
<p>Q6600/ZFS raidz2(used 242GB) 書込 164.6MB/s 読込 326.6MB/s</p>
<p>RAID5/6の処理は重いですから、そういうのが必要ならCPU換装は有意義でしょう。<br />
ハードウェアRAIDやソフトウェアミラーリングならCeleronでも十分使えると思う。<br />
少なくともNetBurstのPentium4/DやCeleron300番台のマシンを置き替えるにはCPU換装前でも十分なスペックです。（消費電力的にも）<br />
どうしてもシングルコアが気になるなら、<br />
Pentium Dual-Core E2180 (2GHz/FSB800MHz/キャッシュ1MB/2コア)<br />
Celeron Dual-Core E1400 (2GHz/FSB800MHz/キャッシュ512KB/2コア)<br />
あたりを流用すれば安上がりにできると思う。<br />
もちろんCPUを新規に買えるなら、<br />
Pentium Dual-Core E5200(45nm/2.5GHz/FSB800MHz/キャッシュ2MB/2コア)<br />
で決まりでしょうけど。</p>
<p>FreeBSD 7.1 Celeron 430 1.8GHz(FSB800MHz)</p>
<pre id="ex" style="font-size:0.8em">                     INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX

Dhrystone 2 using register variables        116700.0  7486225.1      641.5
Double-Precision Whetstone                      55.0     1393.2      253.3
Execl Throughput                                43.0     1475.9      343.2
File Copy 1024 bufsize 2000 maxblocks         3960.0    40582.0      102.5
File Copy 256 bufsize 500 maxblocks           1655.0    10889.0       65.8
File Copy 4096 bufsize 8000 maxblocks         5800.0   135959.0      234.4
Pipe Throughput                              12440.0   553194.4      444.7
Pipe-based Context Switching                  4000.0   163170.9      407.9
Process Creation                               126.0     5515.3      437.7
Shell Scripts (8 concurrent)                     6.0      319.0      531.7
System Call Overhead                         15000.0   393876.6      262.6
                                                                 =========
     FINAL SCORE                                                     284.2</pre>
<p>FreeBSD 7.1 C2Q Q6600 2.4GHz(FSB1066MHz)</p>
<pre id="ex" style="font-size:0.8em">                     INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX

Dhrystone 2 using register variables        116700.0 10259315.6      879.1
Double-Precision Whetstone                      55.0     1884.9      342.7
Execl Throughput                                43.0     2296.9      534.2
File Copy 1024 bufsize 2000 maxblocks         3960.0    62334.0      157.4
File Copy 256 bufsize 500 maxblocks           1655.0    16523.0       99.8
File Copy 4096 bufsize 8000 maxblocks         5800.0   214088.0      369.1
Pipe Throughput                              12440.0   773740.0      622.0
Pipe-based Context Switching                  4000.0   129334.0      323.3
Process Creation                               126.0     5957.7      472.8
Shell Scripts (8 concurrent)                     6.0     1176.1     1960.2
System Call Overhead                         15000.0   539478.0      359.7
                                                                 =========
     FINAL SCORE                                                     414.8</pre>
<p>FreeBSD 7.0 Pentium4 2.2GHz(FSB400MHz)</p>
<pre id="ex" style="font-size:0.8em">                     INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX

Dhrystone 2 using register variables        116700.0  3613977.9      309.7
Double-Precision Whetstone                      55.0      808.0      146.9
Execl Throughput                                43.0      241.2       56.1
File Copy 1024 bufsize 2000 maxblocks         3960.0    20026.0       50.6
File Copy 256 bufsize 500 maxblocks           1655.0     5179.0       31.3
File Copy 4096 bufsize 8000 maxblocks         5800.0    63677.0      109.8
Pipe Throughput                              12440.0   257737.5      207.2
Pipe-based Context Switching                  4000.0    80782.8      202.0
Process Creation                               126.0     3264.5      259.1
Shell Scripts (8 concurrent)                     6.0       99.0      165.0
System Call Overhead                         15000.0   189032.5      126.0
                                                                 =========
     FINAL SCORE                                                     123.3</pre>
<pre id="ex" style="font-size:0.9em"># dd if=/dev/zero of=image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 24.878161 secs (172640062 bytes/sec)
# dd of=/dev/null if=image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 12.542709 secs (342427409 bytes/sec)</pre>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD 7.1 + Microsoft iSCSI Initiator / Multiple Connections per Session（MCS）</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/65</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/65#comments</comments>
		<pubDate>Wed, 19 Nov 2008 12:35:32 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=65</guid>
		<description><![CDATA[更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版
Microsoft iSCSI Initiator Users Guide によると
現バージョンでサポートしている冗長化は
Multiple Connections per Session（MCS）
Microsoft MPIO support
だそうな。
iscsi-targetは１コネクション（TCP）を１スレッド、
当該セッションパラメータをスレッドに埋め込みで管理しています。
もし複数スレッド間でパラメータを共有できればMCSが容易になります。
でもそこまで作りこむのはかなり時間がかかりそうなので、
動作確認の意味も込めて、スレッド内のSCSIコマンド処理前に
各スレッドから必要なシーケンス番号をコピーするという
なんちゃって同期機能をつけて対応(笑)
この動作の前提として複数スレッドが同時に同じシーケンス番号を
更新しないとすごく期待しています。
一般化するなら送受信スレッドとパケット処理スレッドを作って、
FIFOキューでつなぐのがいいと思ってるけどどうでしょ。
用意するもの：
LANを２ポート以上装備したマシン２台
スイッチングハブ２台
iscsi-targetのパッチファイル iscsi-target-20081118-patch.bz2
更新版をご利用ください。
# cd /usr/ports/net/iscsi-target
# make patch
# bzcat &#60; iscsi-target-20081118-patch.bz2 &#124; patch -p0
# make
# make install

-C 最大接続コネクション数（デフォルト４）
-P 接続可能なポータルのIPアドレス（カンマ区切り）
いわゆる仕様：
ネットマスクはまだ対応していないので0/0が必要です。
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。
最初に接続したコネクションが壊れるとおかしくなります。
～参考設定～
ターゲットにはしばらくブログに書いてきたExpress5800/110Geに
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。
http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm
ホストはWindows Server 2008に同型カードを挿しました。
それぞれのカードのIPアドレスを別のネットワークにして、
スイッチングハブをそれぞれに独立して接続します。
（参考設定では192.168.2.0/24と192.168.3.0/24を利用）
ターゲット側(FreeBSD7.1)：
/etc/rc.conf
ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em0_alias0="inet 192.168.3.37  netmask 255.255.255.255"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"
ifconfig_em1_alias0="inet 192.168.2.37  netmask 255.255.255.255"

iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.2.36,192.168.3.36,192.168.2.37,192.168.3.37"

/usr/local/etc/iscsi/targets
extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/207" target="_self">更新＞MCS/MPIO/64bitLBAパッチ 2008/12/25版</a></p>
<p>Microsoft iSCSI Initiator Users Guide によると<br />
現バージョンでサポートしている冗長化は<br />
Multiple Connections per Session（MCS）<br />
Microsoft MPIO support<br />
だそうな。</p>
<p>iscsi-targetは１コネクション（TCP）を１スレッド、<br />
当該セッションパラメータをスレッドに埋め込みで管理しています。<br />
もし複数スレッド間でパラメータを共有できればMCSが容易になります。<br />
でもそこまで作りこむのはかなり時間がかかりそうなので、<br />
動作確認の意味も込めて、スレッド内のSCSIコマンド処理前に<br />
各スレッドから必要なシーケンス番号をコピーするという<br />
なんちゃって同期機能をつけて対応(笑)<br />
この動作の前提として複数スレッドが同時に同じシーケンス番号を<br />
更新しないとすごく期待しています。<br />
一般化するなら送受信スレッドとパケット処理スレッドを作って、<br />
FIFOキューでつなぐのがいいと思ってるけどどうでしょ。</p>
<p>用意するもの：<br />
LANを２ポート以上装備したマシン２台<br />
スイッチングハブ２台<br />
<del datetime="2008-12-25T10:46:05+00:00">iscsi-targetのパッチファイル iscsi-target-20081118-patch.bz2</del><br />
更新版をご利用ください。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target
# make patch
# bzcat &lt; iscsi-target-20081118-patch.bz2 | patch -p0
# make
# make install
</code></pre>
<p>-C 最大接続コネクション数（デフォルト４）<br />
-P 接続可能なポータルのIPアドレス（カンマ区切り）</p>
<p>いわゆる仕様：<br />
ネットマスクはまだ対応していないので0/0が必要です。<br />
全てのIPアドレスが同じポート番号でグループ１のネットワークポータルになります。<br />
ポート番号は従来の-pオプションで変更可能ですがグループ番号は固定です。<br />
最初に接続したコネクションが壊れるとおかしくなります。</p>
<p>～参考設定～<br />
ターゲットにはしばらくブログに書いてきたExpress5800/110Geに<br />
Intel PRO 1000/PT Desktop Adapter を増設して利用しました。<br />
<a href="http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm">http://www.intel.com/products/server/adapters/pro1000pt/pro1000pt-overview.htm</a><br />
ホストはWindows Server 2008に同型カードを挿しました。<br />
それぞれのカードのIPアドレスを別のネットワークにして、<br />
スイッチングハブをそれぞれに独立して接続します。<br />
（参考設定では192.168.2.0/24と192.168.3.0/24を利用）</p>
<p>ターゲット側(FreeBSD7.1)：<br />
/etc/rc.conf</p>
<pre id="ex"><code>ifconfig_em0="inet 192.168.3.36  netmask 255.255.255.0"
ifconfig_em0_alias0="inet 192.168.3.37  netmask 255.255.255.255"
ifconfig_em1="inet 192.168.2.36  netmask 255.255.255.0"
ifconfig_em1_alias0="inet 192.168.2.37  netmask 255.255.255.255"

iscsi_target_enable="YES"
iscsi_target_flags="-s 32 -C 4 -P 192.168.2.36,192.168.3.36,192.168.2.37,192.168.3.37"
</code></pre>
<p>/usr/local/etc/iscsi/targets</p>
<pre id="ex"><code>extent0         /tank/iscsi/iscsi-target0       0       80GB
extent1         /tank/iscsi/iscsi-target1       0       80GB
target0                 rw      extent0         192.168.2.0/24
target1                 rw      extent1         0/0
</code></pre>
<p>ホスト側(WindowsServer2008)：<br />
オンボードLANに192.168.2.33/24を、<br />
Intel PRO 1000/PTに192.168.3.33/24を割り当てました。</p>
<p>ログインするときに[詳細設定]でローカルアダプタ、ソースIP、<br />
ターゲットポータルを指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-68" title="iscsi1" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>接続できたら、[詳細]でセッションのプロパティを開き、[接続]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi2.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-71" title="iscsi2" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>[追加]を押します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi3.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-72" title="iscsi3" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi3-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>ソースIP、ターゲットポータルを別のものを指定します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi4.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-73" title="iscsi4" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>負荷分散ポリシーを適当に変更する。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi5.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-74" title="iscsi5" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/iscsi5-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>設定はこんな感じですが、先に述べた通り最初のコネクションが<br />
すべてのデータを持っているのでこれが死ぬと復帰できなくなります。<br />
とりあえず動くところを見ないとね。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/65/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NEC Express5800/110Ge + WD5000AAKS + FreeBSD 7.1 ZFS/iSCSI/NFS（iSCSI/NFSの準備）</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/63</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/63#comments</comments>
		<pubDate>Fri, 14 Nov 2008 23:15:35 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/archives/63</guid>
		<description><![CDATA[FreeBSDでは7.1の時点でshareiscsiプロパティがサポートされていません。
iSCSIターゲットはportsのiscsi-targetを手動で利用しなくてはいけません。
# cd /usr/ports/net/iscsi-target/
# make; make install; make clean

/etc/rc.conf
iscsi_target_enable="YES"

ZFSの領域を作成してその中にイメージを置く。
/usr/local/etc/iscsi/targets
extent0         /tank/iscsi/iscsi-target0       0       80GB
target0         rw      extent0         192.168.2.0/24

iscsi-targetはZFSの設定が終るまで起動しないようにします。
# zfs create tank/iscsi
# /usr/local/etc/rc.d/iscsi_target start

NFSを利用するマシンの間にファイアウォールを使う場合は、
ポート番号をなにかしらに固定しないとひどい事になります。
-pオプションによりポート指定ができます。
なお、rpcbindは111、nfsdは2049で最初から固定です。
NFSサーバ側：
/etc/rc.conf
nfs_server_enable="YES"
rpcbind_enable="YES"
mountd_enable="YES"
↓例としてポートを822に固定してみる
mountd_flags="-r -p 822"

libwarpを使っているrpcbindの制御を特定IPだけに許可します。
ここで許可したIPでなおかつ/etc/exportsでマッチするクライアントが
NFSサーバに接続できます。
例では192.168.2.0/24にクライアントがいると仮定しています。
（注意：インストール初期状態ではALL : ALL : allowですべてのサービスが
 すべてのIPに許可されています。この行をコメント化して後の行を有効にするか、
 最初から自分ですべて書きます。）
/etc/hosts.allow
rpcbind : 192.168.2.0/255.255.255.0 : allow
rpcbind : ALL : deny

/etc/exportsは特に設定する必要はありません。
エクスポート設定はZFS上のプロパティとして設定します。
（システムが動的に/etc/zfs/exportsを作成し再読込させます）
NFS用の各デーモンを起動しますが、依存関係があるため起動順序が重要です。
わからなくなったらマシンを再起動してしまいましょう。
（rcorder /etc/rc.d/* というコマンドで順番はわかります）
# /etc/rc.d/rpcbind start
# /etc/rc.d/nfsserver start
# /etc/rc.d/mountd start
# /etc/rc.d/nfsd start

実際にポートマップがどうなっているのかは、
# rpcinfo -p
を実行するとわかります。
NFSクライアント側：
/etc/rc.conf
nfs_client_enable="YES"

設定したら起動します。
# /etc/rc.d/nfsclient start

ついでなのでsambaも入れてみた。
ここではsambaの設定はメインではないので詳細は書きませんが、
ゲストアクセスが必要な場合は、map to guest = Bad User のような
設定をグローバルにいれて、パーミッションを設定しておく。
ゲストはnobodyによるアクセスになるのでそのユーザで書込み可能にしておく。
# cd /usr/ports/net/samba3
# [...]]]></description>
			<content:encoded><![CDATA[<p>FreeBSDでは7.1の時点でshareiscsiプロパティがサポートされていません。<br />
iSCSIターゲットはportsのiscsi-targetを手動で利用しなくてはいけません。</p>
<pre id="ex"><code># cd /usr/ports/net/iscsi-target/
# make; make install; make clean
</code></pre>
<p>/etc/rc.conf</p>
<pre id="ex"><code>iscsi_target_enable="YES"
</code></pre>
<p>ZFSの領域を作成してその中にイメージを置く。<br />
/usr/local/etc/iscsi/targets</p>
<pre style="font-size: 0.9em" id="ex"><code>extent0         /tank/iscsi/iscsi-target0       0       80GB
target0         rw      extent0         192.168.2.0/24
</code></pre>
<p>iscsi-targetはZFSの設定が終るまで起動しないようにします。</p>
<pre id="ex"><code># zfs create tank/iscsi
# /usr/local/etc/rc.d/iscsi_target start
</code></pre>
<p>NFSを利用するマシンの間にファイアウォールを使う場合は、<br />
ポート番号をなにかしらに固定しないとひどい事になります。<br />
-pオプションによりポート指定ができます。<br />
なお、rpcbindは111、nfsdは2049で最初から固定です。</p>
<p>NFSサーバ側：<br />
/etc/rc.conf</p>
<pre id="ex"><code>nfs_server_enable="YES"
rpcbind_enable="YES"
mountd_enable="YES"
↓例としてポートを822に固定してみる
mountd_flags="-r -p 822"
</code></pre>
<p>libwarpを使っているrpcbindの制御を特定IPだけに許可します。<br />
ここで許可したIPでなおかつ/etc/exportsでマッチするクライアントが<br />
NFSサーバに接続できます。<br />
例では192.168.2.0/24にクライアントがいると仮定しています。<br />
（注意：インストール初期状態ではALL : ALL : allowですべてのサービスが<br />
 すべてのIPに許可されています。この行をコメント化して後の行を有効にするか、<br />
 最初から自分ですべて書きます。）</p>
<p>/etc/hosts.allow</p>
<pre id="ex"><code>rpcbind : 192.168.2.0/255.255.255.0 : allow
rpcbind : ALL : deny
</code></pre>
<p>/etc/exportsは特に設定する必要はありません。<br />
エクスポート設定はZFS上のプロパティとして設定します。<br />
（システムが動的に/etc/zfs/exportsを作成し再読込させます）</p>
<p>NFS用の各デーモンを起動しますが、依存関係があるため起動順序が重要です。<br />
わからなくなったらマシンを再起動してしまいましょう。<br />
（rcorder /etc/rc.d/* というコマンドで順番はわかります）</p>
<pre id="ex"><code># /etc/rc.d/rpcbind start
# /etc/rc.d/nfsserver start
# /etc/rc.d/mountd start
# /etc/rc.d/nfsd start
</code></pre>
<p>実際にポートマップがどうなっているのかは、</p>
<pre id="ex"><code># rpcinfo -p</code></pre>
<p>を実行するとわかります。</p>
<p>NFSクライアント側：<br />
/etc/rc.conf</p>
<pre id="ex"><code>nfs_client_enable="YES"
</code></pre>
<p>設定したら起動します。</p>
<pre id="ex"><code># /etc/rc.d/nfsclient start
</code></pre>
<p>ついでなのでsambaも入れてみた。<br />
ここではsambaの設定はメインではないので詳細は書きませんが、<br />
ゲストアクセスが必要な場合は、map to guest = Bad User のような<br />
設定をグローバルにいれて、パーミッションを設定しておく。<br />
ゲストはnobodyによるアクセスになるのでそのユーザで書込み可能にしておく。</p>
<pre id="ex"><code># cd /usr/ports/net/samba3
# make; make install; make clean</code></pre>
<p>/usr/local/etc/smb.conf</p>
<pre id="ex"><code>[global]
   workgroup = MYGROUP
   unix charset = eucjp-ms
   dos charset = cp932                

[public]
   comment = Public Stuff
   path = /tank/samba/public
   public = yes
   writable = yes
</code></pre>
<p>NFSによる/usr/portsの共有例：<br />
NFSサーバ側(hera)</p>
<pre id="ex"><code>↓nfs用の領域を作成
# zfs create tank/nfs
↓マウント位置をデフォルト(/tank/nfs)から/nfsに移動
# zfs set mountpoint=/nfs tank/nfs
↓ports用の領域を作成し、圧縮機能ONにする
（マウントは上位のtank/nfsから継承するので/nfs/portsになる）
# zfs cretae tank/nfs/ports
# zfs set compression=on tank/nfs/ports
↓sharenfsでNFSの共有設定を指定する（/etc/exportsと同じ書式）
# zfs set sharenfs='-maproot=root -network 192.168.2.0 -mask 255.255.255.0' tank/nfs/ports
↓自分自身でマウントして最新portsを作成する
# mount hera:/nfs/ports /usr/ports
# portsnap fetch
# portsnap extract
</code></pre>
<p>NFSクライアント側</p>
<pre id="ex"><code>↓普通にマウントするだけ
# mount hera:/nfs/ports /usr/ports
</code></pre>
<p>ZFSボリュームの作成例（ZILがあると低速でまともに使えない）：</p>
<pre id="ex"><code>↓4GBのボリューム作成（4GBの領域をストレージプールから予約）
# zfs create -V 4G tank/swap
↓作成したボリュームをスワップとして使って見る
# swapon /dev/zvol/tank/swap
↓起動時に自動マウントする為にプロパティを設定
# zfs set org.freebsd:swap=on tank/swap
↓不足するならいつでも領域拡大可能（ここでは8GBに拡大）
# zfs set volsize=8G tank/swap
</code></pre>
<p>※現バージョンでは/dev/zvol/への連続書込みは、<br />
ボリュームブロックサイズ？の128kB毎にログ(ZIL:ZFS Intent Log)の<br />
コミットが常時発生する為にとてつもなく遅いです。<br />
（デフォルト設定を安全側にするのは悪くない）<br />
もしも予期せぬサーバダウン時に更新が消失してもいいなら、</p>
<pre id="ex"><code>vfs.zfs.zil_disable=1</code></pre>
<p>を/boot/loader.confにいれるとZILが無効になります。<br />
ZFS自体は上書きしないトランザクション仕様なので、旧データが残るか<br />
新データに変わるかのどっちかになるはず。<br />
ZILは新データになるのを保証するって認識だけどよく理解できていません。</p>
<p>実際にWS2008からiSCSIで接続して書込みしてみると、<br />
4GB搭載して空きメモリ1.8GB、CPU使用率96%、<br />
I/O速度21MB/s x6台、平均書込速度59MB/s<br />
どうみてもCPUパワーが足りていません(汗)</p>
<p>（zpool iostat と systat -vmstatの結果）</p>
<pre id="ex"><code>               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank         180G  2.55T      8     41   634K  3.95M
tank         180G  2.55T     14    505  1.77M  58.6M
tank         181G  2.55T     21    632  2.61M  73.4M
tank         182G  2.55T     27    443  3.39M  50.7M
tank         183G  2.55T     40    436  4.93M  50.6M
tank         184G  2.55T     26    457  3.30M  53.6M
tank         185G  2.55T     21    655  2.62M  76.0M
tank         186G  2.55T      8    434  1.03M  50.7M
tank         186G  2.55T     49    505  6.11M  59.5M
tank         187G  2.55T     46    541  5.73M  63.9M
tank         188G  2.54T      9    546  1.17M  63.0M
tank         189G  2.54T     49    493  6.08M  57.9M                  

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act   21796    5956   112032     7464 1806084  count
All  990604   13348  4368244    26004          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow    7789 total
  2          40       16k   20 3621 5788  126             zfod        atkbd0 1
                                                          ozfod       atapci0 16
92.0%Sys   3.2%Intr  0.7%User  0.0%Nice  4.0%Idle        %ozfod  2090 atapci1 17
|    |    |    |    |    |    |    |    |    |    |       daefr  1999 cpu0: time
==============================================++          prcfr  2294 em0 irq256
                                         5 dtbuf    57771 totfr  1406 em1 irq257
Namei     Name-cache   Dir-cache    100000 desvn          react
   Calls    hits   %    hits   %     59876 numvn          pdwak
                                     24998 frevn          pdpgs
                                                          intrn
Disks   ad4   ad6   ad8  ad10  ad12  ad14  ad16   1050624 wire
KB/t   0.00   108   106   109   109   114   113     15920 act
tps       0   208   211   205   205   193   196   1088832 inact
MB/s   0.00 21.82 21.82 21.87 21.87 21.58 21.58           cache
%busy     0    43    43    47    44    32    40   1806084 free
                                                   204096 buf
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/63/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NEC Express5800/110Ge + WD5000AAKS + FreeBSD 7.1 ZFS/iSCSI/NFS（ZFSの準備）</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/62</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/62#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:05:12 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/archives/62</guid>
		<description><![CDATA[ここでは、Express5800/110GeのSATAに接続した6台の500GBドライブを
ZFSに用い、3-way(3重)ミラーリングもしくはダブルパリティ(RAID6相当)の領域を作ります。
3-wayミラーリングには3台、ダブルパリティには3台以上のドライブが必要です。
ZFSの利点はデバイス管理とファイルシステムが統合されている事にあります。
物理デバイスの使用領域はファイルシステムが存在する場所だけなので、
ZFSは常に把握することができ、リビルドでも必要部分のみ同期するだけで完了します。
たとえば1TBの容量があるHDDのミラーリングでも10GBしか利用していなければ、
たった10GBだけコピーすれば1TBのミラーリングのリビルドが完了します。
もちろん新規ドライブに構築する場合はデータコピーがないので瞬時に完了します。
この特徴は一般的なHW-RAIDともSW-RAIDとも違うものです。
（実際はより高度にトランザクションとかトップダウン同期とかあるらしいです）
ZFSではボリュームやファイルシステムの論理切り出しを行う為に
ストレージプールという領域を利用します。
ストレージプールにはOSが認識できるデバイスなら何でも利用できます。
デバイスの接続されたコントローラにもCPUにも依存しません。
別のマザーに交換してもハードディスクが無事ならば瞬時に移動できます。
（SATAポートが足らないと増設カードは必須でしょうが）
前置きはこれぐらいにして実際に作ってみます。
FreeBSDをインストールして初期設定をしたら、
続いてZFSを使う準備を以下のようにします。
/etc/rc.conf
zfs_enable="YES"
/boot/loader.conf
zfs_load="YES"
vfs.zfs.arc_max="256M"
vfs.zfs.vdev.cache.size="10M"
vm.kmem_size_max="512M"
vm.kmem_size="512M"
設定したらマシンを再起動します。
# shutdown -r now
以後作成したZFSがOS起動時に自動的にマウントされるようになります。
ストレージプールを作成します。
以下のコマンドは2～3秒で即座にRAID構成が完成します。
# zpool create tank mirror ad6 ad8 ad10
tank という名前のストレージプールを3-wayミラーリングで作成します。
# zpool add tank mirror ad12 ad14 ad16
容量が不足するならばいつでもストレージプールを拡張することができます。
# zpool create tank mirror ad6 ad8 ad10 mirror ad12 ad14 ad16
3-wayミラーリングのストライピング(RAID10相当)を作成します。
# zpool create tank raidz2 ad6 ad8 ad10 ad12 ad14 ad16
ストレージプールをダブルパリティで作成します。
# zpool export tank
ストレージプールをシステムの管理下から切り離します。
# zpool import tank
別の場所で作成したストレージプールを取り込みます。
# zpool destroy tank
ストレージプールを破棄します。
# zpool import -D tank
構成が破損していなければ破棄されたプールを回復します。
3-wayミラーリング＋ストライピング上に4GBのファイルを作成して読込してみる。
# zpool destroy [...]]]></description>
			<content:encoded><![CDATA[<p>ここでは、Express5800/110GeのSATAに接続した6台の500GBドライブを<br />
ZFSに用い、3-way(3重)ミラーリングもしくはダブルパリティ(RAID6相当)の領域を作ります。<br />
3-wayミラーリングには3台、ダブルパリティには3台以上のドライブが必要です。</p>
<p>ZFSの利点はデバイス管理とファイルシステムが統合されている事にあります。<br />
物理デバイスの使用領域はファイルシステムが存在する場所だけなので、<br />
ZFSは常に把握することができ、リビルドでも必要部分のみ同期するだけで完了します。<br />
たとえば1TBの容量があるHDDのミラーリングでも10GBしか利用していなければ、<br />
たった10GBだけコピーすれば1TBのミラーリングのリビルドが完了します。<br />
もちろん新規ドライブに構築する場合はデータコピーがないので瞬時に完了します。<br />
この特徴は一般的なHW-RAIDともSW-RAIDとも違うものです。<br />
（実際はより高度にトランザクションとかトップダウン同期とかあるらしいです）</p>
<p>ZFSではボリュームやファイルシステムの論理切り出しを行う為に<br />
ストレージプールという領域を利用します。<br />
ストレージプールにはOSが認識できるデバイスなら何でも利用できます。<br />
デバイスの接続されたコントローラにもCPUにも依存しません。<br />
別のマザーに交換してもハードディスクが無事ならば瞬時に移動できます。<br />
（SATAポートが足らないと増設カードは必須でしょうが）</p>
<p>前置きはこれぐらいにして実際に作ってみます。</p>
<p>FreeBSDをインストールして初期設定をしたら、<br />
続いてZFSを使う準備を以下のようにします。</p>
<p>/etc/rc.conf</p>
<pre id="ex"><code>zfs_enable="YES"</code></pre>
<p>/boot/loader.conf</p>
<pre id="ex"><code>zfs_load="YES"
vfs.zfs.arc_max="256M"
vfs.zfs.vdev.cache.size="10M"
vm.kmem_size_max="512M"
vm.kmem_size="512M"</code></pre>
<p>設定したらマシンを再起動します。</p>
<pre id="ex"><code># shutdown -r now</code></pre>
<p>以後作成したZFSがOS起動時に自動的にマウントされるようになります。</p>
<p>ストレージプールを作成します。<br />
以下のコマンドは2～3秒で即座にRAID構成が完成します。</p>
<pre id="ex"><code># zpool create tank mirror ad6 ad8 ad10</code></pre>
<p>tank という名前のストレージプールを3-wayミラーリングで作成します。</p>
<pre id="ex"><code># zpool add tank mirror ad12 ad14 ad16</code></pre>
<p>容量が不足するならばいつでもストレージプールを拡張することができます。</p>
<pre style="font-size: 0.9em" id="ex"><code># zpool create tank mirror ad6 ad8 ad10 mirror ad12 ad14 ad16</code></pre>
<p>3-wayミラーリングのストライピング(RAID10相当)を作成します。</p>
<pre id="ex"><code># zpool create tank raidz2 ad6 ad8 ad10 ad12 ad14 ad16</code></pre>
<p>ストレージプールをダブルパリティで作成します。</p>
<pre id="ex"><code># zpool export tank</code></pre>
<p>ストレージプールをシステムの管理下から切り離します。</p>
<pre id="ex"><code># zpool import tank</code></pre>
<p>別の場所で作成したストレージプールを取り込みます。</p>
<pre id="ex"><code># zpool destroy tank</code></pre>
<p>ストレージプールを破棄します。</p>
<pre id="ex"><code># zpool import -D tank</code></pre>
<p>構成が破損していなければ破棄されたプールを回復します。</p>
<hr />3-wayミラーリング＋ストライピング上に4GBのファイルを作成して読込してみる。</p>
<pre id="ex"><code># zpool destroy tank
# zpool create tank mirror ad6 ad8 ad10 mirror ad12 ad14 ad16
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                    928G    112K    928G     0%  ONLINE     -
# zpool status
  pool: tank
 state: ONLINE
 scrub: none requested
config:                                  

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    ONLINE       0     0     0
            ad16    ONLINE       0     0     0                                  

errors: No known data errors
# dd if=/dev/zero of=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 51.721632 secs (83040058 bytes/sec)
# dd of=/dev/null if=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 11.281782 secs (380699373 bytes/sec)
</code></pre>
<p>容量 1TB (500GB+ミラーx2)+(500GB+ミラーx2)<br />
書込 79.2MB/s<br />
読込 363.0MB/s</p>
<hr />ダブルパリティ上に4GBのファイルを作成して読込してみる。</p>
<pre id="ex"><code># zpool destroy tank
# zpool create tank raidz2 ad6 ad8 ad10 ad12 ad14 ad16
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   2.73T    248K   2.73T     0%  ONLINE     -
# zpool status
  pool: tank
 state: ONLINE
 scrub: none requested
config:                                  

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    ONLINE       0     0     0
            ad16    ONLINE       0     0     0                                  

errors: No known data errors
# dd if=/dev/zero of=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 46.391234 secs (92581441 bytes/sec)
# dd of=/dev/null if=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 13.986986 secs (307068822 bytes/sec)
</code></pre>
<p>容量 2TB (500GBx4+パリティx2)<br />
書込 88.3MB/s<br />
読込 292.8MB/s</p>
<hr />信頼性と読込パフォーマンスか容量のどちらを取るかは運用方針と相談です。<br />
当方はダブルパリティで容量を確保する事にしました。<br />
読込はどう見てもGbE一本でまかなえる速度じゃないです。<br />
(300MB/s=2700Mbps=2.7Gbpsだから)</p>
<p>FreeBSDのZFSはSUNのコードを移植されたものなので、<br />
SUNの<a target="_blank" href="http://docs.sun.com/app/docs/doc/819-6260?l=ja">Solaris ZFS 管理ガイド</a>が参考になります。<br />
デバイス名の指定など多少違いますが、概念やコマンド体系はそのままです。</p>
<p>余談：<br />
SW-RAIDの基本的なことですがパリティ計算をCPUが担当するので、<br />
計算中は他の処理が停止するので可能であればDualCoreやQuadCoreなどを<br />
載せるほうがいいかもしれない。<br />
このハード構成はCPU交換すると電源容量が足らないかもしれない。</p>
<p><a href="http://shell.peach.ne.jp/aoyama/archives/63">続く。</a></p>
<p>追記：<br />
記載したパラメータがあまりよろしくないので修正。<br />
その後のテストで、どうも書込みが80MB/s程度になっていたのは<br />
CPUパワーとかキャッシュ量に問題がありそうだった。<br />
USED 343G の時点でも、書込92MB/s、読込246MB/sを出せている。<br />
さらにカスタムカーネルを作成してキャッシュを増量したところ、<br />
書込104MB/s、読込263MB/sになりました。<br />
（この値が良いかどうかは不明です）</p>
<p>Kernel CONFIG</p>
<pre id="ex"><code>include PAE
options KVA_PAGES=1024
nomakeoptions   NO_MODULES
makeoptions     MODULES_OVERRIDE="opensolaris zfs"
device          iscsi_initiator
</code></pre>
<p>/boot/loader.conf</p>
<pre id="ex"><code>vm.kmem_size_max="1536M"
vm.kmem_size="1536M"
vfs.zfs.arc_max="512M"
vfs.zfs.vdev.cache.size="20M"
</code></pre>
<p>ddの結果はこんな感じに。</p>
<pre id="ex"><code># dd if=/dev/zero of=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 39.355941 secs (109131359 bytes/sec)
# dd of=/dev/null if=/tank/image4G.dat bs=64k count=64k
65536+0 records in
65536+0 records out
4294967296 bytes transferred in 15.525784 secs (276634487 bytes/sec)
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/62/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NEC Express5800/110Ge + WD5000AAKS + FreeBSD 7.1 ZFS/iSCSI/NFS（ハード組込・動作試験編）</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/59</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/59#comments</comments>
		<pubDate>Sun, 09 Nov 2008 10:49:49 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[機材]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/archives/59</guid>
		<description><![CDATA[用意するもの：
メモリ1GB以上（できれば2GB以上）
5インチベイ2段で3台のSATAを格納できるケース1個（及びケーブル）
SATA接続の同容量のHDD6台（ZFS用）
40ピンIDE接続の4GB以上のHDD1台（起動用）
インチネジ必要分（HDD固定用）
FDDまたはUSB接続のCD/DVDドライブ
今回はFDDなしでUSB接続のCDからブートして、
FreeBSD 7.1 Beta2をインストールしました。
HDDケースにはEG-RM410ABK(SATAケーブル付属)を使いました。
IDEドライブには余っていたSeagate ST320014A
(UATA100/5400回転/20GB/2MBキャッシュ)を使いました。
※ブートできればなんでもいいのでUSBメモリなどでもいい
USBCDドライブはTEACのCD-210PUを使いました。
付属のDVD-RAMを外し、HDDケースを取り付けます。
SATA HDD3台をそこに格納します。
3.5インチシャドウベイから付属の80GB HDDを外し、
上段からSTAT HDD3台と最下段にIDE HDDを装着します。
IDE HDDにはDVD-RAMが接続されていたケーブルを使います。
HDD装着後の状態はこんな感じ

（クリックで拡大）
メモリを4GB(2GBx2)に増設しました。
BIOSのResetConfigurationなど設定もしておく。
（マニュアル参照）
全デバイス、拡張カードを装着後に一旦起動して、
memtest86+ 2.01を使って3パス以上正しく回る事を確認しておきます。
一晩放置で10パス通過したようです。
USBデバイスを挿して起動すると、デフォルトの順序がUSBからなので、
CDから起動しますので、FreeBSDをIDEドライブにインストールします。
終ったら、再起動してUSBデバイスを抜きます。
HDDからFreeBSDを起動するとこんな感じです。
/var/run/dmesg.boot
このときのワットチェッカーは111Wでした。
このHDDケースは4cmファンx2個なので耐久性に不安が。
でもシャドウベイの方も予想以上に発熱が大きい。
何か対策がいるかもしれない。
以下を導入
/usr/ports/sysutils/smartmontools
/usr/ports/sysutils/mbmon

SATA全ドライブアクセスなしの温度(smartctl取得)は、
Temperature_Celsius がそれぞれ以下のように。
（先に取り忘れたのでdd実行後2時間以上後の測定値です）

 ad6 = 41  5インチベイケース上段
 ad8 = 42  5インチベイケース中段
ad10 = 43  5インチベイケース下段
ad12 = 39  シャドウ1
ad14 = 38  シャドウ2
ad16 = 36  シャドウ3
 ad4 = 29  シャドウ4
Mem:KB    REAL            VIRTUAL       [...]]]></description>
			<content:encoded><![CDATA[<p>用意するもの：<br />
メモリ1GB以上（できれば2GB以上）<br />
5インチベイ2段で3台のSATAを格納できるケース1個（及びケーブル）<br />
SATA接続の同容量のHDD6台（ZFS用）<br />
40ピンIDE接続の4GB以上のHDD1台（起動用）<br />
インチネジ必要分（HDD固定用）<br />
FDDまたはUSB接続のCD/DVDドライブ</p>
<p>今回はFDDなしでUSB接続のCDからブートして、<br />
FreeBSD 7.1 Beta2をインストールしました。<br />
HDDケースにはEG-RM410ABK(SATAケーブル付属)を使いました。<br />
IDEドライブには余っていたSeagate ST320014A<br />
(UATA100/5400回転/20GB/2MBキャッシュ)を使いました。<br />
※ブートできればなんでもいいのでUSBメモリなどでもいい</p>
<p>USBCDドライブは<a target="_blank" href="http://www.teac.co.jp/storage/pc/cd/cd210pu/index.html">TEACのCD-210PU</a>を使いました。</p>
<p>付属のDVD-RAMを外し、HDDケースを取り付けます。<br />
SATA HDD3台をそこに格納します。<br />
3.5インチシャドウベイから付属の80GB HDDを外し、<br />
上段からSTAT HDD3台と最下段にIDE HDDを装着します。<br />
IDE HDDにはDVD-RAMが接続されていたケーブルを使います。</p>
<p>HDD装着後の状態はこんな感じ</p>
<p><a target="_blank" href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/110ge3.jpg"><img src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/110ge3.thumbnail.jpg" alt="110ge3.jpg" /></a><br />
（クリックで拡大）</p>
<p>メモリを4GB(2GBx2)に増設しました。<br />
BIOSのResetConfigurationなど設定もしておく。<br />
（マニュアル参照）<br />
全デバイス、拡張カードを装着後に一旦起動して、<br />
<a target="_blank" href="http://www.memtest.org/">memtest86+ 2.01</a>を使って3パス以上正しく回る事を確認しておきます。<br />
一晩放置で10パス通過したようです。</p>
<p>USBデバイスを挿して起動すると、デフォルトの順序がUSBからなので、<br />
CDから起動しますので、FreeBSDをIDEドライブにインストールします。<br />
終ったら、再起動してUSBデバイスを抜きます。<br />
HDDからFreeBSDを起動するとこんな感じです。</p>
<p><a target="_blank" href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/dmesgboot-110ge2.txt">/var/run/dmesg.boot</a></p>
<p>このときのワットチェッカーは111Wでした。<br />
このHDDケースは4cmファンx2個なので耐久性に不安が。<br />
でもシャドウベイの方も予想以上に発熱が大きい。<br />
何か対策がいるかもしれない。</p>
<p>以下を導入</p>
<pre id="ex"><code>/usr/ports/sysutils/smartmontools
/usr/ports/sysutils/mbmon
</code></pre>
<p>SATA全ドライブアクセスなしの温度(smartctl取得)は、<br />
Temperature_Celsius がそれぞれ以下のように。<br />
（先に取り忘れたのでdd実行後2時間以上後の測定値です）</p>
<pre>
 ad6 = 41  5インチベイケース上段
 ad8 = 42  5インチベイケース中段
ad10 = 43  5インチベイケース下段
ad12 = 39  シャドウ1
ad14 = 38  シャドウ2
ad16 = 36  シャドウ3
 ad4 = 29  シャドウ4</pre>
<pre id="ex"><code>Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act   17132    4276    99448     5376 3412504  count
All   39724    6500  2249188    12672          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow   13572 total
  1       5  34       41k    9  12k  11k  171             zfod        atkbd0 1
                                                          ozfod       atapci0 16
34.5%Sys  12.7%Intr  1.5%User  0.0%Nice 51.3%Idle        %ozfod 11576 atapci1 17
|    |    |    |    |    |    |    |    |    |    |       daefr  1995 cpu0: time
=================+++++++                                  prcfr     1 em0 irq256
                                        14 dtbuf          totfr
Namei     Name-cache   Dir-cache    100000 desvn          react
   Calls    hits   %    hits   %       621 numvn          pdwak
                                        53 frevn          pdpgs
                                                          intrn
Disks   ad4   ad6   ad8  ad10  ad12  ad14  ad16     28172 wire
KB/t   0.00 64.00 64.00 64.00 64.00 64.00 64.00     12608 act
tps       0  1145  1132  1058  1146  1146   855      8120 inact
MB/s   0.00 71.56 70.74 66.12 71.62 71.65 53.46           cache
%busy     0    87    90    87    87    88    91   3412504 free
                                                    11072 buf
</code></pre>
<p>↑全ドライブdd実行中の1h経過ぐらいのsystat -vmstatの画面<br />
(dd if=/dev/zero of=/dev/ad6 bs=64k)<br />
なぜかad16の出だしが遅い・・・。（もちろん単体指定では80MB/s出る）<br />
DMI(MCH-ICH間)は2GB/sらしいから、<br />
帯域が足りないってわけでもなかろう？<br />
トータル書き込み速度400MB/sぐらいでCPU使用率が約50%です。<br />
残りのCPU時間はソフトウェアRAIDとGbEの処理に使えると。</p>
<p><a href="http://shell.peach.ne.jp/aoyama/archives/62">続く。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/59/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
