FreeBSD と Linux の NFS は鬼門とか言われるらしいんですが、つながざるを得ない場合もあるんですよ。しかもこんな環境
Linux ベースのアプライアンスで、データ領域を必要とするような場合ですね。うちでは foltia なんですけどね。
用件別にまとめると、
- NFS サーバ: FreeBSD / NFS クライアント:Linux
- CIFS サーバ:Linux / CIFS クライアント:Windows
って、わざわざ書かなくても、CIFS クライアントは Windows で当たり前なんですが。
で、まぁ厄介なのが NFS まわりの話。
FreeBSD 同士の NFS であれば、NFS サーバで
nfs_server_enable="YES"
mountd_enable="YES"
これだけ設定すりゃ、NFS マウントできるわけです。なんとなれば、mountd_enable さえなくても大丈夫。
ところが、NFS クライアントが Linux になると、
nfs_server_enable="YES"
nfsuserd_enable="YES"
rpcbind_enable="YES"
mountd_enable="YES"
これだけ設定しないと、マウントが失敗するわけです。RPC周りの動作が異なるらしく、RPC関連のサーバをちゃんと動くようにしないといけないらしい。あと、Daemon 動かすだけじゃなく、通信を許可する設定も。
/etc/hosts.allow
rpcbind : A.B.C.0/255.255.255.0 : allow
あとは、NFSv4 を有効にするとダメで、NFSv3 にすることが必須
とまぁ、NFS サーバとなる FreeBSD でこれだけ設定すれば、Linux から NFS マウントはできるようになるんです。
ところが、この Linux サーバ上で Samba を動かして、NFS マウントした領域を CIFS でアクセスしようとすると、これがまたコケる。
どうすりゃいいか、さらに FreeBSD の設定を追加します。
nfs_reserved_port_only="YES"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
これで CIFS からアクセスが可能にはなるんです。が、ファイルアクセスがすごく遅い。スループットが出ないという意味ではなく、ファイルコピーなどの操作を行っても「コピーの準備をしています」で数分待たされて、ようやくコピーが始まるわけです。
おそらくは CIFS アクセスで必須なロック関連がタイムアウトするのを待っちゃうんじゃないかなぁと。キャプって調べてみたところ、NFS クライアントから NFS サーバに対して UDP 111 (SunRPC) 通信をしようとしてるんだけど、これが遮断されてました。
遮断してるのは、Linux の iptables。そりゃまぁ、RPC なんて古代のプロトコル、怖いからって止めますわな・・・・
とはいえ、何とかしないと使い物にならないわけで、しかもLAN内のサーバなんだし・・・・
chkconfig iptables off
コメントする