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
# make; make install; make clean
/usr/local/etc/smb.conf
[global]
workgroup = MYGROUP
unix charset = eucjp-ms
dos charset = cp932
[public]
comment = Public Stuff
path = /tank/samba/public
public = yes
writable = yes
NFSによる/usr/portsの共有例:
NFSサーバ側(hera)
↓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
NFSクライアント側
↓普通にマウントするだけ
# mount hera:/nfs/ports /usr/ports
ZFSボリュームの作成例(ZILがあると低速でまともに使えない):
↓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
※現バージョンでは/dev/zvol/への連続書込みは、
ボリュームブロックサイズ?の128kB毎にログ(ZIL:ZFS Intent Log)の
コミットが常時発生する為にとてつもなく遅いです。
(デフォルト設定を安全側にするのは悪くない)
もしも予期せぬサーバダウン時に更新が消失してもいいなら、
vfs.zfs.zil_disable=1
を/boot/loader.confにいれるとZILが無効になります。
ZFS自体は上書きしないトランザクション仕様なので、旧データが残るか
新データに変わるかのどっちかになるはず。
ZILは新データになるのを保証するって認識だけどよく理解できていません。
実際にWS2008からiSCSIで接続して書込みしてみると、
4GB搭載して空きメモリ1.8GB、CPU使用率96%、
I/O速度21MB/s x6台、平均書込速度59MB/s
どうみてもCPUパワーが足りていません(汗)
(zpool iostat と systat -vmstatの結果)
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