研究室で遊びで立てたSubversion + Trac用のFreeBSDサーバが思いのほか利用率が高く,あっという間に容量がかつかつになってしまった.古いサーバマシンで立てたのでHDDの容量が少なかったのが悪いのですが.*1
そこで,一時「TeraStationでも買って増設しようか」なんて話も出てたんですが,某特任助教が研究費無駄遣いするもんだから,結局買えず困っていたところ,見つけたのがFreeNAS.
- FreeNAS 8 | Storage For Open Source
- Leverage OSS:FreeNASで家庭内LANにストレージを簡単に追加する (1/2) - ITmedia エンタープライズ
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というのもよくなかった