午後から→オーバークロック

駆け出しハッカー()によるプログラミング・サービス開発備忘録。

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ファイルに記載する必要があります。