TOP
«
»

NEC Express5800/110Ge + WD5000AAKS + FreeBSD 7.1 ZFS/iSCSI/NFS(iSCSI/NFSの準備)

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

タグ: , ,

コメントをどうぞ