YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

FreeNAS で容量アップ

研究室で遊びで立てたSubversion + Trac用のFreeBSDサーバが思いのほか利用率が高く,あっという間に容量がかつかつになってしまった.古いサーバマシンで立てたのでHDDの容量が少なかったのが悪いのですが.*1
そこで,一時「TeraStationでも買って増設しようか」なんて話も出てたんですが,某特任助教が研究費無駄遣いするもんだから,結局買えず困っていたところ,見つけたのがFreeNAS.

FreeBSDベースでNAS用にチューンされてるディストリビューションですが,これがとてつもなく便利.そこで研究室でWindows用に使っていたけどHDDが死んじゃった古いマシンに500GBのHDDを積んで,FreeNASをインストールして新たにNASとして再始動.
で,今回はFreeBSDサーバからこのFreeNASのマシンをマウントしてみたので,その設定をメモ.

  • 状況(IPとか)

FreeBSD : 192.168.1.100
FreeNAS : 192.168.1.***

/etc/rc.conf に以下のような設定を追加

# settings for nsf client
nfs_client_enable="YES"
nfs_client_flags="-n 4"
  • 次にipfwの設定をしてRPC用の設定(FreeBSD側)

ここではまった.rc.conf内でfirewall_type="open"にしてたらmount_nfsできたのに,自分で書いたipfw用設定ファイルを読んだら

[root@FreeBSD ~]# mount_nfs 192.168.1.***:/mnt/data /MOUNT/POINT/
[udp] 192.168.1.***:/mnt/data: RPCPROG_NFS: RPC: Port mapper failure - RPC: Unable to send

とエラーが出て「???」状態.なんかRPCがポートマッパを読みにいけないらしい.調べてみるとこのような記述発見.

ん?なんだこの記述は?/

なぜならNFSは古い規格ということもあって、デフォルトでは使用するポートが不定なために「明示的に開放」ということができないのだ。

とりあえず本当にそうなのかはおいといてとりあえずRPCとNFSに使うポート番号を調べてみることにした.

# grep rpc /etc/services
sunrpc          111/tcp    rpcbind      #SUN Remote Procedure Call
sunrpc          111/udp    rpcbind      #SUN Remote Procedure Call
erpc            121/tcp    #Encore Expedited Remote Pro.Call
erpc            121/udp    #Encore Expedited Remote Pro.Call
rpc2portmap     369/tcp
rpc2portmap     369/udp
courier         530/tcp    rpc
courier         530/udp    rpc
banyan-rpc      567/tcp
banyan-rpc      567/udp
http-rpc-epmap  593/tcp    #HTTP RPC Ep Map
http-rpc-epmap  593/udp    #HTTP RPC Ep Map

# grep nfs /etc/services
nfsd-status     1110/tcp   #Cluster status info
nfsd-keepalive  1110/udp   #Client status info
shiva_confsrvr  1651/tcp
shiva_confsrvr  1651/udp
nfsd            2049/tcp   nfs          # NFS server daemon
nfsd            2049/udp   nfs          # NFS server daemon

というわけでポート番号111, 121, 369, 530, 567, 593, 1110, 1651, 2049をipfwの設定に追加するも相変わらずだめ.そこでしょうがないので自分でnfsのポート番号を設定しようと思ったが,FreeBSDでポートを固定する方法が分からん.
最後の手段でFreeBSDとFreeNASの間のやりとりは全部OKにすることにして,下記をipfwの設定ファイルに追加.(さっき追加したポート番号は削除した)

# emacs /etc/ipfw_rules.txt
add 2500 allow all from me to 192.168.1.***
add 2510 allow all from 192.168.1.*** to me
# /etc/rc.d/ipwf restart

でもって後はマウントしてあげればOK.

# mount_nfs 192.168.1.***:/mnt/data /MOUNT/POINT/

*1:さらにHDDがSCSIというのもよくなかった