[linux: NFS] Network File System on Linux. #linux
OS のファイルシステム上の任意のディレクトリについて、複数ホストと共有することができる拡散ファイルシステム。30 年近く使われていて歴史も古いらしい。
$ yum -y install nfs-utils
# AWS や普段使っている Vagrant 環境だと既に入ってることも
# NFS サーバ側・クライアントサーバ側ともにインストールしておく
# 1. ドメイン名を設定
$ vi /etc/idmapd.conf
> #Verbosity = 0
> # The following should be set to the local NFSv4 domain name
> # The default is the host's DNS domain name.
> Domain = your.domain.here # コメントを外して自身ドメイン名に
# 2. 共有ディレクトリ作成
# - 慣習的に export / import が利用されるみたい
# - 暗号化されていたりルート直下じゃないと外だしできないみたい
$ mkdir -p /export
# 3. マウント設定の記述
$ vi /etc/exports
> /export {IP_ADDRESS}(rw,all_squash)
# 上記で export ディレクトリを {IP_ADDRESS} に開放して共有している
# 4. 実行と再起動時有効化
$ /etc/rc.d/init.d/rpcbind start
$ /etc/rc.d/init.d/nfs start
$ chkconfig rpcbind on
$ chkconfig nfs on
# 1. マウントポイント作成
$ mkdir /import
# 2. マウントの割当て設定 (末尾追加)
$ vim /etc/fstab
> {IP_ADDRESS}:/export /import nfs defaults 0 0
# 上記の {IP_ADDRESS} および ディレクトリは NFS サーバで設定したモノを指定
# 3. マウント開始
$ mount /import
# 4. マウント状況の確認
$ nfsstat -m # クライアント上の NFS マウント一覧
$ nfsstat -c # クライアント統計情報の確認
$ nfsstat -s # サーバー統計情報の確認
NFS は動的にポートを割り当てる仕様。IPTables が有効の際はポートを固定し、そのポートを IPTables で許可してやる必要がある。
$ vi /etc/sysconfig/nfs
# 20,22行目:コメント解除
> LOCKD_TCPPORT=32803
> LOCKD_UDPPORT=32769
# 57行目:コメント解除
> MOUNTD_PORT=892
# 63行目:コメント解除
> STATD_PORT=662
$ /etc/rc.d/init.d/rpcbind restart
$ /etc/rc.d/init.d/nfs restart
# 111, 2049 および固定設定したポートを許可
$ for port in 111 662 892 2049 32803; do iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport $port -j ACCEPT; done
$ for port in 111 662 892 2049 32769; do iptables -I INPUT 6 -p udp -m state --state NEW -m udp --dport $port -j ACCEPT; done
オプション | 説明 |
---|---|
rw | 読み込みと書き込みの両方を許可する |
ro | 読み込みを許可する |
ro | 読み込みを許可する |
sync | 同期書き込みを有効にする (デフォルト) |
async | 非同期書き込みを有効にする |
secure | 1024番ポートより小さいポートからのリクエストのみ受け付ける (デフォルト) |
insecure | 1024番ポート以降のポートからのリクエストも受け付ける |
wdelay | 別の書き込み要求が実行中/発生予定の場合、書き込みを遅らせる (デフォルト) |
no_wdelay | wdelay を無効にする。async と合わせて設定する |
subtree_check | サブツリーのチェックを行う(デフォルト)。一般的な指針として、多くは読み込みのみでファイル名の変更があまり行われないようなディレクトリをエクスポートする場合は、サブツリーチェック有効の方がよいとされる。 |
no_subtree_check | サブツリーのチェックを無効にする。一般的な指針として、ホームディレクトリのような細かなファイルが多く、変更も多いディレクトリをエクスポートする場合は、 サブツリーのチェックを無効にした方がよいとされる。 |
root_squash | root UID/GID を anonymous UID/GID にマッピングする |
no_root_squash | root を anonymous UID/GID にマッピングしない |
all_squash | 全 UID/GID を anonymous UID/GID にマッピングする |
no_all_squash | 全 UID/GID を anonymous UID/GID にマッピングしない (デフォルト) |
anonuid=UID | 指定の UID を anonymous UID にマッピングする |
anongid=GID | 指定の GID を anonymous GID にマッピングする |