「showmountで確認しようとしたらエラーが返ってくる」
Linux環境のファイル共有手段として、NFSは今もサーバー間でよく使われるプロトコルです。SambaほどWindowsとの相互運用性はありませんが、Linux同士であれば設定がシンプルで、性能面でも扱いやすいのが特徴です。
この記事では、RHEL 9 / Rocky Linux 9 / AlmaLinux 9 を対象に、NFSサーバーの構築・設定から、クライアント側のマウント手順、よくあるトラブルの対処まで、一通りの流れを解説します。
この記事のポイント
・NFSサーバーは nfs-utils インストール後、/etc/exports を書いて nfs-server を起動する
・/etc/exports の書式は「ディレクトリ クライアント(オプション)」の形式が基本
・firewalld でポートを開放し、exportfs -r でエクスポートを反映する
・クライアント側は mount -t nfs または /etc/fstab で永続マウントが可能
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
NFSとは何か|Linux間ファイル共有の定番プロトコル
NFS(Network File System)は、ネットワーク越しにファイルシステムをマウントするプロトコルです。Sunが1984年に開発し、Linux/Unix環境では事実上の標準として長年使われています。現在の主流はNFS v4(NFSv4)で、KerberosによるRPCセキュリティ、ACL、デリゲーション機能などが追加されています。RHEL 9ではデフォルトでNFSv4が使われます。
NFSとSambaの使い分け:
・NFS:Linux同士のファイル共有。Samba より設定がシンプルで、パフォーマンスも良い傾向がある
・Samba(CIFS):WindowsクライアントとLinuxサーバーを繋ぐ場合はこちらが向いている
動作確認環境:Rocky Linux 9.4 / AlmaLinux 9.4 / RHEL 9.4(カーネル 5.14.0)
NFSサーバーのセットアップ手順
1. nfs-utils をインストールする
まず nfs-utils パッケージをインストールします。RHEL 9 系では標準リポジトリに含まれているので、dnf 1行で完了します。# パッケージをインストール dnf install -y nfs-utils # バージョン確認 rpm -q nfs-utils # nfs-utils-2.5.4-26.el9.x86_64
2. nfs-server サービスを起動・自動起動設定する
# サービス起動 systemctl start nfs-server # 自動起動設定 systemctl enable nfs-server # 状態確認 systemctl status nfs-server
* nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; preset: disabled) Active: active (running) since Fri 2026-05-29 10:12:07 JST; 3min ago
3. 共有ディレクトリを作成する
共有するディレクトリを作成します。所有者・パーミッションは用途に合わせて設定してください。# 共有用ディレクトリを作成 mkdir -p /nfs/shared # パーミッションを設定(クライアントから書き込むなら 777 または適切なグループ設定) chmod 755 /nfs/shared # 所有者を確認 ls -la /nfs/
/etc/exports の書き方
NFSサーバーの公開設定は/etc/exports に記述します。1行が1つのエクスポートエントリになります。4. /etc/exports の基本書式
# 書式 # ディレクトリ クライアント(オプション) クライアント(オプション) ... # 例1: 192.168.10.0/24 サブネットに読み書き許可 /nfs/shared 192.168.10.0/24(rw,sync,no_subtree_check) # 例2: 特定ホスト1台に読み取り専用 /nfs/data 192.168.10.50(ro,sync,no_subtree_check) # 例3: すべてのホストに読み取り専用(テスト用途のみ推奨) /nfs/pub *(ro,sync,no_subtree_check)
・rw:読み書き許可(read-write)
・ro:読み取り専用(read-only)
・sync:書き込みを即座にディスクに反映(データ損失リスクを減らす)。本番は sync 推奨
・async:バッファリングして書き込み。高速だがクラッシュ時データが失われる可能性あり
・no_subtree_check:サブツリーチェックを無効化。パフォーマンス向上、かつ一般的に安全
・no_root_squash:クライアントの root をサーバー側 root として扱う。通常は使わない
・root_squash:クライアントの root を nobody にマップ(デフォルト)
・all_squash:すべてのユーザーを nobody にマップ
本番環境では
rw,sync,no_subtree_check が標準的な組み合わせです。5. exportfs コマンドでエクスポートを反映する
/etc/exports を編集した後は、exportfs コマンドで反映します。nfs-server を再起動する必要はありません。# /etc/exports を再読み込みして反映 exportfs -r # 現在のエクスポート一覧を表示 exportfs -v
exportfs -v の出力例:/nfs/shared 192.168.10.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
firewalld でポートを開放する
6. NFS に必要なサービスを開放する
firewalld が有効な環境では、NFS・mountd・rpc-bind の3サービスを許可する必要があります。# NFS関連サービスを許可 firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=mountd firewall-cmd --permanent --add-service=rpc-bind # 設定を反映 firewall-cmd --reload # 確認 firewall-cmd --list-services # cockpit dhcpv6-client mountd nfs rpc-bind ssh
NFSクライアントからマウントする方法
7. クライアント側に nfs-utils をインストールする
クライアント側にも nfs-utils が必要です。# クライアント側でインストール dnf install -y nfs-utils
8. showmount でサーバーの公開一覧を確認する
マウントする前に、サーバー側が何を公開しているかshowmount で確認できます。# NFSサーバー(192.168.10.10)の公開一覧を表示 showmount -e 192.168.10.10
Export list for 192.168.10.10: /nfs/shared 192.168.10.0/24
9. mount コマンドで一時マウントする
# マウントポイントを作成 mkdir -p /mnt/nfsshared # NFSマウント(NFSv4を明示する場合) mount -t nfs -o vers=4 192.168.10.10:/nfs/shared /mnt/nfsshared # マウント確認 df -h /mnt/nfsshared # Filesystem Size Used Avail Use% Mounted on # 192.168.10.10:/nfs/shared 50G 2.3G 48G 5% /mnt/nfsshared
10. /etc/fstab に書いて起動時に自動マウントする
恒久的に使うなら/etc/fstab に登録します。# /etc/fstab に追記(末尾に1行) # 書式:デバイス マウントポイント ファイルシステム オプション dump pass 192.168.10.10:/nfs/shared /mnt/nfsshared nfs defaults,vers=4,_netdev 0 0
_netdev は「ネットワーク起動後にマウントする」という意味のオプションです。NFSなど、ネットワーク依存のマウントには必ず付けてください。付け忘れると、ネットワーク未起動の状態でマウントを試みてブート時にハングすることがあります。設定後にテストする場合は:
# fstab から読み込んでマウント mount -a # マウント確認 mount | grep nfsshared
NFSv4 のユーザーIDマッピング(idmapd)
NFSv4では、UID/GIDの代わりにユーザー名(user@domain形式)でファイル所有者を識別します。この変換を行うのがnfs-idmapd サービスです。サーバー・クライアント双方で
/etc/idmapd.conf のドメイン名を一致させないと、ファイル所有者が nobody と表示されてしまいます。# サーバー・クライアント両側で /etc/idmapd.conf を確認 cat /etc/idmapd.conf | grep Domain # Domain = localdomain # 変更する場合(サーバー・クライアント両側で同じ値にする) # vi /etc/idmapd.conf # [General] # Domain = example.local # サービスを再起動して反映 systemctl restart nfs-idmapd
トラブルシュート|よくあるエラーと対処法
「showmount: clnt_create: RPC: Port mapper failure - Unable to receive」
クライアントからサーバーの rpcbind(ポートマッパー)に到達できていません。確認ポイント:
・サーバー側:
systemctl status rpcbind で起動しているか確認。停止していれば systemctl start rpcbind・サーバー側 firewalld:
firewall-cmd --list-services で rpc-bind が含まれているか確認・ネットワーク疎通:クライアントから
ping 192.168.10.10 でサーバーに到達できるか確認「mount.nfs: access denied by server while mounting」
/etc/exports でクライアントIPが許可されていません。# サーバー側で現在のエクスポート設定を確認 exportfs -v # /etc/exports の設定がクライアントIPを含んでいるか確認 cat /etc/exports # 変更後は必ず exportfs -r で反映 exportfs -r
「mount.nfs: No route to host」
ネットワーク経路またはファイアウォールの問題です。・
ping でL3疎通を確認・
nc -zv 192.168.10.10 2049 でNFSポート(2049/tcp)の到達性を確認(参考記事: Linux ポート確認の全コマンド)・サーバー側の firewalld に nfs サービスが追加されているか確認
ファイル所有者が nobody になる
NFSv4のidmapd設定が不一致です。サーバー・クライアント双方の/etc/idmapd.conf の Domain 行が同じ値になっているか確認して、systemctl restart nfs-idmapd を両側で実行してください。再起動後にマウントされない(ハング)
/etc/fstab に _netdev オプションが付いていない可能性が高いです。NFSエントリのオプション欄を確認し、_netdev を追加してください。NFSサーバー運用の実務Tips
エクスポート設定を確認するワンライナー
# 現在のエクスポート情報を詳細表示 exportfs -v # 特定のディレクトリのみ確認 exportfs -v | grep /nfs/shared
NFSの接続状況を確認する
# 現在接続しているNFSクライアントを表示(NFSv4はstatd不要のため一覧はnfsstat等で確認) nfsstat -s # NFSサーバーの統計を確認 nfsstat -c
パーミッション設計の注意点
NFS越しのファイルはUID/GIDで権限が判定されます。サーバーとクライアントで同じUID/GIDのユーザーが存在しないと、権限エラーが起きます。複数台のサーバーで一貫したUID/GIDを維持するには、LDAP(OpenLDAP/SSSD)や FreeIPA を使ってユーザー管理を一元化するのが実務的な解決策です。
また、ファイルのパーミッション設定については mount コマンドの使い方 も合わせて参照してください。
本記事のまとめ
| やりたいこと | コマンド・設定 |
|---|---|
| nfs-utils をインストール | dnf install -y nfs-utils |
| NFSサーバーを起動・自動起動設定 | systemctl enable --now nfs-server |
| エクスポート設定を反映 | exportfs -r |
| エクスポート一覧を表示 | exportfs -v |
| firewalldにNFSを許可 | firewall-cmd --permanent --add-service=nfs && firewall-cmd --reload |
| サーバーの公開一覧を確認 | showmount -e サーバーIP |
| NFSマウント(一時) | mount -t nfs -o vers=4 サーバーIP:/パス /マウントポイント |
| NFSマウント(永続・fstab) | サーバーIP:/パス /マウントポイント nfs defaults,vers=4,_netdev 0 0 |
| UID/GIDドメイン設定確認 | /etc/idmapd.conf の Domain 行 |
/etc/exports の基本構文と、exportfs -r による反映、showmount -e による確認の3ステップを押さえておけば、現場でも問題なく運用できるはずです。NFSの応用として、システム管理全般の知識を深めたい方は「mount コマンドの使い方」や「Linux ポート確認の全コマンド」もぜひ参照してください。
Linuxのファイルサーバー・ストレージ管理をさらに体系的に学ぶには、弊社が提供しているLinuxサーバー構築セミナーも参考にしてみてください。現役エンジニアが実機を使ってハンズオンで教える形式なので、コマンドだけでなく「なぜそう設定するのか」という背景まで短期間で身につけられます。
NFSの設定を覚えたら、次はサーバー構築の基礎を体系的に固めませんか?
NFSをはじめとするLinuxのサーバー設定は、手順を知っているだけでは不十分です。なぜそう設定するのかという背景まで理解してこそ、現場で応用が利く力がつきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:keepalivedコマンドでLinuxサーバーを冗長化する方法|VRRP設定・仮想IP・フェイルオーバーの実践例
- 前のページへ:mysqldumpコマンドでMySQLデータベースをバックアップする方法|フルバックアップから特定テーブル・リストアまで
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます