yano3nora
10/21/2017 - 5:41 AM

[linux: NFS] Network File System on Linux. #linux

[linux: NFS] Network File System on Linux. #linux

Overview

OS のファイルシステム上の任意のディレクトリについて、複数ホストと共有することができる拡散ファイルシステム。30 年近く使われていて歴史も古いらしい。

Refs


How to use ?

Install

$ yum -y install nfs-utils 
# AWS や普段使っている Vagrant 環境だと既に入ってることも
# NFS サーバ側・クライアントサーバ側ともにインストールしておく

Settings

NFS Server

# 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 

Client server

# 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  # サーバー統計情報の確認

TIPS

Case of to enable IPTables

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 

Options of /etc/exports

オプション説明
rw読み込みと書き込みの両方を許可する
ro読み込みを許可する
ro読み込みを許可する
sync同期書き込みを有効にする (デフォルト)
async非同期書き込みを有効にする
secure1024番ポートより小さいポートからのリクエストのみ受け付ける (デフォルト)
insecure1024番ポート以降のポートからのリクエストも受け付ける
wdelay別の書き込み要求が実行中/発生予定の場合、書き込みを遅らせる (デフォルト)
no_wdelaywdelay を無効にする。async と合わせて設定する
subtree_checkサブツリーのチェックを行う(デフォルト)。一般的な指針として、多くは読み込みのみでファイル名の変更があまり行われないようなディレクトリをエクスポートする場合は、サブツリーチェック有効の方がよいとされる。
no_subtree_checkサブツリーのチェックを無効にする。一般的な指針として、ホームディレクトリのような細かなファイルが多く、変更も多いディレクトリをエクスポートする場合は、 サブツリーのチェックを無効にした方がよいとされる。
root_squashroot UID/GID を anonymous UID/GID にマッピングする
no_root_squashroot を 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 にマッピングする