MacでNFSでリモートディレクトリのマウント
私は環境構築はCentOSサーバ上にしてるので、
プログラムを書いたらサーバにアップロードしてsshでそのプログラムを実行しています。
最近まではDropboxにプログラムのソースコードを入れて直接それを編集していたのでアップロードの手間は無かったのですが、
最近同期にかかる時間が長くなってきたのでNFSを利用する事にしました。
NFSはサーバのディレクトリをローカルにマウントできるファイル共有システムです。
NFSサーバの環境設定
プロセスの起動
nfs,portmapperなど必要なプロセスが起動しているかrpcinfoで確認。
起動していない場合は正式な起動順序があるのでそれに従って起動。
$rpcinfo |grep nfs
/etc/exports
を編集
マウントを許可するディレクトリを加えておきます。
ファイアーウォールの設定
/etc/sysconfig/iptables
の編集。
/etc/sysconfig/nfs
で指定されているポートを全て解放。
Mac上にマウント
Finder>サーバに接続でマウント
nfs://<サーバのアドレス><マウントしたいディレクトリ>
と思ったらマウント出来ない。なぜ。
仕方ないのでコマンドから実行。
$sudo mount -t nfs -o resvport,rw <サーバのアドレス>:<マウントしたいディレクトリ> <マウント先のディレクトリ>
途中operation not permittedt
とか出たが、-oオプションを入れると直った。
追記
いざマウントしたディレクトリのファイルに書き込んでみようとするとread-onlyと表示される事態に。ということで、以下をチェックしました。結局パーミッションの問題でした。
exports
ファイルの設定反映
以下のコマンドを打たないと反映されないようです。
/usr/sbin/exportfs -ra
反映された設定は/proc/fs/nfs/exports
で見れます。
パーミッション
nfsではデフォルトでroot_squashというオプションが有効になるようです。
これは、クライアントがrootでアクセスしても、nobodyに置き換えるセキュリティオプションです。
よって、書き込みをするにはパーミッションを755とかにするか、no_root_squashオプションをexportsファイルに記載する必要があります。