NFSネットワーク共有ストレージの実装と設定

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

タグ: NFS linux systemd HTTPD rpcbind

5月24日 14:30 投稿