NFSサーバとクライアント
Linux LPIC編。(第10章 ファイル共有)
第10章の〆はNFSサーバとクライアントの設定や確認など。
NFS(Network File System)がどういうサービスかというのは割愛するとして、
まずサービスを提供するデーモン、必要となるデーモンは。
portmap RPCプログラム番号をTCP/IPポート番号に変換(マッピング)する
nfsd ファイルシステムのエクスポートとクライアント要求の処理
mountd リモートファイルシステムのマウント・アンマウント
portmapに関しては、サーバ、クライアント両方に必要。
RPCプログラムについてきちんと書こうとすると長くなるので、、、走り書き程度のメモに。
/etc/rpcファイルでRPCサービスに付けられたRPCプログラム番号が確認できる。
rpcinfoコマンドでRPCサービスの状況を確認できる。
以下例ではホストを指定してRPCサービスの一覧を表示。
# rpcinfo -p nfshost
/etc/hosts.allowに以下のような記述をすることにより、portmapのサービス対象範囲
を限定することが可能。
portmap: 172.16.0. ←172.16.0.0/24ネットワーク内のホストに限定
さて、いよいよNFSサーバの設定。
NFSサーバから特定のディレクトリを公開することをエクスポートという。
エクスポートするディレクトリは/etc/exportsファイルに記述する。
/etc/exportsの書式やオプションは重要そうなのでしっかり書いておこう。。
書式
公開するディレクトリ名 公開先のホスト・IPアドレス・ドメイン名(option)
※()内のオプションは省略不可。
主なオプション
ro 読み取り専用でエクスポート(デフォルト)
rw 読み書き属性にてエクスポート
no_root_squash rootでのアクセス時にroot権限で実行
root_squash rootでのアクセス時に匿名アカウント権限で実行(デフォルト)
all_squash すべてのアクセスを匿名アカウント権限で実行
オプションのみ指定した場合は「すべてのホスト」と見なされるので、以下のような
記述も可。ただし近年は「*(ro) 」のような表記が推奨されているそうだ。
/etc/exports記述例
/share *.networkfile.jp(rw) (ro)
no_root_squashに注目。NFSマウントしたディレクトリにroot権限でアクセスする必要
がある場合は、このオプションを使用する。
/etc/exports記述例
/share *.networkfile.jp(rw) nethost01(rw,no_root_squash)
exportfsとshowmount
exportfsコマンドで現在のエクスポートの状況を表示したり、エクスポートや
アンエクスポートを実行する。
また、# exportfs -arの実行で/etc/exportsの設定を反映させる。
(# /etc/init.d/nfs reloadでも可)
主なオプション
-a すべてのディレクトリをエクスポート・アンエクスポートする
-r すべてのディレクトリを再エクスポート
-u アンエクスポートする
-v 詳細に表示する
showmountコマンドで、NFSサーバがエクスポートしているディレクトリ一覧を取得できる。
以下は-eオプションでNFSサーバを指定してディレクトリ一覧を表示させる例。
# showmount -e nfshost
-aオプションをつけると、クライアントのホスト名とマウントしているディレクトリを表示する。
NFSの統計情報を表示する、nfsstatというコマンドもある。
オプションなしだとクライアントとサーバ、RPC、すべての統計を表示するが、
オプションを指定して個別の情報だけを見ることもできる。
自分は見ても何だかわからないが。。
力を振り絞って、最後にNFSクライアントの設定を。
NFSサーバが公開しているディレクトリをクライアント側で利用するには、普通にmount
コマンドでマウントするのだが、固有のオプションについて覚えておいた方がよさそうだ。
まずコマンド例。NFSサーバ名とディレクトリは「:」(コロン)で区切る。
ファイルシステムタイプは省略可。
# mount -t nfs nfshost:/net /mnt/nfs/net
以下NFS特有のマウントオプションですが、「-o」を付けるのを忘れないように・・・
NFS特有のマウントオプション
bg マウントに失敗してもバックグラウンドで試行を続ける
fg マウントはフォアグラウンドで実行する
soft ソフトマウントを行う
hard ハードマウントを行う
initr ハードマウント時の割り込みを許可する
retrans ソフトマウントの場合の再試行回数
nolock ファイルのロックを行わない
rsize=n 読取りのブロックサイズ
wsize=n 書込みのブロックサイズ
ソフトマウントとハードマウントの違い
これらはNFSサーバに障害が発生したときの動作が異なる。
ソフトマウントはNFSサーバの応答がないとタイムアウトする。中断された処理によって
ファイルシステムに障害が発生する恐れがあるので、注意が必要。
一方ハードマウントでは、NFSサーバへアクセスしているプログラムは応答があるまで
リトライし続ける。見た目はハングアップしているように見えるが、障害が復旧すれば
プログラムは処理を続行する。ハードマウントの場合、リトライを続けるプログラムを
中断できるよう、initrオプションも合わせて指定する。これがないと、Ctrl + Cで停止
したり、シグナルを送信しての停止ができなくなる!…ってことだ。
以下、ハードマウントとinitrをマウントオプションとして指定する例。
(これは覚えておいたほうがよさげな感じ)
# mount -o hard, initr -t nfs nfshost:/net /mnt/nfs/net
最後に、対象のエクスポートディレクトリをサーバの起動時に自動的にマウントする
ようにするには、/etc/fstabにエントリを追加、ですね。
あぁ、やっとここまで。
次回から「第11章 ネットワーククライアント管理」へ。
出典
Linux教科書LPICレベル2(翔泳社)
Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index