変更要約: 初版(主題2.11・副主題2.11.1〜2.11.2に対応)
5.2NFSサーバーの設定と管理
Unix/Linux 系クライアント同士でファイルシステムを共有するNFSの設定と管理を学びます。エクスポート定義/etc/exports、反映コマンドexportfs、クライアント側での確認showmount、稼働状況のnfsstat、RPC サービス確認のrpcinfo、mountd・portmapperの役割、マウントオプションと/etc/fstab・/proc/mountsによる永続化・確認を押さえます。
Linux サーバー同士、あるいは Unix 系クライアントとの間でファイルシステムをそのまま共有したいときの定番がNFS(Network File System)です。Samba が Windows 向けの SMB/CIFS を実装するのに対し、NFS は Unix/Linux の世界で長く使われてきたプロトコルで、RPC(Remote Procedure Call)の仕組みの上に成り立っています。
5.2.1エクスポート定義と反映
- 共有(エクスポート)するディレクトリとアクセス条件は/etc/exportsに記述する(例
/srv/data 192.168.1.0/24(rw,sync,no_root_squash))。ホスト指定・マウントオプションをディレクトリごとに列挙する。 - /etc/exportsを編集しただけではサービスに反映されない。exportfsでエクスポートテーブルの再読み込み/反映を行う(
exportfs -ra=全再エクスポート、exportfs -v=現在のエクスポート一覧表示)。
5.2.2確認・監視コマンドとRPC
- クライアント側からどのディレクトリが共有されているか確認するのがshowmount(
showmount -e server)。サーバー側の稼働統計(呼び出し回数等)を見るのがnfsstat。 - NFS はRPC上で動くため、RPCサービスの登録状況を確認するrpcinfo(
rpcinfo -p)が疎通トラブルの定番調査コマンド。RPCサービスの待ち受けポートを仲介するのがportmapper(rpcbind)で、NFS 自体のリクエストを取り次ぐのがmountd(マウント要求の処理)。 - クライアント側のマウントはmountで行い(オプションで rw/ro・ソフト/ハードマウント等を指定)、恒久化は/etc/fstabに記述する。現在マウント中の一覧は/proc/mountsで確認できる(/etc/mtab より確実に現状を反映)。
「/etc/exports を編集しただけでは反映されない→ exportfs -ra」「クライアントから共有一覧を見る→ showmount -e」「RPCサービスの登録確認→ rpcinfo -p」「実際のマウント状況の確認→ /proc/mounts」 の4点セットが最頻出です。mountd=マウント要求処理・portmapper=RPCポートの仲介という役割分担の対比も定番です。
NFS の運用フローを追うと登場コマンドが整理できます。まず/etc/exportsに共有ディレクトリとアクセス許可ホスト・オプション(rw=読み書き可・sync=同期書き込み・no_root_squash=クライアントのroot権限をそのまま尊重)を1行ずつ記述します。編集後はexportfs -raで反映しないと、サービス再起動なしには新しい設定が有効になりません。クライアント側で「本当にこのサーバーは何を共有しているか」を確認したいときはshowmount -e サーバー名を使います。マウントできない・応答が遅いといったトラブルの切り分けでは、NFS がRPC(Remote Procedure Call)機構の上で動作することを思い出すのが鍵です。portmapper(rpcbind)が各 RPC サービスの待ち受けポートを管理しており、rpcinfo -pでその登録状況を確認できます。実際にマウント要求を処理するのはmountdで、showmountやmountのやり取りもこの経路を通ります。クライアント側ではmountコマンドで一時的にマウントできますが、再起動後も自動でマウントさせたいなら/etc/fstabにserver:/srv/data /mnt/data nfs defaults 0 0のように記述します。現在の実際のマウント状態を確かめたいときは/proc/mountsを見るのが確実で、/etc/mtabはシンボリックリンクで代替されることもあり内容が実状と食い違う場合があるため、/proc/mountsの方が信頼できる情報源です。サーバー側の稼働状況(RPC呼び出し数など)を継続的に把握したい場合はnfsstatで統計を確認します。
| コマンド/要素 | 役割 | 主な用途 |
|---|---|---|
| /etc/exports | エクスポート定義ファイル | 共有ディレクトリとホスト/オプションの記述 |
| exportfs | エクスポートテーブルの反映 | exportfs -ra で全再エクスポート |
| showmount | クライアントから共有一覧確認 | showmount -e server |
| rpcinfo | RPCサービス登録状況の確認 | rpcinfo -p で疎通調査 |
| mountd/portmapper | マウント要求処理/RPCポート仲介 | NFSリクエストの取り次ぎ |
ひっかけ: 「/etc/exports を編集すれば即座にクライアントへ反映される」は誤りです。exportfs -ra による反映操作が必要です。また「portmapper がマウント要求を直接処理する」も誤り=マウント要求を処理するのはmountdで、portmapperはRPCサービスのポート仲介にとどまります。「現在のマウント状況は /etc/fstab を見れば分かる」も誤り=fstab は恒久設定(起動時の指示)であり、実際に今マウントされているかは/proc/mountsで確認します。
5.2.3この節のまとめ
- エクスポート定義は/etc/exports、反映はexportfs -ra。クライアントからの確認はshowmount -e、RPC登録確認はrpcinfo -p
- mountd=マウント要求処理・portmapper=RPCポート仲介。恒久マウントは/etc/fstab、実際の状態は/proc/mountsで確認
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. NFS サーバーで /etc/exports に新しい共有ディレクトリを追加したが、クライアントからまだアクセスできない。反映のために実行すべきコマンドはどれか。
Q2. クライアントから、あるNFSサーバーが現在どのディレクトリを共有しているかを確認したい。適切なコマンドはどれか。
Q3. NFS のマウントに失敗しており、原因がRPCサービスの未登録にあるかもしれないと考えている。まず確認すべきコマンドはどれか。

