テクノロジーガイド

AlmaLinux 9でのNFSサーバーとクライアントの設定

2 min read Linux 更新されました 29 Sep 2025
AlmaLinux 9でNFSサーバーとクライアントを構築
AlmaLinux 9でNFSサーバーとクライアントを構築

NFSのクライアントとサーバーの概念図

はじめに

NFS(Network File System)は、リモートのディスクやディレクトリをローカルのファイルシステムのように扱えるネットワークプロトコルです。Sun Microsystemsが開発し、UNIX系の分散ファイル共有で広く使われる標準プロトコルになりました。中央サーバー上でデータを集約し、複数のクライアントがそのデータを共有・操作する用途でよく利用されます。

このガイドは次を扱います。

  • AlmaLinux 9でのNFSサーバーのインストールと基本設定
  • 共有ディレクトリの作成とエクスポート設定
  • firewalldによるポート/サービスの開放
  • クライアント側でのマウントと自動マウント設定(/etc/fstab)
  • 権限・SELinux・パフォーマンス・トラブルシューティングの実務的ヒント

対象読者: Linux管理者、インフラエンジニア、中〜上級のシステム運用担当

重要: 本手順はテスト用途や社内ネットワーク向けの基本構成を想定しています。本番環境では追加の認証・暗号化・監査対策を検討してください。

前提条件

  • AlmaLinux 9のサーバー(本例: ホスト名 almalinux9-server、IP 192.168.10.15)
  • sudo権限を持つ非rootユーザー
  • 1台以上のクライアント(RHEL系の任意のディストリビューション可)

NFSサーバーのインストール

NFSの実装はnfs-utilsパッケージで提供されます。サーバーとクライアントの両方にインストールしてください。

サーバーで以下を実行します。

sudo dnf install nfs-utils

nfs-utilsのインストール画面

idmapdのドメイン設定

NFSv4ではユーザー/グループ名のマッピングにidmapdが使われ、idmapd.confのDomainを正しく設定することが推奨されます。エディタでファイルを開き、DomainをFQDNまたはホスト名に設定します。

sudo nano /etc/idmapd.conf

ファイル内のDomainを編集します。

Domain = almalinux9-server

保存して終了します。

NFSサービスの起動と有効化

sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo systemctl status nfs-server

サービスが正常に動作していることを確認してください。

nfs-serverの起動と有効化の出力例

共有ディレクトリの作成とエクスポート設定

まず共有用ディレクトリを作成し、適切な所有権とパーミッションを設定します。本例では/mnt/sharedと/mnt/backupを使用します。

sudo mkdir -p /mnt/shared /mnt/backup
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup

次にエクスポート設定ファイルを編集します。

sudo nano /etc/exports

この例では以下のようにエクスポートします。クライアントのアクセス元を限定し、必要なオプションを付与します。

/mnt/backup 192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)

各オプションの意味(要点):

  • rw: 読み書きを許可します。
  • sync: データをディスクに同期してからクライアント要求を処理します(安全性優先、速度は低下)。
  • no_subtree_check: サブツリー検査を無効化しパフォーマンスを改善します。
  • no_root_squash: クライアントのrootがエクスポート先でroot権限を保持します。信頼できるクライアントにのみ設定してください。

設定後、NFSを再起動して反映します。

sudo systemctl restart nfs-server
sudo exportfs -v

exportfs -vでエクスポート状況を確認します。

firewalldによる保護とサービス開放

NFSを利用するクライアントがファイアウォールでブロックされないよう、必要なサービスを許可します。firewalldが動作していることを確認した上で以下を実行します。

sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

出力を確認し、NFS関連サービスがゾーンに追加されていることを確認してください。

firewalldの設定確認例

注意: 内部ネットワークだけに限定する場合はゾーンやリッチルールでアクセス元を限定してください。

クライアントの設定とマウント

クライアント側でもnfs-utilsをインストールします。

sudo dnf install nfs-utils

サーバーがエクスポートしている共有を確認します。

sudo showmount -e 192.168.10.15

期待する共有: /mnt/backup, /mnt/shared, /home

クライアントから見たエクスポート一覧

クライアント側でマウント先ディレクトリを作成します。

sudo mkdir -p /data /backup /shared

サーバー上のエクスポートをマウントします。

sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data

マウント状況を確認します。

sudo df -h

クライアントでのマウント確認

クライアントからの書き込み確認

クライアント上でファイルを作成し、サーバー側にも反映されることを検証します。

echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt

サーバー側で内容を確認します。

cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt

クライアント書き込みのテスト結果

サーバー上でのファイル確認

/etc/fstabでの自動マウント設定

再起動時に自動でマウントするにはクライアント側の/etc/fstabにエントリを追加します。まず既存のマウントを解除します。

sudo umount /data /backup /shared
sudo df -h

アンマウントの例

/etc/fstabを編集します。

sudo nano /etc/fstab

次のような行を追加します。マウントオプションはネットワークの安定性や用途に応じて調整してください。

192.168.10.15:/mnt/backup    /backup   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared    /shared   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home    /data   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

保存後、mount -aで検証します。

sudo mount -a
sudo df -h

fstabからの自動マウント確認

自動マウント後のdf出力例

運用時のセキュリティとSELinuxの留意点

  • no_root_squashやrwの設定は最小権限の原則に従って限定的に使用してください。
  • NFSv4はIDマッピングとより良い名前空間分離を提供しますが、認証や暗号化は別途検討が必要です。機密データを扱う場合はVPNやIPsec、stunnel/sshトンネルなどを検討してください。
  • SELinuxが有効な環境では、エクスポート対象ディレクトリのコンテキストを確認し、必要ならばブール値やコンテキストを設定します。たとえばエクスポートするホームディレクトリに対して
sudo restorecon -R /home

必要に応じてSELinuxブールを調整します(環境に依存します)。

パフォーマンスとマウントオプションの選び方

  • actimeo: 属性キャッシュの有効時間(秒)を決めます。短くすると整合性は上がるがネットワーク負荷が増える。
  • rsize/wsize: 読み書きブロックサイズ(大きすぎるとネットワーク機器で断片化される可能性あり)。
  • sync vs async: syncは安全だが遅い。バックアップや重要データはsync推奨。
  • noatime: アクセス時間更新を抑制しI/Oを削減します。

パフォーマンス調整は実測を基に行ってください。

よくある問題とトラブルシューティング

  1. マウント時にPermission deniedが出る

    • /etc/exportsでアクセス元が許可されているか確認
    • ディレクトリの所有者とパーミッションを確認
    • SELinuxのログ(/var/log/audit/audit.log)を確認
  2. mountがタイムアウトする/接続できない

    • firewall-cmdで必要なサービスが開放されているか確認
    • サーバー側でrpcbindやnfs-serverが稼働しているか確認
    • ネットワークに不整合(DNSやルーティング、IPアドレス)をチェック
  3. stale file handleエラー

    • サーバー側でエクスポートやファイルシステムが変更された場合に発生することがあります。クライアントでumountして再マウント、場合によってはプロセスの再起動が必要です。

便利なデバッグコマンド

sudo journalctl -u nfs-server -b
sudo exportfs -v
sudo showmount -e <サーバーIP>
sudo rpcinfo -p <サーバーIP>

いつNFSを選ばないか(代替案)

  • 高いレイテンシや不安定なネットワークがある場合: S3互換オブジェクトストレージや分散ファイルシステム(GlusterFS/CephFS)を検討
  • 高度なアクセス制御や暗号化が必須のケース: SFTP、SMB over TLS、NFS over Kerberos(NFSv4 + sec=krb5)などの導入を検討

運用向けチェックリスト

管理者準備チェックリスト:

  • nfs-utilsがサーバーとクライアントにインストール済み
  • /etc/idmapd.confのDomainを設定
  • /etc/exportsを最小権限で設定(必要なクライアントだけ許可)
  • firewalldでnfs/nfs3/mountd/rpc-bindを許可
  • SELinuxコンテキストと必要なブールを確認
  • 自動マウント(/etc/fstab)を設定してmount -aで検証
  • 定期的にexportfs -vを監視し変更を把握

クライアント利用者チェックリスト:

  • マウントポイントのパーミッションを確認
  • 書き込みテスト(小さなファイル)を実施
  • アプリケーションのログやI/Oパターンを監視

プレイブック: 新しいエクスポートを追加する手順

  1. サーバーでディレクトリを作成し、パーミッションと所有者を設定
  2. /etc/exportsにエントリを追加
  3. sudo exportfs -r でエクスポートを再読み込み
  4. sudo systemctl restart nfs-server(必要に応じて)
  5. クライアント側で sudo showmount -e サーバーIP を実行して確認
  6. クライアントで sudo mount -a を実行して自動マウントを反映

受け入れ基準(Критерии приёмки の日本語版)

  • サーバーは systemctl status nfs-server でアクティブ表示
  • exportfs -v にて期待する共有が表示される
  • クライアントで mount により共有がマウントされ、書き込み・読み取りが可能
  • 再起動後も /etc/fstab により自動マウントされる

テストケース(簡易)

  • TC1: クライアントからファイル作成 → サーバーで内容確認
  • TC2: サーバーでファイル削除 → クライアントで削除反映の確認
  • TC3: ネットワーク断をシミュレート → クライアントで再接続後の整合性確認
  • TC4: exportを変更 → クライアントでumount/mount後の挙動確認

1行用語集

  • NFS: ネットワーク上でファイルを共有するためのプロトコル
  • export: サーバーが共有を公開する設定
  • mount: クライアントが共有を取り付ける操作
  • idmapd: ユーザー/グループ名マッピングを行うデーモン

役割別チェックリスト

システム管理者:

  • /etc/exportsのバックアップ管理
  • エクスポート変更時の稼働影響評価
  • 監視とログの設定(NFS関連のエラー検出)

アプリケーション管理者:

  • アプリのファイルI/Oパターンを把握し、NFSの遅延が影響しないか検証
  • アクセス権とファイル所有の要件を提示

トラブル緊急時のロールバック手順

  1. 影響が出ている共有をクライアントでアンマウント
sudo umount /path
  1. サーバーで/etc/exportsを以前の状態に戻す(バックアップから復元)
  2. sudo exportfs -r を実行して再公開
  3. 必要ならnfs-serverを再起動

付録: 参考コマンドまとめ

sudo dnf install nfs-utils
sudo systemctl start|enable|status nfs-server
sudo nano /etc/idmapd.conf
sudo nano /etc/exports
sudo exportfs -v
sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo showmount -e 
sudo mount :/export /mnt
sudo umount /mnt
sudo mount -a
sudo journalctl -u nfs-server -b

まとめ

このガイドではAlmaLinux 9でのNFSの基本的な導入から、共有の作成、ファイアウォール設定、クライアントでのマウント、/etc/fstabによる自動マウント、運用上の注意点、トラブルシューティングの手順を網羅しました。運用においては最小権限での公開、SELinuxやネットワーク設定の確認、パフォーマンス試験を行うことが重要です。

次のステップ: NFSv4でのKerberos認証(sec=krb5)や暗号化、監査ログの導入、バックアップ戦略の設計を検討してください。

重要: 本記事のコマンドや設定は環境によって調整が必要です。実運用に適用する前にテスト環境で必ず検証してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Windows レジストリを安全にバックアップ・復元する方法
Windows 管理

Windows レジストリを安全にバックアップ・復元する方法

Instagramで「いいね」した投稿を見る方法
ソーシャルメディア

Instagramで「いいね」した投稿を見る方法

WhatsAppでGboardとSwiftKeyの音声入力を使う方法
モバイル

WhatsAppでGboardとSwiftKeyの音声入力を使う方法

IMDbの共通検索ガイド — 共演・共通スタッフを見つける方法
映画

IMDbの共通検索ガイド — 共演・共通スタッフを見つける方法

Rainmeterでデスクトップに引用を表示する方法
How-to

Rainmeterでデスクトップに引用を表示する方法

AlmaLinux 9でNFSサーバーとクライアントを構築
Linux

AlmaLinux 9でNFSサーバーとクライアントを構築