NFSでLinuxサーバー間のディレクトリを共有する方法|/etc/exportsの設定とマウント手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, システム管理 > NFSでLinuxサーバー間のディレクトリを共有する方法|/etc/exportsの設定とマウント手順
「サーバー間でファイルを共有したいが、SCPで都度コピーするのは手間がかかる」
「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を推奨


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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認証対応
パフォーマンス 標準 改善(レイテンシ低減)
互換性 古いシステムに対応 現代の推奨バージョン
実務ではNFSv4を使うことを推奨します。

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

/etc/fstabを編集したら、設定が正しいか確認のためにmount -aを実行します。

$ 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
NFSは設定手順自体はシンプルですが、ファイアウォールとネットワーク設定が正しくないと接続できません。
showmount -eでサーバー側のエクスポートが見えることを確認してからマウントするのが確実です。

マウント操作についてさらに詳しく知りたい方は、fstabの設定とmountコマンドの使い方もご参照ください。

NFSの設定でつまずいたことはありませんか?

ファイアウォールの設定ミスやexportsの反映漏れなど、現場でよくある落とし穴を体系的に把握しておくと、トラブル時の対応が格段に速くなります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。