<?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; FreeBSD</title>
	<atom:link href="http://shell.peach.ne.jp/aoyama/archives/tag/freebsd/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>FreeBSD 8.1-RELEASE と isboot 0.2.2 を統合したデモ版をアップしました</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1240</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1240#comments</comments>
		<pubDate>Fri, 30 Jul 2010 08:13:43 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1240</guid>
		<description><![CDATA[FreeBSD 8.1が公開されたので、デモ版も更新しました。
よかったらiSCSI起動もお試しください。
ダウンロードリンク(for testing purpose only)：
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-amd64-isboot-0.2.2.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-i386-isboot-0.2.2.iso
ソースファイル、その他の情報については以下の記事を参照してください：
http://shell.peach.ne.jp/aoyama/archives/1216
]]></description>
			<content:encoded><![CDATA[<p>FreeBSD 8.1が公開されたので、デモ版も更新しました。<br />
よかったらiSCSI起動もお試しください。</p>
<p>ダウンロードリンク(for testing purpose only)：<br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-amd64-isboot-0.2.2.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-amd64-isboot-0.2.2.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-i386-isboot-0.2.2.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RELEASE-i386-isboot-0.2.2.iso</a></p>
<p>ソースファイル、その他の情報については以下の記事を参照してください：<br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1216" target="_blank">http://shell.peach.ne.jp/aoyama/archives/1216</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1240/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD 7.3/8.1 on Windows Server 2008 + Hyper-V</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1231</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1231#comments</comments>
		<pubDate>Thu, 08 Jul 2010 10:09:42 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[仮想化]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[patch]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1231</guid>
		<description><![CDATA[すでに賞味期限切れですが公開しておきます。
このバージョンはFreeNAS 0.7.1(7S) および 0.7.2 に搭載されているものです。
Windows Server 2008 R2 ではこれがなくても動くようになっているはずです。
for FreeBSD 7.3 or later
パッチファイル：fbs73-hv-20100528.patch.gz
for FreeBSD 8.1 or later
パッチファイル：fbs81-hv-20100528.patch.gz
パッチ済みカーネルの作成とインストール(8.1の実行例)：
# cd /usr/src
# gzcat &#60; /path/to/fbs81-hv-20100528.patch.gz &#124; patch -p1
# make buildkernel
# make installkernel
# shutdown -r now
vmwp.exeの終了のしかた：
１．タスクマネージャを起動します。
２．プロセスタブを開きます。
３．表示(V)＞列の選択(S)で「コマンドライン」のチェック入れて表示します。
４．イメージ名の部分をクリックしてソートします。
５．vmconnect.exeの後ろにホスト名、仮想マシン名、オプションと続くので、
停止したい仮想マシンのコマンドラインにあるGUIDを見つけます。
６．同じGUIDのvmwp.exeがありますので、右クリックして
「プロセスの終了(E)」を選択します。
 
（クリックで拡大）
]]></description>
			<content:encoded><![CDATA[<p>すでに賞味期限切れですが公開しておきます。<br />
このバージョンはFreeNAS 0.7.1(7S) および 0.7.2 に搭載されているものです。<br />
Windows Server 2008 R2 ではこれがなくても動くようになっているはずです。</p>
<p>for FreeBSD 7.3 or later<br />
パッチファイル：<a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/fbs73-hv-20100528.patch.gz" target="_blank">fbs73-hv-20100528.patch.gz</a></p>
<p>for FreeBSD 8.1 or later<br />
パッチファイル：<a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/fbs81-hv-20100528.patch.gz" target="_blank">fbs81-hv-20100528.patch.gz</a></p>
<p>パッチ済みカーネルの作成とインストール(8.1の実行例)：<br />
# cd /usr/src<br />
# gzcat &lt; /path/to/fbs81-hv-20100528.patch.gz | patch -p1<br />
# make buildkernel<br />
# make installkernel<br />
# shutdown -r now</p>
<p>vmwp.exeの終了のしかた：<br />
１．タスクマネージャを起動します。<br />
２．プロセスタブを開きます。<br />
３．表示(V)＞列の選択(S)で「コマンドライン」のチェック入れて表示します。<br />
４．イメージ名の部分をクリックしてソートします。<br />
５．vmconnect.exeの後ろにホスト名、仮想マシン名、オプションと続くので、<br />
停止したい仮想マシンのコマンドラインにあるGUIDを見つけます。<br />
６．同じGUIDのvmwp.exeがありますので、右クリックして<br />
「プロセスの終了(E)」を選択します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr1.jpg" target="_blank"></a><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr1.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-114" title="hvtaskmgr1" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr1-e1278583158734-150x119.jpg" alt="" width="150" height="119" /></a><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr2.jpg" target="_blank"> </a><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr2.jpg"></a><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr2.jpg" target="_blank"><img class="alignnone size-medium wp-image-115" title="hvtaskmgr2" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2008/11/hvtaskmgr2-299x106.jpg" alt="" width="299" height="106" /></a><br />
（クリックで拡大）</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1231/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100707版 for FreeBSD</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1223</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1223#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:22:59 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1223</guid>
		<description><![CDATA[istgtも七夕エディションに(謎)
isbootとの組み合わせで気づいた点を修正しました。
また、一か月ほどWindows7のディスクレス環境を支えて来れたというのを
踏まえてPortsの更新も行います。
ちなみに4KBとか小サイズIOを大量に投げるとギガビットイーサの遅さも
相まって、ありえないほどの遅延が生じます。
これは今後の課題と言うことで。
参考用：
http://shell.peach.ne.jp/aoyama/archives/1077
http://shell.peach.ne.jp/aoyama/archives/1107
http://shell.peach.ne.jp/aoyama/archives/1114
istgt (tarball): istgt-20010707.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100707.tar.gz
# cd istgt-20100707
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100707.tar.gz) = 2774a6487b65a182648503eb76c2c4a3
SHA256 (istgt-20100707.tar.gz) = 98b910da623a127f575e35f45dfc7f8f5ec3334fc260b28cbd31b83ec32ca868
主な修正点：
DefaultTime2Waitの比較を最大値を取るように修正
ターゲットが存在しない場合に検索した記録を残すように修正
]]></description>
			<content:encoded><![CDATA[<p>istgtも七夕エディションに(謎)<br />
isbootとの組み合わせで気づいた点を修正しました。<br />
また、一か月ほどWindows7のディスクレス環境を支えて来れたというのを<br />
踏まえてPortsの更新も行います。<br />
ちなみに4KBとか小サイズIOを大量に投げるとギガビットイーサの遅さも<br />
相まって、ありえないほどの遅延が生じます。<br />
これは今後の課題と言うことで。</p>
<p>参考用：<br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1077" target="_blank">http://shell.peach.ne.jp/aoyama/archives/1077</a><br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1107" target="_blank">http://shell.peach.ne.jp/aoyama/archives/1107</a><br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1114" target="_blank">http://shell.peach.ne.jp/aoyama/archives/1114</a></p>
<p>istgt (tarball): <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100707.tar.gz" target="_blank">istgt-20010707.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100707.tar.gz
# cd istgt-20100707
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100707.tar.gz) = 2774a6487b65a182648503eb76c2c4a3<br />
SHA256 (istgt-20100707.tar.gz) = 98b910da623a127f575e35f45dfc7f8f5ec3334fc260b28cbd31b83ec32ca868</p>
<p>主な修正点：<br />
DefaultTime2Waitの比較を最大値を取るように修正<br />
ターゲットが存在しない場合に検索した記録を残すように修正</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1223/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>isboot (iSCSI boot driver) version 0.2.2</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1216</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1216#comments</comments>
		<pubDate>Sun, 04 Jul 2010 10:00:55 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1216</guid>
		<description><![CDATA[mutexを保持したままスリープしてしまう問題を修正しました。
また、FreeBSD8以降の場合はmaxio=1MBと設定するようになりました。
（効果がいまいち不明・・・。同時に256ブロック/128KBしかこない）
ddコマンドをバックグラウンドで4個同時に動かすと、
Read 120MB/s, Write 84MB/s ぐらいは出るようです。
作成・アップグレード方法：
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.2.2.tar.gz
# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install
インストール後に、新モジュールを適用する為にサーバを再起動してください。
ログで iSCSI boot driver version 0.2.2 が表示される事を確認してください。
主な修正点：
FreeBSD8.0以降はmaxioを1MBに設定
SCSIオートセンス機能を追加
タグ数をiSCSIコマンド数で調整するように変更
デフォルトタグ数を32に変更
iSCSI処理中にCAMロックを保持しないように変更
パフォーマンス(ダイジェストなし)：
# dd if=/dev/da4 of=/dev/null bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 14.374117 secs (74699672 bytes/sec)
# dd if=/dev/zero of=/dev/da4 bs=1m [...]]]></description>
			<content:encoded><![CDATA[<p>mutexを保持したままスリープしてしまう問題を修正しました。<br />
また、FreeBSD8以降の場合はmaxio=1MBと設定するようになりました。<br />
（効果がいまいち不明・・・。同時に256ブロック/128KBしかこない）<br />
ddコマンドをバックグラウンドで4個同時に動かすと、<br />
Read 120MB/s, Write 84MB/s ぐらいは出るようです。</p>
<p>作成・アップグレード方法：</p>
<p># cd /usr/src<br />
# tar xvf /path/to/iscsi-2.2.4.tar.gz<br />
# tar xvf /path/to/isboot-0.2.2.tar.gz</p>
<p># make buildkernel<br />
# make installkernel<br />
or<br />
# cd /usr/src/sys/modules/iscsi/isboot<br />
# make obj<br />
# make depend<br />
# make clean<br />
# make all<br />
# make install</p>
<p>インストール後に、新モジュールを適用する為にサーバを再起動してください。<br />
ログで iSCSI boot driver version 0.2.2 が表示される事を確認してください。</p>
<p>主な修正点：<br />
FreeBSD8.0以降はmaxioを1MBに設定<br />
SCSIオートセンス機能を追加<br />
タグ数をiSCSIコマンド数で調整するように変更<br />
デフォルトタグ数を32に変更<br />
iSCSI処理中にCAMロックを保持しないように変更</p>
<p>パフォーマンス(ダイジェストなし)：<br />
# dd if=/dev/da4 of=/dev/null bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 14.374117 secs (74699672 bytes/sec)<br />
# dd if=/dev/zero of=/dev/da4 bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 17.823493 secs (60243064 bytes/sec)</p>
<p>Read: 74MB/s Write: 60MB/s (at bs=1m)</p>
<p>ダウンロードリンク：<br />
<a href="http://www.peach.ne.jp/archives/isboot/isboot-0.2.2.tar.gz">http://www.peach.ne.jp/archives/isboot/isboot-0.2.2.tar.gz</a></p>
<p>ダウンロードリンク(for testing purpose only)：<br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.2.2.iso" target="_self">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.2.2.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.2.2.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.2.2.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-amd64-isboot-0.2.2.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-amd64-isboot-0.2.2.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-i386-isboot-0.2.2.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-i386-isboot-0.2.2.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh</a></p>
<p>gPXE + isboot + istgt(参考用)：<br />
<a href="http://lists.freebsd.org/pipermail/freebsd-scsi/2010-June/004432.html" target="_blank">http://lists.freebsd.org/pipermail/freebsd-scsi/2010-June/004432.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1216/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>isboot (iSCSI boot driver) version 0.2.1</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1213</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1213#comments</comments>
		<pubDate>Sat, 03 Jul 2010 12:05:58 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1213</guid>
		<description><![CDATA[どうもiBFTが破損しているとカーネルごとお亡くなりになるようなので、
ロード処理を対応してみました。
処理のボトルネックになっていたコマンド実行数の制限を無くす為に、
キューイング処理を追加しました。
これにより読み込み速度が61MB/sから74MB/sに13MB/s程度改善しました。
また、R2Tコマンド、およびimmediateなしモードに対応したため、
istgt以外のiSCSIターゲットとの互換性が大幅にアップしています。
8.1-RC2が公開されたので、そちらの統合版も作成しました。
※FreeBSDのCAMの制限なのかVFSの制限なのか不明ですがTL&#62;64KBで
処理をしてくれないようです。
CAM用のタグも64個用意しているけどdd bs=1mでは2個しか使っていないように
見えます。対処方法があったら教えてください。
istgt以外のiSCSIターゲットとの接続がうまくいかない場合は、
ブログコメントにでも残して頂けると助かります。
作成・アップグレード方法：
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.2.1.tar.gz
# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install
インストール後に、新モジュールを適用する為にサーバを再起動してください。
ログで iSCSI boot driver version 0.2.1 が表示される事を確認してください。
主な修正点：
CHAP/Mutual CHAPに対応しました。
タスクキューを実装しました。
immediateなしモード及びR2Tコマンドに対応しました。
iBFTチェックサムが破損している場合もモジュール登録するようになりました。
パフォーマンス(ダイジェストなし)：
# dd if=/dev/da4 of=/dev/null bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 14.374117 secs (74699672 bytes/sec)
# dd if=/dev/zero of=/dev/da4 bs=1m count=1k
1024+0 records [...]]]></description>
			<content:encoded><![CDATA[<p>どうもiBFTが破損しているとカーネルごとお亡くなりになるようなので、<br />
ロード処理を対応してみました。<br />
処理のボトルネックになっていたコマンド実行数の制限を無くす為に、<br />
キューイング処理を追加しました。<br />
これにより読み込み速度が61MB/sから74MB/sに13MB/s程度改善しました。<br />
また、R2Tコマンド、およびimmediateなしモードに対応したため、<br />
istgt以外のiSCSIターゲットとの互換性が大幅にアップしています。<br />
8.1-RC2が公開されたので、そちらの統合版も作成しました。</p>
<p>※FreeBSDのCAMの制限なのかVFSの制限なのか不明ですがTL&gt;64KBで<br />
処理をしてくれないようです。<br />
CAM用のタグも64個用意しているけどdd bs=1mでは2個しか使っていないように<br />
見えます。対処方法があったら教えてください。</p>
<p>istgt以外のiSCSIターゲットとの接続がうまくいかない場合は、<br />
ブログコメントにでも残して頂けると助かります。</p>
<p>作成・アップグレード方法：</p>
<p># cd /usr/src<br />
# tar xvf /path/to/iscsi-2.2.4.tar.gz<br />
# tar xvf /path/to/isboot-0.2.1.tar.gz</p>
<p># make buildkernel<br />
# make installkernel<br />
or<br />
# cd /usr/src/sys/modules/iscsi/isboot<br />
# make obj<br />
# make depend<br />
# make clean<br />
# make all<br />
# make install</p>
<p>インストール後に、新モジュールを適用する為にサーバを再起動してください。<br />
ログで iSCSI boot driver version 0.2.1 が表示される事を確認してください。</p>
<p>主な修正点：<br />
CHAP/Mutual CHAPに対応しました。<br />
タスクキューを実装しました。<br />
immediateなしモード及びR2Tコマンドに対応しました。<br />
iBFTチェックサムが破損している場合もモジュール登録するようになりました。</p>
<p>パフォーマンス(ダイジェストなし)：<br />
# dd if=/dev/da4 of=/dev/null bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 14.374117 secs (74699672 bytes/sec)<br />
# dd if=/dev/zero of=/dev/da4 bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 17.823493 secs (60243064 bytes/sec)</p>
<p>Read: 74MB/s Write: 60MB/s (at bs=1m)</p>
<p>ダウンロードリンク：<br />
<a href="http://www.peach.ne.jp/archives/isboot/isboot-0.2.1.tar.gz" target="_blank">http://www.peach.ne.jp/archives/isboot/isboot-0.2.1.tar.gz</a></p>
<p>ダウンロードリンク(for testing purpose only)：<br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.2.1.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.2.1.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.2.1.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.2.1.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-amd64-isboot-0.2.1.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-amd64-isboot-0.2.1.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-i386-isboot-0.2.1.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC2-i386-isboot-0.2.1.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh</a></p>
<p>gPXE + isboot + istgt(参考用)：<br />
<a href="http://lists.freebsd.org/pipermail/freebsd-scsi/2010-June/004432.html" target="_blank">http://lists.freebsd.org/pipermail/freebsd-scsi/2010-June/004432.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1213/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>isboot (iSCSI boot driver) version 0.1.3</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1202</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1202#comments</comments>
		<pubDate>Sun, 27 Jun 2010 00:23:56 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1202</guid>
		<description><![CDATA[リカバリモードの処理を改善しました。
ターゲットの消失が一時的に起きても依然のように即パニックになる可能性が
ほぼなくなったと思います。
現在はCAM用mtxとタスク用mtxの取得順序の問題で、根本的なレース状態の
解決にはなっていません。今後の検討課題です。
CAMをロックしたままタスク用mtxをmsleepで待ちたいです。
根本的にこのロジックがダメなのでしょうか？
カーネルランドに詳しい人で、もしここを見ている人がいたら教えてください(切実)
作成・アップグレード方法：
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.1.3.tar.gz

# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install
インストール後に、新モジュールを適用する為にサーバを再起動してください。
ログで iSCSI boot driver version 0.1.3 が表示される事を確認してください。
主な修正点：
セッションリカバリの処理方法を改善しました。
ソケット消失時に処理がストールする事があったのを修正しました。
ダウンロードリンク：
http://www.peach.ne.jp/archives/isboot/isboot-0.1.3.tar.gz
ダウンロードリンク(for testing purpose only)：
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-amd64-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-i386-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh
]]></description>
			<content:encoded><![CDATA[<p>リカバリモードの処理を改善しました。<br />
ターゲットの消失が一時的に起きても依然のように即パニックになる可能性が<br />
ほぼなくなったと思います。<br />
現在はCAM用mtxとタスク用mtxの取得順序の問題で、根本的なレース状態の<br />
解決にはなっていません。今後の検討課題です。</p>
<p>CAMをロックしたままタスク用mtxをmsleepで待ちたいです。<br />
根本的にこのロジックがダメなのでしょうか？<br />
カーネルランドに詳しい人で、もしここを見ている人がいたら教えてください(切実)</p>
<p>作成・アップグレード方法：</p>
<pre id="ex"><code># cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.1.3.tar.gz

# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install</code></pre>
<p>インストール後に、新モジュールを適用する為にサーバを再起動してください。<br />
ログで iSCSI boot driver version 0.1.3 が表示される事を確認してください。</p>
<p>主な修正点：<br />
セッションリカバリの処理方法を改善しました。<br />
ソケット消失時に処理がストールする事があったのを修正しました。</p>
<p>ダウンロードリンク：<br />
<a href="http://www.peach.ne.jp/archives/isboot/isboot-0.1.3.tar.gz" target="_blank">http://www.peach.ne.jp/archives/isboot/isboot-0.1.3.tar.gz</a></p>
<p>ダウンロードリンク(for testing purpose only)：<br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.1.3.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.1.3.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.1.3.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.1.3.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-amd64-isboot-0.1.3.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-amd64-isboot-0.1.3.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-i386-isboot-0.1.3.iso" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-i386-isboot-0.1.3.iso</a><br />
<a href="http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh" target="_blank">http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1202/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>isboot-0.1.1はバグがありました</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1197</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1197#comments</comments>
		<pubDate>Fri, 25 Jun 2010 16:15:55 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1197</guid>
		<description><![CDATA[動かないとか思った人すみません。修正版を即上げなおしたので、
不幸にもダウンロードしてしまった人は闇に葬ってください(汗)
それだけではなんですから、FreeBSD 7.2 および 8.1-RC1のISOイメージに
isboot-0.1.2を統合した版を作りましたので、良かったら試してみてください。
作成スクリプトも上げておきますが、自己責任でよろしくお願いします。
IntelのiSCSI機能(iBFT)サポートNICはここで調べてください。
http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm
起動に成功するとこんな感じのログ画面になります。
Boot NIC: em0 と Boot device: da1 の行にに注目。
この例だと em0 をiBFTで設定されたNIC0を用いて初期化します。
iBFTの仕様上IPv6でもIPv4でも行けるはずですが、IPv6は未確認です。
そしてda1を起動用として認識しているので、ここにインストールすれば、
NICのBIOSから起動して、isboot.koが引き継いで、OSを起動という
流れになります。
最終的にはisboot.koからiscsi_initiator.koに引き継ぎを出来ると
完璧なのだけど、現時点では出来ません。理由は前回書いた通り。
既存環境をiSCSIターゲットに移すにはloader.confで指定するか、
シェルから kldload isboot.ko を実行すると、設定がロードされて
デバイスが使えるようになるのでdump/restoreなどの方法でコピーします。
注意点としては、インストール中に起動NIC（例の場合はem0）にIPアドレス等を
設定しない事です。問題が発生する可能性があります。
isboot.koが作成するTCPコネクションはクリティカルパスですので、
経路消失した場合の動作は保障できません。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
iSCSI boot driver version 0.1.2
IS: Initiator name: iqn.2007-09.jp.ne.peach:pluto
NIC0: IP address: 192.168.3.48
NIC0: Prefix: 24
NIC0: Gateway: 0.0.0.0
NIC0: MAC address: 00:15:17:97:85:ab
TGT0: Target IP address: 192.168.3.36
TGT0: Target Port: 3260
TGT0: Target LUN: 2
TGT0: Target name: iqn.2007-09.jp.ne.peach:isboot1
Boot NIC: em0
Configure IPv4 by NIC0
Attempting to login to iSCSI [...]]]></description>
			<content:encoded><![CDATA[<p>動かないとか思った人すみません。修正版を即上げなおしたので、<br />
不幸にもダウンロードしてしまった人は闇に葬ってください(汗)</p>
<p>それだけではなんですから、FreeBSD 7.2 および 8.1-RC1のISOイメージに<br />
isboot-0.1.2を統合した版を作りましたので、良かったら試してみてください。<br />
作成スクリプトも上げておきますが、自己責任でよろしくお願いします。</p>
<p>IntelのiSCSI機能(iBFT)サポートNICはここで調べてください。<br />
<a href="http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm" target="_blank">http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm</a></p>
<p>起動に成功するとこんな感じのログ画面になります。</p>
<p>Boot NIC: em0 と Boot device: da1 の行にに注目。</p>
<p>この例だと em0 をiBFTで設定されたNIC0を用いて初期化します。<br />
iBFTの仕様上IPv6でもIPv4でも行けるはずですが、IPv6は未確認です。<br />
そしてda1を起動用として認識しているので、ここにインストールすれば、<br />
NICのBIOSから起動して、isboot.koが引き継いで、OSを起動という<br />
流れになります。<br />
最終的にはisboot.koからiscsi_initiator.koに引き継ぎを出来ると<br />
完璧なのだけど、現時点では出来ません。理由は前回書いた通り。</p>
<p>既存環境をiSCSIターゲットに移すにはloader.confで指定するか、<br />
シェルから kldload isboot.ko を実行すると、設定がロードされて<br />
デバイスが使えるようになるのでdump/restoreなどの方法でコピーします。</p>
<p>注意点としては、インストール中に起動NIC（例の場合はem0）にIPアドレス等を<br />
設定しない事です。問題が発生する可能性があります。<br />
isboot.koが作成するTCPコネクションはクリティカルパスですので、<br />
経路消失した場合の動作は保障できません。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
iSCSI boot driver version 0.1.2<br />
IS: Initiator name: iqn.2007-09.jp.ne.peach:pluto<br />
NIC0: IP address: 192.168.3.48<br />
NIC0: Prefix: 24<br />
NIC0: Gateway: 0.0.0.0<br />
NIC0: MAC address: 00:15:17:97:85:ab<br />
TGT0: Target IP address: 192.168.3.36<br />
TGT0: Target Port: 3260<br />
TGT0: Target LUN: 2<br />
TGT0: Target name: iqn.2007-09.jp.ne.peach:isboot1<br />
Boot NIC: em0<br />
Configure IPv4 by NIC0<br />
Attempting to login to iSCSI target and scan all LUNs.<br />
&#8230; cut &#8230;<br />
da0 at isboot0 bus 0 scbus0 target 0 lun 0<br />
da0: &lt;FreeBSD iSCSI DISK 0001&gt; Fixed Direct Access SCSI-5 device<br />
da0: 40960MB (83886080 512 byte sectors: 255H 63S/T 5221C)<br />
da1 at isboot0 bus 0 scbus0 target 0 lun 2<br />
da1: &lt;FreeBSD iSCSI DISK 0001&gt; Fixed Direct Access SCSI-5 device<br />
da1: 10240MB (20971520 512 byte sectors: 255H 63S/T 1305C)<br />
da2 at isboot0 bus 0 scbus0 target 0 lun 3<br />
da2: &lt;FreeBSD iSCSI DISK 0001&gt; Fixed Direct Access SCSI-5 device<br />
da2: 1024MB (2097152 512 byte sectors: 64H 32S/T 1024C)<br />
&#8230; cut &#8230;<br />
Boot device: da1<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>ダウンロードリンク：<br />
<span style="text-decoration: line-through;">http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.1.2.iso</p>
<p>http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.1.2.iso</p>
<p>http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-amd64-isboot-0.1.2.iso</p>
<p>http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-i386-isboot-0.1.2.iso</p>
<p>http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh</span></p>
<p>最新版をご利用ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1197/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>（おそらく）世界初のiBFT対応のFreeBSD起動ドライバの試作品ができました！</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1179</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1179#comments</comments>
		<pubDate>Thu, 24 Jun 2010 17:08:35 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1179</guid>
		<description><![CDATA[これはWindowsで言う所のF6ドライバと言えば一部の人にはわかるでしょうか？
iBFTとは iSCSI Boot Firmware Table の略で見ての通りiSCSIで起動する為の
情報を詰め込んだものです。通常はNICのファームとして搭載されています。
未確認ですがgPXEでも使えるかと。
iBFTの仕様の詳細については Microsoft のサイトを参照してください。
http://www.microsoft.com/whdc/system/platform/firmware/ibft.mspx
Intel の CTデスクトップも対応しています。これについては少し前の
Windows7を起動させるブログエントリも参照してください。
NICのFirmware(BIOS)に情報を持つので、iSCSIターゲットがすでに存在すれば、
簡単にディスクレス構成が作れるようになります。
TFTP, NFS, DHCP, PXEといった特殊な設定は一切不要で、
NICの設定を間違えていなければローカルのSCSIハードディスクと同じように
アクセスすることが可能になります。
isboot.ko のモジュールはiBFTの処理部分および機能限定iSCSIイニシエータ
から成ります。イニシエータは、当初iscsi_initiator.koの機能を利用するのを
前提でのほほんとお手軽に作成してみましたが、カーネルモードからの
効率的なアクセス方法がわからず、結局自作する羽目に。
初回特典?ってことでしばらくはソース内に残して置くのでカーネルランド
開発の初心者がもがいた苦肉の策をご覧ください(笑)
なお、このイニシエータはキューイングも非同期アクセスもしない原始的な
1個づつ処理するタイプです。ただし、istgtで使っているノウハウを投入して
作ってあるので、普通に使う分には大丈夫かと思います。今後時間があれば
少しづつ改良していきます。
とりあえず、KLDを使ってやりたい事は他にあるので、これは通過点でしかないと
思って頂ければ幸いです。
作成方法ですが、上記のとおりiscsi_initiator.koに依存する予定だった為に
一部のデータ保持・処理方法がiscsi-2.2.4のヘッダファイルに依存しています。
iscsi_initiator.koを利用する、しないにかかわらず、ソースファイルを一緒に
展開しておく必要があります。
コンパイルしてできた isboot.ko 自体は単独で利用する事ができますので、
必要なマシンにコピーしても問題ありません。
以下に作成例を示します。
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.1.1.tar.gz
# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make all
# make install
以上で、/boot/kernel/isboot.ko が出来ているはずです。
モジュールとして使うには、/boot/loader.conf に、
isboot_load=&#8221;YES&#8221;
という行を追加するだけでOKです。
あとは、iSCSIターゲットを適当なマシンに作成して、NICのBIOSで
そのiSCSIターゲットの名前、IPアドレス等を設定すれば完了です。
マシンを再起動してNICがiSCSIターゲットを発見できれば、その後の処理は
isboot.koが全自動でよろしくやってくれます。
利用するiSCSIターゲットは特にこだわりがなければ、動作確認の取れている
istgt-20100407 以降をお勧めしておきます。
参考までに、
FreeNAS 0.7.1 5127 安定版 には istgt-20100407 が同梱、
FreeNAS 0.7.2 5226 p3 には istgt-20100606 が同梱されています。
FreeNAS 0.7.2 5226 [...]]]></description>
			<content:encoded><![CDATA[<p>これはWindowsで言う所のF6ドライバと言えば一部の人にはわかるでしょうか？<br />
iBFTとは iSCSI Boot Firmware Table の略で見ての通りiSCSIで起動する為の<br />
情報を詰め込んだものです。通常はNICのファームとして搭載されています。<br />
未確認ですがgPXEでも使えるかと。</p>
<p>iBFTの仕様の詳細については Microsoft のサイトを参照してください。<br />
<a href="http://www.microsoft.com/whdc/system/platform/firmware/ibft.mspx" target="_blank">http://www.microsoft.com/whdc/system/platform/firmware/ibft.mspx</a></p>
<p>Intel の CTデスクトップも対応しています。これについては少し前の<br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1077" target="_blank">Windows7を起動させるブログエントリ</a>も参照してください。<br />
NICのFirmware(BIOS)に情報を持つので、iSCSIターゲットがすでに存在すれば、<br />
簡単にディスクレス構成が作れるようになります。<br />
TFTP, NFS, DHCP, PXEといった特殊な設定は一切不要で、<br />
NICの設定を間違えていなければローカルのSCSIハードディスクと同じように<br />
アクセスすることが可能になります。</p>
<p>isboot.ko のモジュールはiBFTの処理部分および機能限定iSCSIイニシエータ<br />
から成ります。イニシエータは、当初iscsi_initiator.koの機能を利用するのを<br />
前提でのほほんとお手軽に作成してみましたが、カーネルモードからの<br />
効率的なアクセス方法がわからず、結局自作する羽目に。<br />
初回特典?ってことでしばらくはソース内に残して置くのでカーネルランド<br />
開発の初心者がもがいた苦肉の策をご覧ください(笑)</p>
<p>なお、このイニシエータはキューイングも非同期アクセスもしない原始的な<br />
1個づつ処理するタイプです。ただし、istgtで使っているノウハウを投入して<br />
作ってあるので、普通に使う分には大丈夫かと思います。今後時間があれば<br />
少しづつ改良していきます。</p>
<p>とりあえず、KLDを使ってやりたい事は他にあるので、これは通過点でしかないと<br />
思って頂ければ幸いです。</p>
<p>作成方法ですが、上記のとおりiscsi_initiator.koに依存する予定だった為に<br />
一部のデータ保持・処理方法がiscsi-2.2.4のヘッダファイルに依存しています。<br />
iscsi_initiator.koを利用する、しないにかかわらず、ソースファイルを一緒に<br />
展開しておく必要があります。<br />
コンパイルしてできた isboot.ko 自体は単独で利用する事ができますので、<br />
必要なマシンにコピーしても問題ありません。</p>
<p>以下に作成例を示します。</p>
<p># cd /usr/src<br />
# tar xvf /path/to/iscsi-2.2.4.tar.gz<br />
# tar xvf /path/to/isboot-0.1.1.tar.gz</p>
<p># make buildkernel<br />
# make installkernel<br />
or<br />
# cd /usr/src/sys/modules/iscsi/isboot<br />
# make obj<br />
# make depend<br />
# make all<br />
# make install</p>
<p>以上で、/boot/kernel/isboot.ko が出来ているはずです。<br />
モジュールとして使うには、/boot/loader.conf に、</p>
<p>isboot_load=&#8221;YES&#8221;</p>
<p>という行を追加するだけでOKです。<br />
あとは、iSCSIターゲットを適当なマシンに作成して、NICのBIOSで<br />
そのiSCSIターゲットの名前、IPアドレス等を設定すれば完了です。<br />
マシンを再起動してNICがiSCSIターゲットを発見できれば、その後の処理は<br />
isboot.koが全自動でよろしくやってくれます。</p>
<p>利用するiSCSIターゲットは特にこだわりがなければ、動作確認の取れている<br />
istgt-20100407 以降をお勧めしておきます。</p>
<p>参考までに、<br />
FreeNAS 0.7.1 5127 安定版 には istgt-20100407 が同梱、<br />
FreeNAS 0.7.2 5226 p3 には istgt-20100606 が同梱されています。<br />
FreeNAS 0.7.2 5226 p4 には istgt-20100606 + isboot-0.1.1 が同梱されています。</p>
<p>なお、直接インストールを試すにはOSインストーラにisboot.koの組み込みを<br />
する必要があります。現時点でFreeBSD用イメージは作成していません。<br />
FreeNAS 0.7.2 5226 p4 としてどういう感じになるのかと言う<br />
デモストレーション用を作成しましたのでこちらもお試しください。<br />
FreeNAS 0.7.2 5226 p4 をディスクレスのマシンで起動させれば、<br />
インストールから起動まで試す事ができます。インストール後は、<br />
もちろんFreeNASとしての機能を使えます。</p>
<p>isboot.ko が iBFTを発見してシステムに組み込まれると、以下のような<br />
sysctl MIBが参照できるようになります。現在はすべて読み込み専用です。</p>
<p>net.isboot.version<br />
net.isboot.nic<br />
net.isboot.device<br />
hw.ibft.nic_gateway<br />
hw.ibft.nic_prefix<br />
hw.ibft.target_lun<br />
hw.ibft.target_port<br />
hw.ibft.target_address<br />
hw.ibft.target_name<br />
hw.ibft.initiator_address<br />
hw.ibft.initiator_name</p>
<p>sysctl実行例としてはこんな感じになります。<br />
hw.ibftにNICで設定した値が、net.isbootにFreeBSDが割り当てたデバイス名が<br />
見えるようになります。それぞれの値の意味は書くまでもないですよね…。</p>
<p>net.isboot.version: 0.1<br />
net.isboot.nic: em0<br />
net.isboot.device: da3<br />
hw.ibft.nic_gateway: 0.0.0.0<br />
hw.ibft.nic_prefix: 24<br />
hw.ibft.target_lun: 2<br />
hw.ibft.target_port: 3260<br />
hw.ibft.target_address: 192.168.3.36<br />
hw.ibft.target_name: iqn.2007-09.jp.ne.peach:isboot1<br />
hw.ibft.initiator_address: 192.168.3.48<br />
hw.ibft.initiator_name: iqn.2007-09.jp.ne.peach:pluto</p>
<p>さて、気になるパフォーマンスはというと、こんな感じでした。<br />
Intel PRO/1000 PT Server Adapter を使って接続し、リード動作をさせると、</p>
<p>istgt 20100606 + isboot 0.1 ヘッダとデータダイジェスト双方(CRC32C)を有効<br />
# dd if=/dev/da6 of=/dev/null bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 20.452429 secs (52499477 bytes/sec)</p>
<p>istgt 20100606 + isboot 0.1 ヘッダダイジェストのみ有効<br />
# dd if=/dev/da6 of=/dev/null bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 17.684945 secs (60715022 bytes/sec)</p>
<p>istgt 20100606 + isboot 0.1 ダイジェスト無し<br />
# dd if=/dev/da6 of=/dev/null bs=1m count=1k<br />
1024+0 records in<br />
1024+0 records out<br />
1073741824 bytes transferred in 17.508400 secs (61327239 bytes/sec)</p>
<p>見ての通り52MB/s～61MB/s程度がでます。原始的な試作品としてはまずまずの<br />
結果ではないかと思いますがどうでしょうか？</p>
<p>現在の仕様・制限など：<br />
最初の起動や再接続（接続からLUNの検索）に時間がかかることがある。<br />
ifconfig(8),route(8)などで起動NICの値を修正するべきではないです。<br />
ターゲットへのクリティカルパスが落ちるとどうにもならなくなります。<br />
モジュールのアンロード機能を使うと死ぬ事が多いです。<br />
IPv6機能はテストされていません。<br />
DNSアドレスなどiBFTに規定されている値を設定しません。<br />
現時点ではキューイングやCHAP認証機能がついていません。<br />
静的データによる認証ぐらいはやるべきかも？<br />
iSCSIのパラメータの調整がソース修正以外にできません。<br />
ソケット接続が消失時に運悪く実行中だったXPTコマンドがたぶん停止できません。<br />
iscsi_initiator.koとのセッション委譲などができません。<br />
ソースコードがiscsi_initiator.koの構造体に依存しています。<br />
（最初はこんな予定じゃなかったのですよ！まぁ、あきらめた。）<br />
iscontrol(8)みたいな制御コマンドが付属しません。<br />
接続したら最後、マシンをシャットダウンするか5時間ぐらい？経過するまで、<br />
再接続要求を出しまくります。（デフォルトでは2秒の待機時間で9999回）<br />
なにかしら致命的なエラーが出たら停止する可能性はありますが、<br />
その場合はOSごとハングアップするかpanicしている可能性の方が高いです。<br />
例によってドキュメントがまったくありません。構造と値の取扱いについては<br />
RFC3720を見てください。<br />
最後だけど、カーネルランド初心者なので、おかしい部分とかあったり、<br />
こうしたほうが良いとか何かあれば教えてください。</p>
<p>ダウンロードはこちらから<br />
<span style="text-decoration: line-through;">isboot-0.1.1.tar.gz</p>
<p>http://www.peach.ne.jp/archives/isboot/isboot-0.1.1.tar.gz</span></p>
<p><span style="text-decoration: line-through;">isboot-0.1.2.tar.gz</p>
<p>http://www.peach.ne.jp/archives/isboot/isboot-0.1.2.tar.gz</span></p>
<p>最新版を使ってください。</p>
<p>FreeNAS 0.7.2 5226 p4<br />
<a href="http://shell.peach.ne.jp/aoyama/archives/1181" target="_blank">http://shell.peach.ne.jp/aoyama/archives/1181</a></p>
<p>danny さん作のiscsi initiator モジュール:<br />
<a href="ftp://ftp.cs.huji.ac.il/users/danny/freebsd/iscsi-2.2.4.tar.gz" target="_blank">ftp://ftp.cs.huji.ac.il/users/danny/freebsd/iscsi-2.2.4.tar.gz</a></p>
<p>※補足※公開前にバグが出てしまった為に0.1から0.1.1にあがりました。</p>
<p>追記：<br />
i386版でloader.confから読むとクラッシュする問題があったため<br />
isboot-0.1.2に差し替えました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1179/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>カーネルランドってなに？</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1175</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1175#comments</comments>
		<pubDate>Sun, 20 Jun 2010 15:25:26 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1175</guid>
		<description><![CDATA[今回、初めてKLDなモジュールを作成しているわけですが、
Load/Unloadの機能とか便利だけど作るのが大変です。。。
ええ、Unloadするには当然メモリ参照を０にする必要があるわけで、
変なスレッドが掴んでいると即パニック＝サーバ再起動になる。
これは当然の話ではあるけども。
おかげでuptime五分ぐらいでパニック再起動が続く。
あ、もちろんロジック自体はユーザランドで仮作成して仮想マシンで
検証しています。
そんなわけで、
１．KLDモジュールの試作。
２．とある機能の実験。
３．某所からの要望(謎)。
などを少しづつ進めています。
カーネルランドの進捗は基本パーツ（例外処理を除く）の移植完了で４割程度
といった感じですかね。このノウハウはistgtの今後の展開にも役立つと思う
のでじっくり取り組んでみたいところ。
来月末ぐらいには実験リリースできるようにがんばりたい。
]]></description>
			<content:encoded><![CDATA[<p>今回、初めてKLDなモジュールを作成しているわけですが、<br />
Load/Unloadの機能とか便利だけど作るのが大変です。。。<br />
ええ、Unloadするには当然メモリ参照を０にする必要があるわけで、<br />
変なスレッドが掴んでいると即パニック＝サーバ再起動になる。<br />
これは当然の話ではあるけども。<br />
おかげでuptime五分ぐらいでパニック再起動が続く。<br />
あ、もちろんロジック自体はユーザランドで仮作成して仮想マシンで<br />
検証しています。</p>
<p>そんなわけで、<br />
１．KLDモジュールの試作。<br />
２．とある機能の実験。<br />
３．某所からの要望(謎)。<br />
などを少しづつ進めています。</p>
<p>カーネルランドの進捗は基本パーツ（例外処理を除く）の移植完了で４割程度<br />
といった感じですかね。このノウハウはistgtの今後の展開にも役立つと思う<br />
のでじっくり取り組んでみたいところ。<br />
来月末ぐらいには実験リリースできるようにがんばりたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1175/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSDで物理メモリを参照する方法</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1170</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1170#comments</comments>
		<pubDate>Tue, 15 Jun 2010 15:47:35 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1170</guid>
		<description><![CDATA[任意のページを参照する方法はよくわかりません(汗)
下位メモリ（BIOSがある領域）は machine/vmparam.h にある KERNBASE から
直接参照できるようです。
たとえば、paddrに物理アドレスのオフセットが入っていると仮定すると、
vaddr = paddr + KERNBASE
これで vaddr にポインタでアクセスできるアドレスが返ってくるようです。
（実際はvaddrの型にキャストが必要でしょう）
逆に仮想アドレスから戻す場合は KERNBASE を引いて、uintptr_t/intptr_tで
キャストすると物理オフセットになります。
適当な例：
#include &#60;sys/types.h&#62;
#include &#60;vm/vm.h&#62;
#include &#60;vm/pmap.h&#62;
#include &#60;machine/vmparam.h&#62;

uint32_t paddr;
uint8_t *vaddr;

paddr = 0x80000;
vaddr = (uint8_t *)(paddr + KERNBASE);
paddr = (uint32_t)(uintptr_t)(vaddr - KERNBASE);
なぜこんな事をやっているかと言えば、FreeBSDのカーネルモジュールを
作ってみようと思ったからなのです。こちらは、
# man module
で必要な情報が得られますし、/usr/share/examples/kld/cdev/module に
サンプルも入っているので作成には困らないと思います。
]]></description>
			<content:encoded><![CDATA[<p>任意のページを参照する方法はよくわかりません(汗)<br />
下位メモリ（BIOSがある領域）は machine/vmparam.h にある KERNBASE から<br />
直接参照できるようです。<br />
たとえば、paddrに物理アドレスのオフセットが入っていると仮定すると、</p>
<p>vaddr = paddr + KERNBASE</p>
<p>これで vaddr にポインタでアクセスできるアドレスが返ってくるようです。<br />
（実際はvaddrの型にキャストが必要でしょう）<br />
逆に仮想アドレスから戻す場合は KERNBASE を引いて、uintptr_t/intptr_tで<br />
キャストすると物理オフセットになります。</p>
<p>適当な例：</p>
<pre>#include &lt;sys/types.h&gt;
#include &lt;vm/vm.h&gt;
#include &lt;vm/pmap.h&gt;
#include &lt;machine/vmparam.h&gt;

uint32_t paddr;
uint8_t *vaddr;

paddr = 0x80000;
vaddr = (uint8_t *)(paddr + KERNBASE);
paddr = (uint32_t)(uintptr_t)(vaddr - KERNBASE);</pre>
<p>なぜこんな事をやっているかと言えば、FreeBSDのカーネルモジュールを<br />
作ってみようと思ったからなのです。こちらは、</p>
<pre># man module</pre>
<p>で必要な情報が得られますし、/usr/share/examples/kld/cdev/module に<br />
サンプルも入っているので作成には困らないと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1170/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100606版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1136</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1136#comments</comments>
		<pubDate>Sun, 06 Jun 2010 09:11:41 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1136</guid>
		<description><![CDATA[更新＞istgt 2010/07/07版
ロックの衝突による速度低下を低減する為にロック範囲を変更しました。
単一のターゲットではまったく効果ありませんが、複数ターゲットを
設定している場合は、衝突回避が期待できます。
iSCSIパラメータをターゲット毎に指定できるようになりました。
省略時は従来通りグローバル設定が適用されます。
なお、一部のキーは機能未実装のため現時点では設定変更できません。
新規のコンフィグキー(Global)：
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0
新規のコンフィグキー(LogicalUnit)：
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0
istgt (tarball): istgt-20010606.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100606.tar.gz
# cd istgt-20100606
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100606.tar.gz) = cdd56ef75a2b03eeed694f73811dc720
SHA256 (istgt-20100606.tar.gz) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1223" target="_blank">更新＞istgt 2010/07/07版</a></p>
<p>ロックの衝突による速度低下を低減する為にロック範囲を変更しました。<br />
単一のターゲットではまったく効果ありませんが、複数ターゲットを<br />
設定している場合は、衝突回避が期待できます。</p>
<p>iSCSIパラメータをターゲット毎に指定できるようになりました。<br />
省略時は従来通りグローバル設定が適用されます。<br />
なお、一部のキーは機能未実装のため現時点では設定変更できません。</p>
<p>新規のコンフィグキー(Global)：<br />
  InitialR2T Yes<br />
  ImmediateData Yes<br />
  DataPDUInOrder Yes<br />
  DataSequenceInOrder Yes<br />
  ErrorRecoveryLevel 0</p>
<p>新規のコンフィグキー(LogicalUnit)：<br />
  MaxOutstandingR2T 16<br />
  DefaultTime2Wait 2<br />
  DefaultTime2Retain 60<br />
  FirstBurstLength 262144<br />
  MaxBurstLength 1048576<br />
  MaxRecvDataSegmentLength 262144<br />
  InitialR2T Yes<br />
  ImmediateData Yes<br />
  DataPDUInOrder Yes<br />
  DataSequenceInOrder Yes<br />
  ErrorRecoveryLevel 0</p>
<p>istgt (tarball):<a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100606.tar.gz" target="_blank"> istgt-20010606.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100606.tar.gz
# cd istgt-20100606
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100606.tar.gz) = cdd56ef75a2b03eeed694f73811dc720<br />
SHA256 (istgt-20100606.tar.gz) = 42cafd6560bb1e99465c592f45bc8fb2333f76320d2d343162ecd5dc94218e5e</p>
<p>主な修正点：<br />
グローバルの状態ロックをターゲット毎に変更<br />
各ターゲット毎にローカル設定を持てるように設定を追加<br />
InitialR2T, ImmediateData, DataPDUInOrder, DataSequenceInOrder,<br />
ErrorRecoveryLevelの設定を追加<br />
LUNリセット時にファイルの再オープンをするように変更</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1136/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100525版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1084</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1084#comments</comments>
		<pubDate>Tue, 25 May 2010 15:34:19 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1084</guid>
		<description><![CDATA[更新＞istgt 2010/06/06版
先日の版はWindows7がインストールできませんでした。
報告のあった問題と共に修正しました。Portsもすぐに更新をかけます。
20100522をインストールしてしまった場合は、
お手数ですがアップグレードを行うようにしてください。
istgt (tarball): istgt-20010525.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100525.tar.gz
# cd istgt-20100525
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100525.tar.gz) = ccdc37cb3d9b1dc6b8fe9411e824f015
SHA256 (istgt-20100525.tar.gz) = 3445d1b68b49535d849b83f4b542d05bd2fed32d2066836e39b8ab8dff8a66c1
主な修正点：
特定条件下でR2Tが送信されない問題を修正しました。
メモリ解放間違いを修正しました。
エラー処理が抜けていたのを追加しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1136" target="_self">更新＞istgt 2010/06/06版</a></p>
<p>先日の版はWindows7がインストールできませんでした。<br />
報告のあった問題と共に修正しました。Portsもすぐに更新をかけます。<br />
20100522をインストールしてしまった場合は、<br />
お手数ですがアップグレードを行うようにしてください。</p>
<p>istgt (tarball): <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100525.tar.gz" target="_blank">istgt-20010525.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100525.tar.gz
# cd istgt-20100525
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100525.tar.gz) = ccdc37cb3d9b1dc6b8fe9411e824f015<br />
SHA256 (istgt-20100525.tar.gz) = 3445d1b68b49535d849b83f4b542d05bd2fed32d2066836e39b8ab8dff8a66c1</p>
<p>主な修正点：<br />
特定条件下でR2Tが送信されない問題を修正しました。<br />
メモリ解放間違いを修正しました。<br />
エラー処理が抜けていたのを追加しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1084/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows7をistgtで作成したiSCSIターゲットに直接インストールする</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1077</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1077#comments</comments>
		<pubDate>Mon, 24 May 2010 17:51:24 +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[Windows7]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1077</guid>
		<description><![CDATA[先日の結果からIntelのCTデスクトップアダプタでもWS2008がiSCSI起動可能
であることが実証できたので今度はWindows7をインストールしてみました。
今回は20100522版のターゲットを使って検証しました。
利用したターゲットの主な設定は以下の通り。
[Global]
  MaxSessions 16
  MaxConnections 4
  MaxR2T 256
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144
[LogicalUnit80]
  TargetName &#8220;iqn.2007-09.jp.ne.peach:artemis-boot&#8221;
  Mapping PortalGroup1 InitiatorGroup80
  AuthMethod Auto
  UseDigest Auto
  UnitType Disk
  QueueDepth 64
  LUN0 Storage /tank/isboot/artemis-boot 64GB
結論から言うと、インストールできません。（すみません・・・
追加したR2Tの処理にバグがありました。
TL&#62;FB+MBの特殊な条件下で追加のR2Tを送信しないため、データ受信待ちが
タイムアウトしてしまいます。＜再処理になりますが同じ場所で同様に略
不幸中の幸い？（皮肉にも？）、タイムアウトのエラー処理が正しく実行できる
と言う事が実証できたわけですが。
とりあえずの修正は以下のようにすると動きます。
Index: src/istgt_iscsi.c
===================================================================
--- src/istgt_iscsi.c   (revision 36)
+++ src/istgt_iscsi.c   (working copy)
@@ -4016,6 +4016,10 @@
                                ISTGT_WARNLOG("pending_pdus &#62; 0\n");
                        }
                        if (offset &#60; transfer_len) {
+                               [...]]]></description>
			<content:encoded><![CDATA[<p>先日の結果からIntelのCTデスクトップアダプタでもWS2008がiSCSI起動可能<br />
であることが実証できたので今度はWindows7をインストールしてみました。<br />
今回は20100522版のターゲットを使って検証しました。<br />
利用したターゲットの主な設定は以下の通り。</p>
<p>[Global]<br />
  MaxSessions 16<br />
  MaxConnections 4<br />
  MaxR2T 256<br />
  MaxOutstandingR2T 16<br />
  DefaultTime2Wait 2<br />
  DefaultTime2Retain 60<br />
  FirstBurstLength 262144<br />
  MaxBurstLength 1048576<br />
  MaxRecvDataSegmentLength 262144</p>
<p>[LogicalUnit80]<br />
  TargetName &#8220;iqn.2007-09.jp.ne.peach:artemis-boot&#8221;<br />
  Mapping PortalGroup1 InitiatorGroup80<br />
  AuthMethod Auto<br />
  UseDigest Auto<br />
  UnitType Disk<br />
  QueueDepth 64<br />
  LUN0 Storage /tank/isboot/artemis-boot 64GB</p>
<p>結論から言うと、インストールできません。（すみません・・・<br />
追加したR2Tの処理にバグがありました。<br />
TL&gt;FB+MBの特殊な条件下で追加のR2Tを送信しないため、データ受信待ちが<br />
タイムアウトしてしまいます。＜再処理になりますが同じ場所で同様に略<br />
不幸中の幸い？（皮肉にも？）、タイムアウトのエラー処理が正しく実行できる<br />
と言う事が実証できたわけですが。</p>
<p>とりあえずの修正は以下のようにすると動きます。</p>
<pre id="ex"><code>Index: src/istgt_iscsi.c
===================================================================
--- src/istgt_iscsi.c   (revision 36)
+++ src/istgt_iscsi.c   (working copy)
@@ -4016,6 +4016,10 @@
                                ISTGT_WARNLOG("pending_pdus &gt; 0\n");
                        }
                        if (offset &lt; transfer_len) {
+                               if (offset &gt;= (first_burst_len + max_burst_len)) {
+                                       /* need more data */
+                                       r2t_flag = 0;
+                               }
                                len = DMIN32(max_burst_len,
                                    (transfer_len - offset));
                                memset(&amp;data_pdu.bhs, 0, ISCSI_BHS_LEN);
</code></pre>
<p>ベンチマークの結果は以下の通りで、ほぼ期待通りのピーク性能が検証できました。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/w7-ct00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1078" title="w7-ct00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/w7-ct00-150x136.jpg" alt="" width="150" height="136" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/w7-ct01.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1079" title="w7-ct01" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/w7-ct01-150x136.jpg" alt="" width="150" height="136" /></a><br />
（20100522＋パッチとW7による性能）</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1029" title="ws2k8r2-ct00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct00-150x134.jpg" alt="" width="150" height="134" /></a><br />
（参考：旧版とWS2008R2の値）</p>
<p>というわけで、今後の事もあるので、作業用マシンをXPからW7に移行しようと思いました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1077/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100522版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1066</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1066#comments</comments>
		<pubDate>Sat, 22 May 2010 12:03:56 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1066</guid>
		<description><![CDATA[更新＞istgt 2010/05/25版
認証なしを強制するオプションを追加しました。
これによりCHAPのみを要求するイニシエータとの接続を拒否します。
また、CHAPありなしのどちらでもいい場合は認証なしを選択します。
その他、細かい調整を行いました。
機能追加したコンフィグキー：
  DiscoveryAuthMethod None
  AuthMethod None
istgt (tarball): istgt-20010522.tar.gz
修正版をご利用ください。
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100522.tar.gz
# cd istgt-20100522
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100522.tar.gz) = a262d060e9edf6a06f0573233df1a8d4
SHA256 (istgt-20100522.tar.gz) = 61345f7b373706180f89834bc54ff4bbd9ae850a03fb7888e008aaccd93c3aff
主な修正点：
認証なしを強制するオプションを追加しました。
readキャッシュの状態をMODESENSEで返すようになりました。
追記：
ChangeLog.jpを更新するのを忘れました…以下を修正点に追加します。
8KB, 16KB, 32KB, 64KB, 128KBの論理ブロック長を追加
とりあえず、動作には影響しないのでこの版でPortsを更新します。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1084" target="_self">更新＞istgt 2010/05/25版</a></p>
<p>認証なしを強制するオプションを追加しました。<br />
これによりCHAPのみを要求するイニシエータとの接続を拒否します。<br />
また、CHAPありなしのどちらでもいい場合は認証なしを選択します。<br />
その他、細かい調整を行いました。</p>
<p>機能追加したコンフィグキー：<br />
  DiscoveryAuthMethod None<br />
  AuthMethod None</p>
<p><del datetime="2010-05-25T15:35:17+00:00">istgt (tarball): istgt-20010522.tar.gz<br />
</del>修正版をご利用ください。</p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100522.tar.gz
# cd istgt-20100522
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100522.tar.gz) = a262d060e9edf6a06f0573233df1a8d4<br />
SHA256 (istgt-20100522.tar.gz) = 61345f7b373706180f89834bc54ff4bbd9ae850a03fb7888e008aaccd93c3aff</p>
<p>主な修正点：<br />
認証なしを強制するオプションを追加しました。<br />
readキャッシュの状態をMODESENSEで返すようになりました。</p>
<p>追記：<br />
ChangeLog.jpを更新するのを忘れました…以下を修正点に追加します。<br />
8KB, 16KB, 32KB, 64KB, 128KBの論理ブロック長を追加<br />
とりあえず、動作には影響しないのでこの版でPortsを更新します。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1066/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100521版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1061</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1061#comments</comments>
		<pubDate>Fri, 21 May 2010 16:24:12 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1061</guid>
		<description><![CDATA[更新＞istgt 2010/05/22版
先日の版ではコンパイル時オプションで有効・無効を切り替えできましたが、
設定ファイルで送信するR2Tの最大数を制限できるように修正しました。
最大数＝０で無効になり従来通りの処理になります。
実際に送信できる数は、QueueDepthの設定とイニシエータのMaxCmdSNおよび
ExpCmdSNに依存します。
また、8KB以内の小さい書き込みコマンドに対してメモリ割り当てを
毎回行って断片化するのを避ける為に一回で確保するようになりました。
小さいサイズの高速化に関しては落ち着いてから試そうと思っています。
新規のコンフィグキー：
  MaxR2T 32
istgt (tarball): istgt-20010521.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100521.tar.gz
# cd istgt-20100521
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100521.tar.gz) = 5d9939c5df13db68ad852a96620bb8f3
SHA256 (istgt-20100521.tar.gz) = 8a4c46c45eceb956ef7d2927f8c3d4cc8d522014738bfa8921ef4da91cea449d
主な修正点：
WRITEコマンドで先送りするR2T最大数の設定を追加しました。
エラー時にイニシエータ及びターゲットポートを表示するようになりました。
8KB以下のショートパケットにデータ領域を作成しないようになりました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1066" target="_self">更新＞istgt 2010/05/22版</a></p>
<p>先日の版ではコンパイル時オプションで有効・無効を切り替えできましたが、<br />
設定ファイルで送信するR2Tの最大数を制限できるように修正しました。<br />
最大数＝０で無効になり従来通りの処理になります。<br />
実際に送信できる数は、QueueDepthの設定とイニシエータのMaxCmdSNおよび<br />
ExpCmdSNに依存します。</p>
<p>また、8KB以内の小さい書き込みコマンドに対してメモリ割り当てを<br />
毎回行って断片化するのを避ける為に一回で確保するようになりました。<br />
小さいサイズの高速化に関しては落ち着いてから試そうと思っています。</p>
<p>新規のコンフィグキー：<br />
  MaxR2T 32</p>
<p>istgt (tarball): <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100521.tar.gz" target="_blank">istgt-20010521.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100521.tar.gz
# cd istgt-20100521
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100521.tar.gz) = 5d9939c5df13db68ad852a96620bb8f3<br />
SHA256 (istgt-20100521.tar.gz) = 8a4c46c45eceb956ef7d2927f8c3d4cc8d522014738bfa8921ef4da91cea449d</p>
<p>主な修正点：<br />
WRITEコマンドで先送りするR2T最大数の設定を追加しました。<br />
エラー時にイニシエータ及びターゲットポートを表示するようになりました。<br />
8KB以下のショートパケットにデータ領域を作成しないようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1061/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100516版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1045</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1045#comments</comments>
		<pubDate>Sun, 16 May 2010 10:10:15 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1045</guid>
		<description><![CDATA[更新＞istgt 2010/05/21版
先のCTアダプタの結果が残念なので・・・効率アップを図ってみました。
また、ESXiでの利用を想定してデフォルトの値を修正してみました。
（FirstBurstLength 64K =&#62; 256K, MaxBurstLength 256K =&#62; 1M）
通常はキューイングした後に送信されるR2Tコマンドを、
キューに入れる前に送信して後からデータPDUを回収する
という方法を取ってみました。
補足：
キューの深さと同数のライトバッファを用意するという意味です。
結果は以下のSS通りで、キャッシュが利用される領域において
15%以上の高速化ができました。
実際の速度は利用するエクステントの速度に制限されるとはいえ、
シングルパスのシーケンシャルで100MB/sを達成できたのはよかった。
デュアルパスでラウンドロビンするとリード190MB/s、ライト170MB/sと
単体HDDではおそらく処理が間に合わない程の速度が出ます。
   
（クリックで拡大）
さて、こうやって見ると…はい、ショートI/Oの性能が悪いですね。
こうしてさらに深みにはまっていくと。
あまりにも基本すぎて今まで書いていませんでしたけど、
マルチスレッドで動くのが前提なのでシングルコアのCPUの場合は、
ここで期待しているような値が出ることはないと思います。
※ラウンドロビンは処理データ(R/W)が偏って期待通りに行かない事があります:-)
新規のコンフィグキー：
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
修正したコンフィグキー：
  FirstBurstLength 262144
  MaxBurstLength 1048576
istgt (tarball): istgt-20010516.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100516.tar.gz
# cd istgt-20100516
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100516.tar.gz) = 358eec46c4cddc3a5944a49f96509e68
SHA256 (istgt-20100516.tar.gz) = fdb3d82d74d09bfc06204158147c8c7b63e642f67b83e74527875db3424e663e
主な修正点：
CHAPの乱数生成に arc4random を利用するようになりました。
シーケンシャル書き込みの処理を改善しました。
MaxOutstandingR2T, DefaultTime2Wait, DefaultTime2Retain が設定ファイルで変更可能になりました。
デフォルトの設定値を変更しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1061" target="_self">更新＞istgt 2010/05/21版</a></p>
<p><a href="http://shell.peach.ne.jp/aoyama/archives/1028" target="_blank">先のCTアダプタの結果</a>が残念なので・・・効率アップを図ってみました。<br />
また、ESXiでの利用を想定してデフォルトの値を修正してみました。<br />
（FirstBurstLength 64K =&gt; 256K, MaxBurstLength 256K =&gt; 1M）</p>
<p>通常はキューイングした後に送信されるR2Tコマンドを、<br />
キューに入れる前に送信して後からデータPDUを回収する<br />
という方法を取ってみました。</p>
<p>補足：<br />
キューの深さと同数のライトバッファを用意するという意味です。</p>
<p>結果は以下のSS通りで、キャッシュが利用される領域において<br />
15%以上の高速化ができました。<br />
実際の速度は利用するエクステントの速度に制限されるとはいえ、<br />
シングルパスのシーケンシャルで100MB/sを達成できたのはよかった。<br />
デュアルパスでラウンドロビンするとリード190MB/s、ライト170MB/sと<br />
単体HDDではおそらく処理が間に合わない程の速度が出ます。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt27.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1046" title="istgt27" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt27-150x136.jpg" alt="" width="150" height="136" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt28.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1047" title="istgt28" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt28-150x136.jpg" alt="" width="150" height="136" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt29.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1048" title="istgt29" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt29-150x136.jpg" alt="" width="150" height="136" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt30.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1049" title="istgt30" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/istgt30-150x136.jpg" alt="" width="150" height="136" /></a><br />
（クリックで拡大）</p>
<p>さて、こうやって見ると…はい、ショートI/Oの性能が悪いですね。<br />
こうしてさらに深みにはまっていくと。</p>
<p>あまりにも基本すぎて今まで書いていませんでしたけど、<br />
マルチスレッドで動くのが前提なのでシングルコアのCPUの場合は、<br />
ここで期待しているような値が出ることはないと思います。</p>
<p>※ラウンドロビンは処理データ(R/W)が偏って期待通りに行かない事があります:-)</p>
<p>新規のコンフィグキー：<br />
  MaxOutstandingR2T 16<br />
  DefaultTime2Wait 2<br />
  DefaultTime2Retain 60</p>
<p>修正したコンフィグキー：<br />
  FirstBurstLength 262144<br />
  MaxBurstLength 1048576</p>
<p>istgt (tarball): <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100516.tar.gz" target="_blank">istgt-20010516.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100516.tar.gz
# cd istgt-20100516
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100516.tar.gz) = 358eec46c4cddc3a5944a49f96509e68<br />
SHA256 (istgt-20100516.tar.gz) = fdb3d82d74d09bfc06204158147c8c7b63e642f67b83e74527875db3424e663e</p>
<p>主な修正点：<br />
CHAPの乱数生成に arc4random を利用するようになりました。<br />
シーケンシャル書き込みの処理を改善しました。<br />
MaxOutstandingR2T, DefaultTime2Wait, DefaultTime2Retain が設定ファイルで変更可能になりました。<br />
デフォルトの設定値を変更しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1045/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Intel Gigabit CT Desktop Adapter は iSCSI Remote Boot でサポートされている</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1028</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1028#comments</comments>
		<pubDate>Mon, 03 May 2010 13:51:25 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1028</guid>
		<description><![CDATA[システムワークスさんのページに書かれていた一言にびっくりしました。
製品情報およびiSCSI Remote Bootサポート製品はこちらから
http://www.intel.com/products/desktop/adapters/gigabit-ct/gigabit-ct-overview.htm
http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm
私は PT Server Adapter で満足していたので CT Desktop Adapter には
まったく興味がなかったのですがiSCSIブートできるとなれば話は別です^^;
さっそく Intel CT Desktop Adapter を購入して確認してみました。
ファームはインテルのサイトから15.2版をダウンロードして書き込みました。
iSCSIファームバージョンは2.5.12でした。
起動試験はFreeNASの確認に使っている NEC Express5800/110Ge
(GIGABYTE GA-5YASV-RH)、ASUS P5K、ASUS M2A-VM、MSI K9NGM3-FIH
の4台で行いました。
OSはWindows Server 2008 R2を利用しました。
iSCSIターゲットはいつものistgt 20100407 on FreeBSD 7.3(ZFS/RAIDZ2)に
40GBの領域をQueueDepth 64で作成しました。
M2A-VM はオプションROMのBIOSが起動しませんでした。
これに限らず、マザーによっては拡張カード上にあるRAID BIOSなどが
起動しない事はありますのでご注意ください。
以下にP5Kの時のスクリーンショットを掲載します。
 
（クリックで拡大）
うおー、予想以上に早いですね。
むしろシーケンシャル書き込みが遅いistgtの欠点がばればれではないか･･･。
理由はおそらくコマンド(と書き込みデータ先頭64KB)のキューイングは行うけど、
後続データのキューイングは現時点ではできないせいです。
私自身がリード＞ライトな使い方が多い上にシーケンシャル書き込みを
それほど必要としていないのであまり気にしていなかったけど、
CT Desktop Adapterで使えるとなると改善したほうが良いですよね。きっと。
補足：
試験に使ったZFSプールは以下のように80%超の利用率であるので、
新品の場合はもっと速度が出ると推測されます。
[root@hera ~]# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
tank  2.73T  2.30T   435G    84%  ONLINE  -
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.systemworks.co.jp/?p=373" target="_blank">システムワークスさんのページ</a>に書かれていた一言にびっくりしました。</p>
<p>製品情報およびiSCSI Remote Bootサポート製品はこちらから<br />
<a href="http://www.intel.com/products/desktop/adapters/gigabit-ct/gigabit-ct-overview.htm" target="_blank">http://www.intel.com/products/desktop/adapters/gigabit-ct/gigabit-ct-overview.htm</a><br />
<a href="http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm" target="_blank">http://www.intel.com/support/network/adapter/pro100/sb/CS-028681.htm</a></p>
<p>私は PT Server Adapter で満足していたので CT Desktop Adapter には<br />
まったく興味がなかったのですがiSCSIブートできるとなれば話は別です^^;</p>
<p>さっそく Intel CT Desktop Adapter を購入して確認してみました。<br />
ファームはインテルのサイトから15.2版をダウンロードして書き込みました。<br />
iSCSIファームバージョンは2.5.12でした。</p>
<p>起動試験はFreeNASの確認に使っている NEC Express5800/110Ge<br />
(GIGABYTE GA-5YASV-RH)、ASUS P5K、ASUS M2A-VM、MSI K9NGM3-FIH<br />
の4台で行いました。</p>
<p>OSはWindows Server 2008 R2を利用しました。<br />
iSCSIターゲットはいつものistgt 20100407 on FreeBSD 7.3(ZFS/RAIDZ2)に<br />
40GBの領域をQueueDepth 64で作成しました。</p>
<p>M2A-VM はオプションROMのBIOSが起動しませんでした。<br />
これに限らず、マザーによっては拡張カード上にあるRAID BIOSなどが<br />
起動しない事はありますのでご注意ください。</p>
<p>以下にP5Kの時のスクリーンショットを掲載します。</p>
<p><a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct00.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1029" title="ws2k8r2-ct00" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct00-150x134.jpg" alt="" width="150" height="134" /></a> <a href="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct01.jpg" target="_blank"><img class="alignnone size-thumbnail wp-image-1030" title="ws2k8r2-ct01" src="http://shell.peach.ne.jp/~aoyama/wordpress/wp-content/uploads/2010/05/ws2k8r2-ct01-150x106.jpg" alt="" width="150" height="106" /></a><br />
（クリックで拡大）</p>
<p>うおー、予想以上に早いですね。<br />
むしろシーケンシャル書き込みが遅いistgtの欠点がばればれではないか･･･。<br />
理由はおそらくコマンド(と書き込みデータ先頭64KB)のキューイングは行うけど、<br />
後続データのキューイングは現時点ではできないせいです。</p>
<p>私自身がリード＞ライトな使い方が多い上にシーケンシャル書き込みを<br />
それほど必要としていないのであまり気にしていなかったけど、<br />
CT Desktop Adapterで使えるとなると改善したほうが良いですよね。きっと。</p>
<p>補足：<br />
試験に使ったZFSプールは以下のように80%超の利用率であるので、<br />
新品の場合はもっと速度が出ると推測されます。</p>
<pre id="ex"><code>[root@hera ~]# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
tank  2.73T  2.30T   435G    84%  ONLINE  -</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1028/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeNAS 0.7.2 (FreeBSD) で WD20EARS (Advanced Format) を使う (MBR用)</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1010</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1010#comments</comments>
		<pubDate>Fri, 30 Apr 2010 05:29:44 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Advanced Format]]></category>
		<category><![CDATA[FreeNAS]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1010</guid>
		<description><![CDATA[単一MBRパーティションで作成する場合は、fdiskでデフォルトスライスを
作成してbsdlabelで調整します。
# fdisk -BI /dev/ad4
# bsdlabel -w /dev/ad4s1
# fdisk -s /dev/ad4
/dev/ad4: 3876021 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:          63  3907029105 0xa5 0x80
# bsdlabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
# [...]]]></description>
			<content:encoded><![CDATA[<p>単一MBRパーティションで作成する場合は、fdiskでデフォルトスライスを<br />
作成してbsdlabelで調整します。</p>
<pre id="ex"><code># fdisk -BI /dev/ad4
# bsdlabel -w /dev/ad4s1</code></pre>
<pre id="ex"><code># fdisk -s /dev/ad4
/dev/ad4: 3876021 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:          63  3907029105 0xa5 0x80
# bsdlabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 3907029089       16    unused        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
&nbsp;</code></pre>
<p>この段階で上記のような設定になります。63セクタがパーティション開始、<br />
BSDパーティションが16セクタから（先頭から見ると63+16=79セクタ目）<br />
になります。<br />
4Kセクタに合わせるために開始セクタを+1(80セクタ/4K=512&#215;8/8&#215;10)して、<br />
サイズを-1します。fstypeに4.2BSDを指定します。</p>
<p>※ fsize bsizeは指定しなくても大丈夫なようです。newfsで指定するので。</p>
<pre id="ex"><code># bsdlabel -e /dev/ad4s1</code></pre>
<p>で直接ディスク上を編集するか、一旦ファイルに落として編集後にそれを<br />
書き込み(リストア)します。</p>
<pre id="ex"><code># bsdlabel /dev/ad4s1 > label.txt
# EDIT label.txt
# bsdlabel -R /dev/ad4s1 label.txt</code></pre>
<p>今回はファイルで行いました。書き込むファイルはこんな感じ。</p>
<pre id="ex"><code># cat label.txt
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 3907029088       17    4.2BSD        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
&nbsp;</code></pre>
<p>できたらそのパーティションに対して書き込みテストを実行してみます。</p>
<pre id="ex"><code># dd if=/dev/zero of=/dev/ad4s1a bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 93.156833 secs (92209388 bytes/sec)
&nbsp;</code></pre>
<p>満足いく結果になったら4Kフラグメントでフォーマットします。</p>
<pre id="ex"><code># newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1a</code></pre>
<p>最後にラベルが書き込み出来ないと文句を言われます。<br />
が、無視します。（理由はわからない）<br />
同様に書き込みテストを行います。</p>
<pre id="ex"><code># mkdir /mnt2
# mount /dev/ad4s1a /mnt2
# dd if=/dev/zero of=/mnt2/test.data bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 91.816939 secs (93555009 bytes/sec)
&nbsp;</code></pre>
<p>複数のパーティションを作成したい場合は、最初のoffset以外に * を指定して<br />
自動計算させる事ができます。<br />
以下の例は /に512MB, swapに4GB, /varに4GB, /tmpに1GB, /usrに20GB,<br />
残りを/homeに割り当てようと意図した構成です。</p>
<pre id="ex"><code># cat label.txt
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:     512M       17    4.2BSD        0     0
  b:       4G        *      swap        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
  d:       4G        *    4.2BSD        0     0
  e:       1G        *    4.2BSD        0     0
  f:      20G        *    4.2BSD        0     0
  g:        *        *    4.2BSD        0     0

# bsdlabel -R /dev/ad4s1 label.txt
# bsdlabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  1048576       17    4.2BSD        0     0     0
  b:  8388608  1048593      swap
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
  d:  8388608  9437201    4.2BSD        0     0     0
  e:  2097152 17825809    4.2BSD        0     0     0
  f: 41943040 19922961    4.2BSD        0     0     0
  g: 3845163104 61866001    4.2BSD        0     0     0
&nbsp;</code></pre>
<p>作成できたら、swap以外のパーティションにnewfsを実行します。</p>
<pre id="ex"><code># newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1a
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1d
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1e
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1f
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1g
</code></pre>
<p>補足：<br />
通常の/パーティションはSoftupdateを有効にしないので、<br />
newfsで-Uを付けないか、すでに作成した場合は、</p>
<pre id="ex"><code># tunefs -n disable /dev/ad4s1a</code></pre>
<p>で無効にしたほうが良いかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1010/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeNAS 0.7.2 (FreeBSD) で WD20EARS (Advanced Format) を使う (GPT用)</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/1003</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/1003#comments</comments>
		<pubDate>Fri, 30 Apr 2010 02:28:23 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Advanced Format]]></category>
		<category><![CDATA[FreeNAS]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=1003</guid>
		<description><![CDATA[よくよく考えたら、VT6421AにつなぐためにOPT1で1.5Gbpsに制限していたことを失念していました。
気を取り直して、3Gbpsに戻して、接続先を玄人志向のSATA3I2-PCIeに変更してやり直しました。
（テスト書き込みサイズは前回と同じ8GBです。）
なお、ベンチマークには影響しないと思いますが以下のケースを利用しています。
EZ-RC01-BK トレイ不要リムーバブルケース
gpt コマンドを使って開始セクタを4K(512&#215;8)の倍数である40に調整します。
そして4Kフラグメントでフォーマットします。
# gpt destroy /dev/ad4
# gpt create /dev/ad4
# gpt add -b 40 -s 3907029056 /dev/ad4
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4p1
# gpt show /dev/ad4
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6
          40  3907029056      [...]]]></description>
			<content:encoded><![CDATA[<p>よくよく考えたら、VT6421AにつなぐためにOPT1で1.5Gbpsに制限していたことを失念していました。<br />
気を取り直して、3Gbpsに戻して、接続先を<a href="http://www.kuroutoshikou.com/modules/display/?iid=1420" target="_blank">玄人志向のSATA3I2-PCIe</a>に変更してやり直しました。<br />
（テスト書き込みサイズは前回と同じ8GBです。）<br />
なお、ベンチマークには影響しないと思いますが以下のケースを利用しています。<br />
<a href="http://www.ez-digix.com/removable/4571239961982.html" target="_blank">EZ-RC01-BK トレイ不要リムーバブルケース</a></p>
<p>gpt コマンドを使って開始セクタを4K(512&#215;8)の倍数である40に調整します。<br />
そして4Kフラグメントでフォーマットします。</p>
<pre id="ex"><code># gpt destroy /dev/ad4
# gpt create /dev/ad4
# gpt add -b 40 -s 3907029056 /dev/ad4
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4p1
# gpt show /dev/ad4
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6
          40  3907029056      1  GPT part - FreeBSD UFS/UFS2
  3907029096          39
  3907029135          32         Sec GPT table
  3907029167           1         Sec GPT header
 </code></pre>
<p>diskinfoによる情報：</p>
<pre id="ex"><code># diskinfo -tv ad4
ad4
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        ad:WD-WCAVY2947600      # Disk ident.

Seek times:
        Full stroke:      250 iter in   8.237599 sec =   32.950 msec
        Half stroke:      250 iter in   5.843690 sec =   23.375 msec
        Quarter stroke:   500 iter in   9.792176 sec =   19.584 msec
        Short forward:    400 iter in   2.864924 sec =    7.162 msec
        Short backward:   400 iter in   2.071866 sec =    5.180 msec
        Seq outer:       2048 iter in   0.329293 sec =    0.161 msec
        Seq inner:       2048 iter in   0.291931 sec =    0.143 msec
Transfer rates:
        outside:       102400 kbytes in   0.975746 sec =   104945 kbytes/sec
        middle:        102400 kbytes in   1.210277 sec =    84609 kbytes/sec
        inside:        102400 kbytes in   2.118571 sec =    48334 kbytes/sec
 </code></pre>
<p>ddによるRAWデバイス読み書きの結果：</p>
<pre id="ex"><code># dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 92.930809 secs (92433658 bytes/sec)
# dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 93.116164 secs (92249661 bytes/sec)
# dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 92.697650 secs (92666153 bytes/sec)

# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.864713 secs (108919874 bytes/sec)
# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.826804 secs (108972255 bytes/sec)
# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.814522 secs (108989237 bytes/sec)
 </code></pre>
<p>上記のように、WD20EARSでは、パーティション先頭8GBの領域に対して、<br />
リード108MB/s、ライト92MB/sぐらいは出るようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/1003/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>istgt (iSCSI target) 20100407版 for FreeBSD 7.x</title>
		<link>http://shell.peach.ne.jp/aoyama/archives/961</link>
		<comments>http://shell.peach.ne.jp/aoyama/archives/961#comments</comments>
		<pubDate>Wed, 07 Apr 2010 15:56:10 +0000</pubDate>
		<dc:creator>aoyama</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[ZFS]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[MCS]]></category>
		<category><![CDATA[MPIO]]></category>

		<guid isPermaLink="false">http://shell.peach.ne.jp/aoyama/?p=961</guid>
		<description><![CDATA[更新＞istgt 2010/05/16版
NetBSD, Mac OS X, LinuxでブロックデバイスをAuto指定できるように修正してみました。
ただし、動作検証までは行っていないので動かないかもしれません。
この部分はいろいろな報告が欲しいです。
（設定ファイルにない場合の）デフォルト値の変更を行いました。
サンプルの設定ファイルを使っている場合は影響ありません。
ビルド環境を仮定しないようにちょこっとマイナー修正しました。
syslogサーバに大量に記録されてCPUパワーとネットワーク帯域が
もったいないので、トレースモードでない場合は同一イニシエータからの
重複予約（常に成功する）の警告を出さないように修正しました。
今回の修正とは直接関係しないのですが、以前書いたようにFreeBSD7.3の環境に7.1から移行しているので、今後は7.1での通常検証は行いません。
また、FreeNAS 0.7.1 nightly buildの作成にESXi4のVMFSとして利用する関係でそちらのフォローも多くなると期待しています。
istgt (tarball): istgt-20010407.tar.gz
作成方法：
# cd /path/to/work
# tar zxf /path/to/istgt-20100407.tar.gz
# cd istgt-20100407
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法：
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100407.tar.gz) = d606f4e1520f486325910e105da1bf30
SHA256 (istgt-20100407.tar.gz) = 9ff40e921187c1ff78bad3585cc6c6ac05796921fdc906342a9e0e3cc74121c2
主な修正点：
NetBSD, Mac OS X, LinuxでブロックデバイスのAuto指定を考慮しました。
ビルド環境をなるべく特定しない仕組みを導入しました。
既定の設定ファイルがない特殊な環境でのデフォルト値を修正しました。
トレースモードが無効な場合は重複予約の警告を出さないようになりました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://shell.peach.ne.jp/aoyama/archives/1045" target="_blank">更新＞istgt 2010/05/16版</a></p>
<p>NetBSD, Mac OS X, LinuxでブロックデバイスをAuto指定できるように修正してみました。<br />
ただし、動作検証までは行っていないので動かないかもしれません。<br />
この部分はいろいろな報告が欲しいです。<br />
（設定ファイルにない場合の）デフォルト値の変更を行いました。<br />
サンプルの設定ファイルを使っている場合は影響ありません。<br />
ビルド環境を仮定しないようにちょこっとマイナー修正しました。<br />
syslogサーバに大量に記録されてCPUパワーとネットワーク帯域が<br />
もったいないので、トレースモードでない場合は同一イニシエータからの<br />
重複予約（常に成功する）の警告を出さないように修正しました。</p>
<p>今回の修正とは直接関係しないのですが、以前書いたようにFreeBSD7.3の環境に7.1から移行しているので、今後は7.1での通常検証は行いません。<br />
また、FreeNAS 0.7.1 nightly buildの作成にESXi4のVMFSとして利用する関係でそちらのフォローも多くなると期待しています。</p>
<p>istgt (tarball): <a href="http://shell.peach.ne.jp/~aoyama/wordpress/download/istgt-20100407.tar.gz" target="_blank">istgt-20010407.tar.gz</a></p>
<p>作成方法：</p>
<pre id="ex"><code># cd /path/to/work
# tar zxf /path/to/istgt-20100407.tar.gz
# cd istgt-20100407
# ./configure
# make
# make install
# make install-doc</code></pre>
<p>デーモンの再起動方法：</p>
<pre id="ex"><code># /usr/local/etc/rc.d/istgt restart</code></pre>
<p>MD5 (istgt-20100407.tar.gz) = d606f4e1520f486325910e105da1bf30<br />
SHA256 (istgt-20100407.tar.gz) = 9ff40e921187c1ff78bad3585cc6c6ac05796921fdc906342a9e0e3cc74121c2</p>
<p>主な修正点：<br />
NetBSD, Mac OS X, LinuxでブロックデバイスのAuto指定を考慮しました。<br />
ビルド環境をなるべく特定しない仕組みを導入しました。<br />
既定の設定ファイルがない特殊な環境でのデフォルト値を修正しました。<br />
トレースモードが無効な場合は重複予約の警告を出さないようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://shell.peach.ne.jp/aoyama/archives/961/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
