10.3. NFSサーバの構築
10.3.1. NFS
NFS(Network File System)はネットワークを介してファイルを共有する仕組み。
Unix系OS同士のファイル共有にはNFSが使用される。
NFSサーバが公開したディレクトリはNFSクライアントがマウントすることでリモートファイルシステムをローカルファイルシステム同様に扱うことができる。
NFSサーバを実現するには以下の3つのサービスが必要となる。
| サービス | サーバ | クライアント | 説明 | 
|---|---|---|---|
| portmap | 必要 | 必要 | RPCプログラム番号をTCP/IPポート番号に変換 | 
| nfsd | 必要 | 不要 | ファイルシステムのエクスポート及びクライアント要求処理 | 
| mountd | 必要 | 不要 | リモートファイルシステムのマウント/アンマウント | 
RPC(Remote Proceduce Call)はネットワーク上にあるリモートホストに機能を別のホストから使えるようにする仕組みのこと。
RPCサービスにはRPCプログラム番号が付けられている。対応表は/etc/rpcで確認可能。
RPCサービスが利用するTCP/UDPポートは動的に割り当てられるため、RPCクライアントの利用にはポート番号を確認する必要がある。
portmapはRPCプログラム番号とポート番号のマッピングを行うサービスとなる。
なおportmapはTCP Wrapprでアクセス制御することが可能。
NFSを利用する際の推奨設定(サービス提供範囲の限定)は以下のように行う。
portmap: 192.168.3.NFSv3/NFSv4
NFSv4の特徴は以下の通り。
- ポート番号が2049番固定
- idimapdサービスによりUIDの考慮が不要
- ルートディレクトリがエクスポートされているように見える
rpcinfoコマンド
RPCサービスの状況を確認するコマンド。
rpcinfo オプション [ホスト名]| オプション | 説明 | 
|---|---|
| -p | 指定したホストで動作するRPCサービス一覧の表示 | 
10.3.2. NFSサーバの設定
NFSサーバで特定のディレクトリを公開することはエクスポートと呼ばれる。
エクスポートするディレクトリは/etc/exportsに記述する。
記述例は以下の通り。
/share      172.16.0.0/255.255.0.0(rw)
/public     *.local.jp(ro) local(rw,nor_root_squash)また/etc/exportsのオプションは以下の通り。
| オプション | 説明 | 
|---|---|
| ro | 読み取り専用でエクスポートする | 
| rw | 読み取り/書き込み属性でエクスポート | 
| no_root_squash | rootアクセス時にroot権限で実行 | 
| root_squash | rootアクセス時に匿名アカウント権限で実行(デフォルト設定) | 
| all_squash | すべてのアクセスを匿名アカウント権限で実行 | 
NFSサーバの注意点としてUIDを統一するべき。(UNIXのUIDがそのままNFSサーバでも使用されるため) そうしないと別ユーザとして認識される場合がある。
exportsコマンド
現在のエクスポート状況の表示、/etc/exportsの変更を反映させるコマンド。
exports [オプション] [ホスト:パス]| オプション | 説明 | 
|---|---|
| -a | すべてのディレクトリのエクスポート/アンエクスポート | 
| -r | すべてのディレクトリの再エクスポート | 
| -U | アンエクスポート | 
| -v | 詳細に表示 | 
showmountコマンド
NFSサーバのディレクトリをマウントしているNFSクライアントを調べることができるコマンド。
showmount [オプション] [ホスト]| オプション | 説明 | 
|---|---|
| -a | クライアントのホスト名とマウントしているディレクトリの表示 | 
| -e | 指定したホストでエクスポートしているディレクトリの表示 | 
nfsstatコマンド
NFSの統計情報を表示するコマンド。
ntfsstat [オプション]| オプション | 説明 | 
|---|---|
| -s | NFSサーバ側の統計のみを表示 | 
| -c | NFSクライアント側の統計のみを表示 | 
| -n | NFSの統計のみを表示 | 
| -r | RPCの統計のみを表示 | 
| -o net | ネットワーク層の統計表示 | 
10.3.3. NFSクライアントの設定
NFSを使いリモートファイルシステムをマウントするにはmountコマンドを使用する。
ファイルシステムタイプにはnfsを指定する。
mount -t nfs filerever:/public /mnt/nfs/publicまたNFSをマウントする際のオプションは以下の通り。
| オプション | 説明 | 
|---|---|
| bg | マウント失敗時もバックグラウンドで試行し続ける | 
| fg | マウントをフォアグラウンドで行う | 
| soft | ソフトマウントを行う | 
| hard | ハードマウントを行う | 
| intr | ハードマウント時の割り込みを許可 | 
| retrans | ソフトマウントの場合の再試行回数 | 
| rsize=バイト数 | 読み取りのブロックサイズ | 
| wsize=バイト数 | 書き込みのブロックサイズ | 
ソフトマウントとハードマウントはNFSサーバがクラッシュしたり障害が起きた際のNFSサーバが応答がない場合の動作が異なる
- ソフトマウント- NFSサーバが応答しない場合タイムアウトになる
 
- ハードマウント- ハングアップしているように見える
- 応答があるまで要求を再試行し続ける
- これを設定する場合はinitrオプションも指定する必要ある
 
起動時に自動マウントするには/etc/fstabに追加しておく。
filesvr:/pub /mnt/nfs/pub nfs rw 0 0