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