Show Table of Contents
8.7.1.
8.7.2.
8.7. NFS サーバーの設定
NFS サーバーのエクスポートを設定する方法は 2 つあります。
- NFS の設定ファイル
/etc/exports
を手動で編集する方法。 - コマンドラインで、コマンド
exportfs
を使用する方法。
8.7.1. /etc/exports
設定ファイル
/etc/exports
ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。以下の構文ルールに従います。
- 空白行は無視する。
- コメント行は、ハッシュ記号 (
#
) で始める。 - 長い行はバックスラッシュ (
\
) を使って折り返す。 - エクスポートするファイルシステムは、それぞれ 1 行で指定する。
- 許可するホストの一覧は、エクスポートするファイルシステムの後に空白文字を追加し、その後に追加する。
- 各ホストのオプションは、ホスト識別子の直後に括弧を追加し、その中に指定する。ホストと最初の括弧の間には空白を入れない。
エクスポートするファイルシステムのエントリーは、以下のように指定します。
export host(options)
ここでは、以下のような変数を使用しています。
- export
- エクスポートするディレクトリー
- host
- エクスポートを共有するホストまたはネットワーク
- options
- host に使用するオプション
各ホストにそれぞれオプションを付けて、複数のホストを 1 行で指定することができます。この場合は、以下のように、各ホスト名の後に、そのホストに対するオプションを括弧を付けて追加します。ホストは空白文字で区切ります。
export host1(options1) host2(options2) host3(options3)
ホスト名を指定する、その他の方法については、「ホスト名の形式」 を参照してください。
最も簡単な方法は、
/etc/exports
ファイルに、エクスポートするディレクトリーと、そのディレクトリーへのアクセスを許可するホストを指定するだけです。以下の例のようになります。
例8.6 /etc/exports
ファイル
/exported/directory bob.example.com
この例では、
bob.example.com
が、 NFS サーバーの /exported/directory/
をマウントできます。ここではオプションが指定されていないため、NFS では、 デフォルト 設定が使用されます。
デフォルトの設定は以下のようになります。
- ro
- エクスポートするファイルシステムは読み込み専用です。リモートホストは、このファイルシステムで共有されているデータを変更することができません。このファイルシステムで変更 (読み込み/書き込み) を可能にするには、
rw
オプションを指定します。 - sync
- NFS サーバーは、以前の要求で発生した変更がディスクに書き込まれるまで、要求に応答しません。代わりに非同期書き込みを有効にするには、
async
オプションを指定します。 - wdelay
- NFS サーバーは、別の書き込み要求が差し迫っていると判断すると、ディスクへの書き込みを遅らせます。これにより、複数の書き込みコマンドが同じディスクにアクセスする回数を減らすことができるため、書き込みのワークロードが低下し、パフォーマンスが向上します。これを無効にするには、
no_wdelay
を指定します。no_wdelay
は、デフォルトのsync
オプションが指定されている場合に限り利用可能になります。 - root_squash
- (ローカルからではなく) リモート から接続している root ユーザーが root 権限を持つことを阻止します。代わりに、そのユーザーには、NFS サーバーによってユーザー ID
nfsnobody
がく割り当てられます。これにより、リモートの root ユーザーの権限を、最も低いローカルユーザーレベルにまで下げ (squash) て、権限を持たずにリモートサーバーに書き込むのを阻止します。no_root_squash
と指定すると、この root squashing が無効になります。
(root を含む) すべてのリモートユーザーの権限を下げるには、
all_squash
を使用します。特定ホストのリモートユーザーに対して、NFS サーバーが割り当てるユーザー ID とグループ ID を指定するには、anonuid
と anongid
のオプションをそれぞれ以下のように使用します。
export host(anonuid=uid,anongid=gid)
ここで、uid と gid はそれぞれ、ユーザー ID 番号およびグループ ID 番号です。
anonuid
と anongid
のオプションを使用することで、リモート NFS ユーザーが共有する特別なユーザーおよびグループアカウントを作成できるようになります。
デフォルトでは、access control lists (アクセス制御リスト) (ACL) は、Red Hat Enterprise Linux では NFS によってサポートされています。この機能を無効にするには、ファイルシステムをエクスポートする際に
no_acl
オプションを指定します。
エクスポートするファイルシステムのデフォルトはすべて、明示的に上書きする必要があります。たとえば、
rw
オプションを指定しないと、エクスポートするファイルシステムは読み込み専用として共有されます。以下は、/etc/exports
の例になりますが、ここでは 2 つのデフォルトオプションを上書きしています。
/another/exported/directory 192.168.0.3(rw,async)
このエントリーでは、
192.168.0.3
が /another/exported/directory/
を読み込み/書き込みでマウントできるように設定しています。そして、ディスクへの書き込みはすべて非同期となります。エクスポートオプションの詳細は、man exportfs
を参照してください。
さらに、デフォルト値が指定されていないオプションも利用できます。たとえば、サブツリーチェックを無効にする、安全でないポートからのアクセスの許可する、安全でないファイルロックを許可する (一部の初期 NFS クライアント実装で必要) などの機能があります。これらのオプションは頻繁には使用しませんが、その詳細については
man exports
を参照してください。
重要
/etc/exports
ファイルでは、特に空白文字ついては、非常に厳しく扱われます。ホストとエクスポートされるファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、絶対に空白文字を追加しないでください。
たとえば、以下の2つの行は意味が異なります。
/home bob.example.com(rw) /home bob.example.com (rw)
最初の行は、
bob.example.com
からのユーザーにのみ、/home
ディレクトリーへの読み込み/書き込みアクセスを許可します。2番目の行は、bob.example.com
からのユーザーには、ディレクトリーを読み込み専用 (デフォルト) でマウントすることを許可しており、その他のユーザーには、読み込み/書き込みでマウントすることを許可します。
8.7.2. exportfs
コマンド
NFS 経由でリモートユーザーにエクスポートされているすべてのファイルシステム、並びにそれらのファイルシステムのアクセスレベルは
/etc/exports
ファイル内に一覧表示してあります。nfs
サービスが開始すると、/usr/sbin/exportfs
コマンドが起動してこのファイルを読み込み、実際のマウントプロセスのために制御を rpc.mountd
(NFSv2 または NFSv3の場合) とその後にrpc.nfsd
に渡します。この時点でファイルシステムがリモートユーザーに使用可能になります。
/usr/sbin/exportfs
コマンドを手動で発行すると、root ユーザーは NFS サービスを再開始せずにディレクトリーをエクスポートするか、しないかを選択できるようになります。適切なオプションが与えられると、/usr/sbin/exportfs
コマンドはエクスポートしたファイルシステムを /var/lib/nfs/xtab
に書き込みます。rpc.mountd
はファイルシステムへのアクセス権限を決定する際に xtab
ファイルを参照するため、エクスポートしたファイルシステム一覧への変更はすぐに反映されます。
/usr/sbin/exportfs
で利用可能な一般的なオプションの一覧は以下のようになります。
- -r
/etc/exports
内に一覧表示してあるすべてのディレクトリーから/etc/lib/nfs/xtab
内に新しいエクスポート一覧を構成することにより、それらのディレクトリーがエクスポートされることになります。結果的にこのオプションが/etc/exports
内のいずれかの変更でエクスポート一覧をリフレッシュすることになります。- -a
/usr/sbin/exportfs
に渡される他のオプションに応じて、すべてのディレクトリーがエクスポートされるか、またはされないことになります。他のオプションが指定されない場合は、/usr/sbin/exportfs
は、/etc/exports
内に指定してあるすべてのファイルシステムをエクスポートします。- -o file-systems
/etc/exports
内に一覧表示されていないエクスポートされるディレクトリーを指定します。file-systems の部分を、エクスポートされるファイルシステムに置き換えます。これらのファイルシステムは、/etc/exports
で指定されたものと同じフォーマットでなければなりません。このオプションは、多くの場合、エクスポート用ファイルシステム一覧に永続的に追加する前に、エクスポート予定のファイルシステムをテストするために使用されます。/etc/exports
構文の詳細情報については、「/etc/exports
設定ファイル」を参照してください。- -i
/etc/exports
を無視します。コマンドラインから出されたオプションのみが、エクスポート用ファイルシステムの定義に使用されます。- -u
- すべての共有ディレクトリーをエクスポートしません。コマンド
/usr/sbin/exportfs -ua
は、すべての NFS デーモンを稼働状態に維持しながら、NFS ファイル共有を保留します。NFS 共有を再度有効にするには、exportfs -r
を使用します。 - -v
- 詳細表示を意味します。
exportfs
コマンドを実行するときに表示されるエクスポート、または非エクスポートのファイルシステムの情報が、より詳細に表示されます。
exportfs
コマンドにオプションを渡さない場合と、現在エクスポートされているファイルシステムの一覧が表示されます。exportfs
コマンドの詳細については、man exportfs
を参照してください。
8.7.3. ファイアウォール背後での NFS の実行
NFS は RPC サービスのポートを動的に割り当てる
rpcbind
を必要としますが、ファイアウォールルールの設定で問題が発生する可能性があります。ファイアウォールの背後でクライアントが NFS 共有にアクセスできるようにするには、/etc/sysconfig/nfs
ファイルを編集し、RPC サービスが実行されるポートを設定します。
/etc/sysconfig/nfs
ファイルは、デフォルトではすべてのシステムに存在しているわけではありません。/etc/sysconfig/nfs
が存在しない場合は作成し、以下を指定します。
- RPCMOUNTDOPTS="-p port"
- これにより、rpc.mount コマンドラインに「-p port」が追加され、
rpc.mount -p port
になります。
nlockmgr
サービスが使用するポートを指定するには、/etc/modprobe.d/lockd.conf
ファイルの nlm_tcpport
オプションと nlm_udpport
オプションに、ポート番号を設定します。
NFS の起動に失敗すると、
/var/log/messages
がチェックされます。一般的に、すでに使用されているポート番号を指定した場合に NFS の起動に失敗します。/etc/sysconfig/nfs
の編集後、以下のコマンドを実行して nfs-config
サービスを再起動し、Red Hat Enterprise Linux 7.2 以下のバージョンで新しい値が反映されるようにします。
# systemctl restart nfs-configNFS サーバーを再起動します。
# systemctl restart nfs-server
rpcinfo -p
を実行し、変更が反映されたことを確認します。
注記
NFSv4.0 コールバックがファイアウォールを通過するように許可するには、
/proc/sys/fs/nfs/nfs_callback_tcpport
をセットして、サーバーがクライアント上のそのポートに接続できるようにします。
このプロセスは、NFSv4.1 またはそれ以降には必要ありません。そして
mountd
、statd
、および lockd
のための他のポート群は純粋な NFSv4 環境では必要ありません。
8.7.3.1. NFS エクスポートの発見
NFS サーバーがエクスポートするファイルシステムを発見する方法は2種類あります。
1つ目は、NFSv2 または NFSv3 をサポートするいずれかのサーバー上で、
showmount
コマンドの使用です。
$ showmount -e myserver Export list for mysever /exports/foo /exports/bar
2つ目は、NFSv4 をサポートするサーバー上で、
/
をマウントして周囲を見て回ります。
# mount myserver
:/ /mnt/
#cd /mnt/
exports
# ls exports
foo
bar
NFSv4 と更に NFSv2 か NFSv3 のどちらかの2種類をサポートするサーバー上では、上記の両方の方法が機能して同じ結果を出します。
注記
Red Hat Enterprise Linux 6 以前には、設定の仕方によって旧来の NFS サーバーは別々のパス経由で NFSv4 クライアントにファイルシステムをエクスポートすることがありました。それらのサーバーではデフォルトで NFSv4 を有効にしていないため、これは通常、問題にはなっていません。
8.7.4. ファイアウォールからの RPC クォータを許可する
ディスククォータを使用するファイルシステムをエクスポートする場合は、RPC (Remote Procedure Call) サービスを使用して、NFS クライアントにディスククォータデータを提供できます。
手順8.1 ファイアウォールの背後で RPC クォータのアクセスを可能にする
rpc-rquotad
サービスを有効にするには、以下を入力します。#
systemctl enable rpc-rquotad
rpc-rquotad
サービスを起動するには、以下を入力します。#
systemctl start rpc-rquotad
rpc-rquotad
が有効な場合は、nfs-server
サービスが起動した後に自動的に起動します。- ファイアウォールの背後で、クォータ RPC サービスにアクセスできるようにするには、UDP ポートまたは TCP ポート
875
を開く必要があります。デフォルトのポート番号は/etc/services
ファイルに指定します。デフォルトのポート番号は、/etc/sysconfig/rpc-rquotad
ファイルのRPCRQUOTADOPTS
変数に-p port-number
を追加すると上書きできます。 /etc/sysconfig/rpc-rquotad
ファイルへの変更を有効にするには、rpc-rquotad
を再起動します。#
systemctl restart rpc-rquotad
リモートホストにクォータを設定する
デフォルトでは、リモートホストだけがクォーターを読み込めます。クォータを設定できるようにするには、
/etc/sysconfig/rpc-rquotad
ファイルの RPCRQUOTADOPTS
変数に -S
オプションを追加します。
/etc/sysconfig/rpc-rquotad
ファイルへの変更を有効にするには、rpc-rquotad
を再起動します。
#
systemctl restart rpc-rquotad
8.7.5. ホスト名の形式
ホストは以下の形式にすることができます。
- 単独マシン
- 完全修飾型ドメイン名 (サーバーで解決可能な形式)、ホスト名 (サーバーで解決可能な形式)、あるいは IP アドレス
- ワイルドカードで指定された一連のマシン
*
または?
の文字を使用して文字列の一致を指定します。ワイルドカードは IP アドレスでは使用しないことになっていますが、逆引き DNS ルックアップが失敗した場合には偶然に機能するかも知れません。ワイルドカードを完全修飾型ドメイン名に指定する時は、ドット(.
) はワイルドカードの一部にはなりません。例えば、*.example.com
はone.example.com
を範囲に入れますがone.two.example.com
はその範囲に入りません。- IP ネットワーク
- a.b.c.d/z を使用します。ここで、a.b.c.d はネットワークであり、z はネットマスクのビット数です (例えば、 192.168.0.0/24)。別の使用可能形式は a.b.c.d/netmask となり、ここで a.b.c.d がネットワークで、netmask がネットマスクです (例えば、 192.168.100.8/255.255.255.0)。
- Netgroup
- 形式 @group-name を使用します。ここで、group-name は NIS netgroup の名前です。
8.7.6. RDMA で NFS を有効にする (NFSoRDMA)
Red Hat Enterprise Linux 7 では、RDMA に対応するハードウェアが存在すると、RDMA (remote direct memory access) サービスが自動的に有効になります。
rdma パッケージをインストールします。
/etc/rdma/rdma.conf
ファイルにはデフォルトで XPRTRDMA_LOAD=yes
が設定されており、NFSoRDMA クライアントモジュールをロードする rdma
サービスが必要になります。
NFSoRDMA サーバー モジュールを自動的にロードするには、
/etc/rdma/rdma.conf
に SVCRDMA_LOAD=yes
行を追加します。
/etc/sysconfig/nfs
ファイルの RPCNFSDARGS="--rdma=20049"
は、NFSoRDMA サービスがクライアントをリッスンするポート番号 (20049) を指定します。『RFC 5667』 では、RDMA で NFSv4 サービスを提供する場合は、サーバーがポート 20049
をリッスンすることが定められています。
/etc/rdma/rdma.conf
ファイルを編集したら、nfs
サービスを再起動します。
# service nfs restart以前のカーネルバージョンで
/etc/rdma/rdma.conf
の変更を有効にするには、システムを再起動する必要があります。
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.