TOP
«
»

FreeNAS 0.7 で ZFS と iSCSI Target を構成する

テスト用のFreeNASのダウンロードはこちらから。
http://sourceforge.net/project/showfiles.php?group_id=151951&package_id=229704

以下の情報はnightly build 0.7.4541に基づいています。
ZFSでメモリが明らかに足りないのでKVA_PAGESを増加してもらいました。
r4537においてコミットされたので、それ以降であれば2GBがカーネル空間に
割り当てられます。
また、r4539において新バージョンのistgtに変更してもらいました。
この版はFreeBSD initiatorで発現するバグを修正したバージョンです。

1.カーネルメモリの増加(i386版の必須事項)

まず事前準備として、設定を変更します。
この変更はi386版ではメモリ搭載量にかかわらずZFSを利用する場合は必要になります。

高度な設定>ファイルエディタから
embeddedの場合は /cf/boot/loader.confをロードします。

追記:fullインストールの場合は /boot/loader.conf をロードします。

vm.kmem_size_max=”1400M”
vm.kmem_size=”1400M”
vfs.zfs.arc_max=”350M”

メモリ2GBの場合は最低上記のような設定を追加して保存して再起動します。
再起動後に再度ロードして正しい値か確認しておきます。

※メモリ1GB以下ではおそらく制限された速度しかでませんが、
まったく利用できないわけではないです。

1GBの場合:
vm.kmem_size_max=”700M”
vm.kmem_size=”700M”
vfs.zfs.arc_max=”175M”

追記:
ZFSv6版(7.2RELEASE)の場合、vfs.zfs.arc_maxはkmem_sizeの1/4程度を指定したほうが良いみたい。

amd64版を使う場合は遠慮なく限界まで確保します。
4GB(amd64)の場合:
vm.kmem_size=”3072M”
vfs.zfs.arc_min=”768M”
vfs.zfs.arc_max=”768M”

ZFSv13版(7.2STABLE)の場合、vfs.zfs.arc_maxはkmem_sizeの1/2程度を指定します。

物理メモリ512MB+FreeBSD7.0での運用参考値:
vfs.zfs.arc_max=”40M”
vfs.zfs.vdev.cache.size=”5M”
vm.kmem_size_max=”384M”
vm.kmem_size=”384M”

2.ZFSプール及びファイルシステムを構成する

ディスク>マネージメントから
利用するHDDを事前フォーマットを「ZFS storage pool device」で追加します。

テストマシンはZFSに利用できるHDDが1個しかない為Stripeで単体指定です。

ディスク>ZFS>Pools/Virtual deviceから
プールに追加するHDDのタイプを選び追加します。

ディスク>ZFS>Pools/マネージメントから
作成したHDDの組を使ってプールを作成します。

※この名前がプール名になります。
ここではtankとしました。

ディスク>ZFS>Datasets/Datasetから
プール内にファイルシステムを作成します。

ここでは/mnt/tank/iscsiとして作成しました。

3.iSCSIターゲットを構成する

この手順は以前書きましたのでそちらを見てください。

FreeNAS 0.7 を使って iSCSI Target を構成する

ここでは/mnt/tank/iscsi/test-disk0として作成しました。

テスト用ハード構成:
ASUS M2A-VM (AMD 690G chipset) + Athlon X2 5200+ (2.7GHz/DualCore)
Hitachi HDP725050GLAT80 (U133 500GB) x 1
Seagate ST380815AS (SATAII 80GB) x 1
UMAX DDR2-800 2GB x 1
Intel PRO1000/PT Server Adapter x 2

テスト用iSCSIターゲット:
ZFS上のファイル形式
QueueDepth 32
(その他デフォルト値)

このFreeNASを使ってWindowsServer2008からiSCSIドライブで
CrystalDiskMark2.2を100MBで走らせた時のNIC(em1)とCPU負荷はこんな感じ。

 
(クリックで拡大)

書き込みが遅いのはistgtの仕様(キャッシュ無/シングルI/O/排他ロック)
なので効率アップはもう少しお待ちを。

追記:
上記では単体ドライブのZFS領域ですが、後日ドライブを増設した場合に、

# zpool attach tank /dev/ad1 /dev/ad3
(ad1が既存ドライブ、ad3が増設ドライブと仮定)

のようにすると、簡単にZFSミラーを作成することができます。
また、ミラー化が完了すればデータを保持したまま旧ドライブを
いつでも交換する事が可能になります。(容量の大きい物へも可能)

# zpool replace tank /dev/ad1

やっぱり気が変わってミラーを止めたいと思った場合は、

# zpool detach tank /dev/ad3

とすると、ミラーが解除されて元の単体ドライブのZFS領域に戻ります。
このように単体でもZFSにしておくと後々の管理が楽になるのです。

※attach/detachは現時点のWebGUIからは操作できないようです。
※RAIDZではattach/detachはできませんが当然replaceは可能です。

タグ: , , , , , ,

コメント / トラックバック1件

  1. [...] 参考:FreeNAS 0.7 で ZFS と iSCSI Target を構成する « 環境さんぷる [...]

コメントをどうぞ