はじめに

LPIC202 のトピック 209「ファイル共有」より、NFS サーバの設定についての学習メモをまとめる。
シラバスは公式サイトを参照。

そもそも NFS って?

NFS(Network File System)。ネットワーク経由でやり取りするファイルシステム。
似たような具体例は「Google ドライブ(パソコン版)をドライブとしてマウントした状態」
(普段のフォルダと同じように開けるけど、中身は手元じゃなくクラウドにある。)

  • Linux/Unix 同士でのやり取りを想定。
  • RPC(Remote Procedure Call)をベースとしている。
  • LPIC202 では NFSv3 の設定が中心。NFSv4 は概要を理解するレベルで OK。

RPC とは

Remote(遠隔の)Procedure(手続き)Call(呼び出し)。
遠くのコンピュータにある “関数(手続き)” を、まるで手元の関数みたいに呼び出す仕組み。

プログラムで result = add(2, 3) と書くと、計算は同じ端末の中で行われる。
RPC の発想は、この add() の中身が実は別のサーバにあって、ネットワーク越しに実行される、というもの。

なお rpcinfo コマンドで稼働している RPC サービスを確認できる。

NFS 確認系コマンド 対応表

コマンド実行する側仕組み何がわかるか
exportfs(または -v)サーバ自分のエクスポートテーブルを直接参照自サーバの公開設定・状態
showmount -e [host]任意(主にクライアント)対象の rpc.mountd に問い合わせサーバの公開一覧(エクスポート)
showmount [host](オプションなし)任意同上マウント中のクライアント名一覧
showmount -a [host]任意同上クライアント名:ディレクトリのペア
showmount -d [host]任意同上マウントされているディレクトリ一覧

exportfs の操作系オプション

オプション動作
exportfs -a/etc/exports の内容を全て公開に反映
exportfs -r/etc/exports を再読み込みして再エクスポート
exportfs -u指定した公開を解除(unexport)
exportfs -v詳細表示(現在の公開状態の確認)

/etc/exports

/etc/exports とは、サーバ側で「このディレクトリを公開(export)しますよ」と宣言するファイル。

/etc/exports の書式

# 基本構文
共有ディレクトリ    クライアント(オプション,オプション,...)

# 具体例
/home      192.168.1.0/24(rw,sync,root_squash)
/public    *(ro,all_squash,anonuid=65534,anongid=65534)
/data      host1.example.com(rw)  host2.example.com(ro)

/etc/exports のオプション

分類オプション意味デフォルト
アクセス権限rw / ro読み書き可 / 読み取り専用ro
書き込み同期sync / asyncディスク確定後に応答 / 即応答(高速だがリスク)sync
ユーザ権限(squash)root_squashroot だけを匿名ユーザに押しつぶす● デフォルト
ユーザ権限(squash)no_root_squashroot を匿名化しない(クライアント root = サーバ root、危険)
ユーザ権限(squash)all_squash全ユーザを匿名ユーザに押しつぶす(公開共有向け)
ユーザ権限(squash)no_all_squashroot 以外は匿名化しない● デフォルト

補足説明

  • root権限でのアクセスを許可 = root を squash してはいけない = no_root_squash が必要
  • 疑似ルートを指定するオプションは fsid=0
    • fsid について、0以外は単なる fsid 値の設定となるため注意

mount コマンド

NFS において、mount コマンドは公開されたものを自分のディレクトリツリーにつなぐ際に使用される。
上記の NFS の例えについて、

Google ドライブ(パソコン版)を「ドライブとして表示」に設定すると、エクスプローラーに G: ドライブが現れて、クラウド上のファイルを手元のフォルダみたいに開ける

と表現したが、あの “クラウドをドライブとして見せる” 作業が、NFS でいう mount

mount コマンドの基本構文

mount [-t nfs] [-o マウントオプション] NFSサーバ名:エクスポートディレクトリ  マウントポイント

NFS の mount オプション

オプション意味備考
hardハードマウント(応答まで無限にリトライ)デフォルト。プロセスは固まるが安全
softソフトマウント(一定回数で諦めてタイムアウト)プロセスは固まらないが書き込み中は破損リスク
retrans=nソフトマウント時のエラーを返すまでの再送回数timeo とセットで動作
timeo=n1回あたりのタイムアウト時間(デシ秒=1/10秒単位)retrans の前提となる待ち時間
intrハードマウント時に割り込み(シグナル)を受け付ける新しいカーネル(2.6.25以降)では廃止・無視
nolockファイルロック(NLM)を使わない古いサーバやロック不要時
rsize=n読み取りのブロックサイズを指定(バイト単位)大きいとスループット向上。未指定で自動交渉
wsize=n書き込みのブロックサイズを指定(バイト単位)同上

書く場所: mount -o ... の後ろ、または /etc/fstab の4列目(オプション欄)。

NFSデーモン バージョン別早見表(v3 / v4)

デーモン対応表

デーモン役割v3v4配置
nfsd(rpc.nfsd)実際のファイルI/Oを処理(NFS本体)必要必要サーバ
rpcbind(portmap)RPCサービスの場所案内(受付)必要不要サーバ&クライアント
rpc.mountdマウント要求の許可判定(/etc/exports参照)必要不要サーバ
rpc.idmapd名前(user@domain)とUID/GIDの対応付け不要必要サーバ&クライアント
rpc.statd(NSM)再起動検知・ロック回復必要不要(統合)サーバ&クライアント
rpc.lockd(NLM)ファイルロック管理必要不要(統合)サーバ&クライアント

v3 → v4 の構造的な違い(なぜデーモンが入れ替わるか)

  • ポート集約: v3はRPCで動的ポートを使うためrpcbindが必要。v4はポート2049に集約され、案内所(rpcbind)が不要になった。
  • マウントの統合: v4はマウント処理をNFSプロトコル自体に統合したため、独立したrpc.mountdが不要。
  • ロックの統合: v4はstatd/lockdの機能もプロトコルに内蔵(ステートフル化)したため不要。
  • 識別方式の変更: v3はUID/GIDの数字をそのまま使用。v4はuser@domain名前ベースになり、対応付け用のrpc.idmapdが新たに必要。idmapdはサーバ・クライアント双方で同じDomain設定(/etc/idmapd.conf)が必須。

変更履歴

  • 2026-06-22: LPIC202 209「NFSサーバの設定」の自習メモを整理。