NFSのインストールと設定

ディスクレス・クライアントはNFSを使ってサーバの/tftpboot/f8/rootを自分のルート・ファイルシステムとしてマウントする。複数のディスクレスで共有できるように"サーバ:/tftpboot/f8/root"はread onlyでマウントするため書き込みは出来ない。核クライアントに個別のファイルは"サーバ:/tftpboot/f8/snapshot/クライアント名"をread/writeでマウントする。すなわち、各クライアント毎の設定は"/tftpboot/f8/snapshot/クライアント名"の下に格納される。
これらのディレクトリをクライアントからNFSマウントできるように設定する必要がある。

先ずは、NFSをインストールする。

[root@vmserver ~]# yum install nfs-utils

次にクライアントからNFSでマウントできるように/etc/exportsに次の行を追加する。

/tftpboot/f8/root       192.168.0.0/24(ro,sync,no_root_squash)
/tftpboot/f8/snapshot   192.168.0.0/24(rw,sync,no_root_squash)

次にNFSの為にファイヤーウォールを設定する必要がある。NFSのためにポート2049/TCP、2049/UDPを空けるのは必須だが、関連してsunrpcポート111/TCP、111/UDP、更にRPCで使われるポートの開放も必要になる。RPCで使われるポートは標準では固定されていないので、ファイヤーウォールを使う環境ではこれらのポートを固定して、該当するポート番号を開放する。
RPCに使うポートの固定化はGNOMEのsystem-config-nfsの"Server Settings"ボタンから設定できる。

rpc.lockd(TCP): 48620
rpc.lockd(UDP): 48620
rpc.mountd(TCP): 48621
rpc.statd(TCP): 48622

また、/etc/sysconfig/nfsに次の項目を追加する。

LOCKD_TCPPORT=48620
LOCKD_UDPPORT=48620
MOUNTD_PORT=48621
STATD_PORT=48622

なお、RPCのポートの固定化において、一般的に決ったポート番号はないようだ。現在使用していないRegistered Port(1024-49151)のどれかを使うようだが、上の48620-48622を使った技術的根拠はない。敢えて言えば、Fedora 8の/etc/servicesで定義されているのが48619までだったことだ。
設定中はどの番号がどのポートか覚えていても設定が終わって1ヵ月もすれば「このポートは何でファイヤウォールで開放しているのだろう?」と忘れてしまうので/etc/servicesに名前を登録して置いた方がいい。/etc/servicesの最後の追加して置く。/etc/servicesで定義しておけば「ファイヤウォールの設定ツール」等でポート番号だけでなくポート名でも表示されるので分かりやすい。

(以下はtailコマンドで/etc/servicesを確認している様子。)

[root@vmserver ~]# tail /etc/services
com-bardac-dw	48556/tcp	# com-bardac-dw
com-bardac-dw	48556/udp	# com-bardac-dw
iqobject	48619/tcp	# iqobject
iqobject	48619/udp	# iqobject
# Local services
rpc.lockd	48620/tcp
rpc.lockd	48620/udp
rpc.mountd	48621/tcp
rpc.mountd	48621/udp
rpc.statd	48622/tcp

これらのポートに合わせてファイヤーウォールでポートを開放する。(ただし、rpc.mountd(48621)はTCPの筈だが、"-v"オプションつけてmountを実行するとUDPでリクエストを出している。そのためUDPポートを開放しないと通信が出来なかった。)現在、ファイヤーウォールPXEブート関連でポートを開放しているのは以下の通り。

tftp		69/UDP
sunrpc		111/TCP,UDP
nfs4		2049/TCP,UDP
rpc.lockd	48620/TCP,UDP
rpc.mountd	48621/TCP,UDP
rpc.statd	48622/TCP

いよいよNFSサービスを起動する。

[root@vmserver ~]# service nfs start
Starting NFS services:					[  OK  ]
Starting NFS quotas:					[  OK  ]
Starting NFS daemon:					[  OK  ]
Starting NFS mountd:					[  OK  ]

以降、該当ランレベルNFSデーモンが起動するように設定する。

[root@vmserver ~]# chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@vmserver ~]# chkconfig --level 345 nfs on
[root@vmserver ~]# chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off