「NFSを使えばリモートディレクトリを自分のサーバーにマウントできると聞いたが、設定方法がわからない」
NFS(Network File System)は、Linuxサーバーのディレクトリをネットワーク経由で別のLinuxサーバーにマウントする仕組みです。
一度設定すれば、ローカルのディレクトリと同じように読み書きできるため、
ログの集中管理や共有ストレージとして広く使われています。
この記事では、NFSサーバー側の/etc/exportsの設定から、クライアント側のmountコマンドによるマウント、
/etc/fstabへの自動マウント設定、トラブルシュートまで、実際のコマンド出力例を交えて解説します。
【この記事でわかること】
・NFSサーバー側は/etc/exportsにエクスポート設定を書き、exportfsコマンドで反映する
・クライアント側はmount -t nfsでマウント、/etc/fstabで自動マウントを設定できる
・showmountコマンドでサーバーのエクスポート一覧を確認できる
・NFSv4はポートが2049固定でファイアウォール設定が簡単、実務ではNFSv4を推奨
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
NFSとは?どんな場面で使うのか
NFSはSun Microsystemsが1984年に開発した、UNIX/Linux標準のネットワークファイルシステムです。現在はバージョン4(NFSv4)が主流で、セキュリティや性能が大幅に向上しています。
1. NFSを使う代表的な場面
・ログの集中管理:複数のWebサーバーのアクセスログをNFSで1台のサーバーに集約する・共有コンテンツの配信:Webサーバークラスターで同じコンテンツを共有する
・ホームディレクトリの共有:LDAPと組み合わせて、どのサーバーからも同じホームディレクトリにアクセスする
・バックアップ用途:バックアップサーバーのNFSマウントにrsyncで転送する
2. NFSv3とNFSv4の違い
| 項目 | NFSv3 | NFSv4 |
|---|---|---|
| ポート | rpcbind(111)+ 動的ポート | 2049固定 |
| ファイアウォール設定 | 複雑(動的ポートを許可必要) | シンプル(2049のみ) |
| セキュリティ | IP認証のみ | Kerberos認証対応 |
| パフォーマンス | 標準 | 改善(レイテンシ低減) |
| 互換性 | 古いシステムに対応 | 現代の推奨バージョン |
NFSサーバー側の設定
ここでは以下の構成を例に解説します。・NFSサーバー:192.168.1.100(共有するディレクトリ /data/shared)
・NFSクライアント:192.168.1.101(マウント先 /mnt/nfs)
1. nfs-utilsのインストールと起動
# CentOS 7 / RHEL 7 / Rocky Linux 8・9 $ sudo yum install -y nfs-utils # CentOS 7 $ sudo dnf install -y nfs-utils # Rocky Linux 8・9 # サービスを起動して自動起動を有効にする $ sudo systemctl enable --now nfs-server Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service. # 起動確認 $ sudo systemctl status nfs-server * nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) Active: active (exited) since Mon 2026-04-07 10:00:00 JST; 5s ago
2. /etc/exportsの設定
エクスポートするディレクトリを/etc/exportsファイルに記述します。$ sudo vi /etc/exports # /etc/exports の書き方 # 共有ディレクトリ クライアントホスト(オプション) # 特定のホストにのみ共有する(読み書き可能) /data/shared 192.168.1.101(rw,sync,no_root_squash) # サブネット全体に共有する(読み取り専用) /data/shared 192.168.1.0/24(ro,sync) # 複数のホストに異なるオプションで共有する /data/shared 192.168.1.101(rw,sync) 192.168.1.102(ro,sync)
・rw:読み書き可能(readwrite)
・ro:読み取り専用(readonly)
・sync:書き込みを確認してから応答する(データ整合性を優先)
・async:書き込み前に応答する(パフォーマンス重視、データロストのリスクあり)
・no_root_squash:クライアントのrootをサーバー側でもrootとして扱う
・root_squash:クライアントのrootをサーバー側でnobodyとして扱う(デフォルト・推奨)
・all_squash:すべてのユーザーをnobodyとして扱う(匿名アクセス向け)
3. exportfsで設定を反映する
/etc/exportsを変更したら、exportfsコマンドで反映します。$ sudo exportfs -a # -a : /etc/exports の全エントリをエクスポートする $ sudo exportfs -r # -r : 再エクスポート(変更を反映する場合に使う) # 現在のエクスポート一覧を確認 $ sudo exportfs -v /data/shared 192.168.1.101(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
4. ファイアウォールの設定
NFSv4ではポート2049のみ許可すれば動作します。# firewalldを使う場合(CentOS 7 / Rocky Linux) $ sudo firewall-cmd --add-service=nfs --permanent $ sudo firewall-cmd --reload # または特定ポートのみ許可する場合 $ sudo firewall-cmd --add-port=2049/tcp --permanent $ sudo firewall-cmd --add-port=2049/udp --permanent $ sudo firewall-cmd --reload # 設定確認 $ sudo firewall-cmd --list-all public services: nfs ssh http https
NFSクライアント側の設定
1. nfs-utilsのインストール
$ sudo yum install -y nfs-utils # CentOS 7 $ sudo dnf install -y nfs-utils # Rocky Linux 8・9
2. showmountでサーバーのエクスポート一覧を確認する
マウント前に、NFSサーバーがどのディレクトリをエクスポートしているか確認できます。$ showmount -e 192.168.1.100 Export list for 192.168.1.100: /data/shared 192.168.1.101 # -e : エクスポート一覧を表示する
3. mountコマンドで手動マウントする
# マウントポイントを作成する $ sudo mkdir -p /mnt/nfs # NFSマウントを実行する $ sudo mount -t nfs 192.168.1.100:/data/shared /mnt/nfs # または NFSv4を明示する場合 $ sudo mount -t nfs4 192.168.1.100:/data/shared /mnt/nfs # マウント確認 $ mount | grep nfs 192.168.1.100:/data/shared on /mnt/nfs type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,...) # または df コマンドで確認 $ df -h | grep nfs 192.168.1.100:/data/shared 50G 10G 40G 20% /mnt/nfs
4. /etc/fstabで自動マウントを設定する
サーバー再起動後も自動的にマウントされるように/etc/fstabに設定を追加します。$ sudo vi /etc/fstab # 末尾に以下を追加する # デバイス マウントポイント 種類 オプション dump fsck 192.168.1.100:/data/shared /mnt/nfs nfs4 defaults 0 0 # NFSv3を使う場合 192.168.1.100:/data/shared /mnt/nfs nfs defaults,vers=3 0 0
$ sudo mount -a # エラーなく完了すれば設定は正しい $ mount | grep nfs 192.168.1.100:/data/shared on /mnt/nfs type nfs4 (rw,relatime,...)
5. アンマウントする
$ sudo umount /mnt/nfs # デバイス名でアンマウントすることも可能 $ sudo umount 192.168.1.100:/data/shared # ファイルシステムがビジー状態でアンマウントできない場合 $ fuser -m /mnt/nfs # どのプロセスがマウントポイントを使っているか確認 $ sudo umount -l /mnt/nfs # -l : レイジーアンマウント(プロセスが終了次第アンマウント)
トラブルシュート:よくあるNFSのエラーと対処法
1. 「mount.nfs: access denied by server while mounting」
サーバー側の/etc/exportsにクライアントのIPが含まれていないか、exportfsの反映が漏れている可能性があります。
# サーバー側で確認 $ sudo exportfs -v # クライアントのIPが含まれているか確認 # 設定を再反映する $ sudo exportfs -r # クライアント側でshowmountが通るか確認 $ showmount -e 192.168.1.100
2. 「mount.nfs: Connection timed out」
ファイアウォールがNFSポートをブロックしている可能性があります。# サーバー側でfirewalldの設定を確認 $ sudo firewall-cmd --list-all | grep -E "services|ports" # NFSポートが開いているか確認 $ sudo firewall-cmd --add-service=nfs --permanent $ sudo firewall-cmd --reload # または直接ポートを確認 $ sudo ss -tnlp | grep 2049 LISTEN 0 64 0.0.0.0:2049 0.0.0.0:*
3. 「stale file handle」(古いファイルハンドル)エラー
NFSサーバーが再起動またはエクスポートが変更された際に、クライアント側のキャッシュが古くなって発生します。# クライアント側でアンマウントして再マウントする $ sudo umount -l /mnt/nfs $ sudo mount -t nfs4 192.168.1.100:/data/shared /mnt/nfs
4. NFSマウント後に読み書きが遅い
mountオプションでパフォーマンスを調整できます。$ sudo mount -t nfs4 -o rsize=131072,wsize=131072,hard,intr 192.168.1.100:/data/shared /mnt/nfs # rsize/wsize : 読み書きのブロックサイズ(大きくするとスループット向上) # hard : サーバーダウン時に応答を待ち続ける(データ整合性優先) # soft : サーバーダウン時にエラーを返す(応答性優先) # intr : Ctrl+Cで中断を許可する
本記事のまとめ
NFSサーバー間ディレクトリ共有の設定手順をまとめます。| やりたいこと | コマンド・設定ファイル |
|---|---|
| エクスポート設定を記述する | sudo vi /etc/exports |
| エクスポートを反映する | sudo exportfs -r |
| エクスポート一覧を確認する | sudo exportfs -v |
| サーバーのエクスポート一覧を確認する | showmount -e サーバーIP |
| NFSv4でマウントする | sudo mount -t nfs4 サーバーIP:/共有パス /マウント先 |
| 自動マウントを設定する | sudo vi /etc/fstab(nfs4タイプで追記) |
| アンマウントする | sudo umount /マウント先 |
| NFSサービスを起動する | sudo systemctl enable --now nfs-server |
showmount -eでサーバー側のエクスポートが見えることを確認してからマウントするのが確実です。マウント操作についてさらに詳しく知りたい方は、fstabの設定とmountコマンドの使い方もご参照ください。
NFSの設定でつまずいたことはありませんか?
ファイアウォールの設定ミスやexportsの反映漏れなど、現場でよくある落とし穴を体系的に把握しておくと、トラブル時の対応が格段に速くなります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:インストールログを確認する
- 前のページへ:LinuxでPerlモジュールを一覧表示する方法|バージョン確認やインストールも
- この記事の属するカテゴリ:Linuxtips・システム管理へ戻る

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