NFS(Network File System)は、LAN環境下で複数のマシン間でファイルやディレクトリを効率的に共有するためのネットワークファイルシステムです。企業のクラスタ構成や大規模アプリケーションで広く利用され、FastDFSやCephなどの分散ファイルシステムと比較して、シンプルな設定が特徴です。
クライアントからのリクエストは、TCP/IP経由でサーバーに到達し、ポートマッピング(portmap)を経てrpc.nfsdプロセスが接続を確認。その後rpc.mountプロセスでアクセス権限を検証し、適切な権限があればデータ操作が可能となります。
サーバー設定手順
1. 必要パッケージのインストール
yum install -y nfs-utils rpcbind
2. マウントポイントの作成
mkdir -p /mnt/nfs_share{1..5}
3. 共有設定の編集(/etc/exports)
/mnt/nfs_share1 10.0.0.0/24(rw,sync,all_squash,anonuid=1001,anongid=1001)
4. サービス再起動とセキュリティ設定
systemctl restart nfs-server rpcbind
setenforce 0
systemctl disable --now firewalld
5. 共有設定の確認
showmount -e 10.0.0.1
クライアント設定
1. NFSクライアントのインストール
yum install -y nfs-utils
2. マウントポイントの作成と接続
mkdir -p /var/app/nfs
mount -t nfs 10.0.0.1:/mnt/nfs_share1 /var/app/nfs
NFS共有パラメータの詳細
| パラメータ | 機能 |
|---|---|
| rw | 読み書き権限の付与(標準設定) |
| ro | 読み取り専用アクセス(非推奨) |
| all_squash | 全てのクライアントを匿名ユーザーにマッピング(推奨) |
| sync | メモリとディスクへの同時書き込み(データ損失防止) |
| anonuid | 匿名ユーザーのUID指定(必須) |
| anongid | 匿名ユーザーのGID指定(必須) |
Webアプリケーション連携例
1. HTTPDサーバーの設定変更(/etc/httpd/conf/httpd.conf)
User appuser
Group appuser
2. NFSマウントによるアップロードディレクトリ共有
mount -t nfs 10.0.0.1:/mnt/nfs_share_upload /var/www/app/uploads
3. アクセス権限の統一
groupadd appgroup -g 1001
useradd appuser -u 1001 -g 1001 -M -r -s /sbin/nologin
chown -R appuser.appuser /mnt/nfs_share_upload