NFS の設定

NFS(Network File System)とは、ネットワークを介して ファイルシステムをマウントするためのサービスです。 これを NIS と併用して使うことにより、 どのマシンからログインしても全く同じ環境で作業ができます。

目次

なお本ページではマシンの環境を次のように仮定します。
ホスト名 IP アドレス
サーバ hostA 123.45.67.89
クライアント hostB 123.45.67.90

NFS サーバ、クライアント共通の設定

portmap 起動の確認

rpcinfo か ps で portmap が起動していることを確認します。
  # rpcinfo -u localhost portmap
  program 100000 version 2 ready and waiting
  
もしくは
  # ps aux | grep portmap
  bin        167  0.0  0.1   780  412 ?        S    13:11   0:00 portmap
  

NFS サーバの設定

/etc/exports の設定

クライアントに export するファイルシステムを指定します。 /home を export する場合は次の通りです。
  /home  123.45.67.90(rw,root_squash)
  /home  @hogehoge(ro,root_squash)
  
rw は読み書き可能、ro は読むだけの export です。 root_squash はクライアントの root が NFS サーバにアクセス 要求したときに匿名を表す nobody に置き換えるオプションです。 NIS のドメインネームが設定されているときは 2行目のような設定ができる。。。はずなんですが、 今のところ失敗しています。

なお、/etc/exports ファイルを変更するたびに nfsd に 変更されたことを教えて上げる必要があります。 著者のやったかぎりでは、nfsd (と mountd)を起ち上げ直すのが 手っとり早いようです。

  # /etc/rc.d/init.d/nfs stop
  # /etc/rc.d/init.d/nfs start
  
先達の知恵によりますと、
  #kill -HUP `cat /var/run/mountd.pid`
  
でもOKだそうです。 スクリプトファイル /etc/rc.d/init.d/nfs を見て nfsd と mountd が /etc/rc.d/init.d/nfs で同時に起ち上がるようならこれでOKです。

/etc/hosts.allow の設定

NFS は portmap を使いますので、/etc/hosts.allow で クライアントがサーバの portmap を使ってもいいように設定します。
  portmap : 123.45.67.90 : allow
  

mountd,nfsd の起動

  # /usr/sbin/rpc.mountd
  # /usr/sbin/rpc.nfsd
  
確認は
  # rpcinfo -u localhost mount
  # rpcinfo -u localhost nfs
  
です。

NFS クライアントの設定

マウント

クライアント側では export されたファイルシステムをマウントします。 /home をマウントするには次のようにします。
  # mv /home /local_home
  # mkdir /home
  # mount -o rsize=1024,wsize=1024,nosuid hostA:/home /home
  
rsize、wsize はそれぞれ読み込み、書き込みのバイト単位です。 NFS を早くするための設定方法は次の項を参照して下さい。 マウントの解除は
  # umount /home
  
です。

NFS の最適化

mount コマンドの rsize,wsize で設定できる数値は 1024 以上 16384 以下の 1024 の倍数です。 これを適当に設定することにより NFS のスピードを早くできます。 著者の環境では4倍も違うことがありました。 スピードテストの仕方は次の通りです。

●書き込みテスト
time dd if=/dev/zero of=/home/testfile bs=16k count=4096
●読み込みテスト
time dd if=/home/testfile of=/dev/null bs=16k


NFS サーバ自動起動の設定

NFS サーバとなるために起動していなければならないデーモンは
mountd
nfsd
の二つです。これを /etc/rc.d 以下で自動的に起動するように設定します。
# chkconfig --add nfs
# chkconfig --level 3 nfs on
/etc/rc.d/init.d/nfs を見るとわかりますが、nfs を立ち上げると うちのマシンではついでに mountd も起ち上がるようになってます。

NIS クライアント自動起動の設定

NFS クライアントでは mount を /etc/fstab に記述することで 自動で行えます。次の記述を追加します。
hostA:/home /home nfs rsize=4096,wsize=4096,nosuid 0 0

Linux のページ