Red Hat Training
A Red Hat training course is available for RHEL 8
4.6. NFS サーバーの設定
本セクションでは、NFS サーバーでエクスポートを設定する 2 種類の構文およびオプションを説明します。
-
設定ファイル
/etc/exports
を手動で編集する方法 -
コマンドラインで
exportfs
ユーティリティーを使用する方法
4.6.1. /etc/exports 設定ファイル
/etc/exports
ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。以下の構文ルールに従います。
- 空白行は無視する。
-
コメント行は、ハッシュ記号 (
#
) で始める。 -
長い行は、バックスラッシュ (
\
) で改行できる。 - エクスポートするファイルシステムは、それぞれ 1 行で指定する。
- 許可するホストの一覧は、エクスポートするファイルシステムの後に空白文字を追加し、その後に追加する。
- 各ホストのオプションは、ホストの識別子の直後に括弧を追加し、その中に指定する。ホストと最初の括弧の間には空白を使用しない。
エクスポートエントリー
エクスポートするファイルシステムの各エントリーは、以下のように指定します。
export host(options)
各ホストにそれぞれオプションを付けて、複数のホストを 1 行で指定することもできます。この場合は、以下のように、各ホスト名の後に、そのホストに対するオプションを括弧を付けて追加します。ホストは空白文字で区切ります。
export host1(options1) host2(options2) host3(options3)
この構造では、次のようになります。
- export
- エクスポートするディレクトリー
- host
- エクスポートを共有するホストまたはネットワーク
- options
- ホストに使用されるオプション
例4.1 簡潔な /etc/exports ファイル
最も簡単な方法は、/etc/exports
ファイルに、エクスポートするディレクトリーと、そのディレクトリーへのアクセスを許可するホストを指定することです。
/exported/directory bob.example.com
ここで、bob.example.com
は、NFS サーバーから /exported/directory/
をマウントできます。この例ではオプションが指定されていないため、NFS はデフォルトのオプションを使用します。
/etc/exports
ファイルの形式では、特に空白文字の使用が非常に厳しく扱われます。ホストからエクスポートするファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、空白文字を追加しないでください。
たとえば、以下の 2 つの行は意味が異なります。
/home bob.example.com(rw) /home bob.example.com (rw)
最初の行は、bob.example.com
からのユーザーにのみ、/home
ディレクトリーへの読み取り/書き込みアクセスを許可します。2 番目の行では、bob.example.com
からのユーザーにディレクトリーを読み取り専用 (デフォルト) でマウントすることを許可し、その他のユーザーに読み取り/書き込みでマウントすることを許可します。
デフォルトのオプション
エクスポートエントリーのデフォルトオプションは次のとおりです。
ro
- エクスポートするファイルシステムは読み取り専用です。リモートホストは、このファイルシステムで共有されているデータを変更できません。このファイルシステムで変更 (読み取り/書き込み) を可能にするには、rw オプションを指定します。
sync
-
NFS サーバーは、以前の要求で発生した変更がディスクに書き込まれるまで、要求に応答しません。代わりに非同期書き込みを有効にするには、
async
オプションを指定します。 wdelay
-
NFS サーバーは、別の書き込み要求が差し迫っていると判断すると、ディスクへの書き込みを遅らせます。これにより、複数の書き込みコマンドが同じディスクにアクセスする回数を減らすことができるため、書き込みのオーバーヘッドが低下し、パフォーマンスが向上します。これを無効にするには、
no_wdelay
オプションを指定します。これは、デフォルトの sync オプションが指定されている場合に限り利用できます。 root_squash
(ローカルからではなく) リモートから接続している root ユーザーが root 権限を持つことを阻止します。代わりに、そのユーザーには、NFS サーバーにより、ユーザー ID
nobody
が割り当てられます。これにより、リモートの root ユーザーの権限を、最も低いローカルユーザーレベルにまで下げて (squash)、高い確率でリモートサーバーへの書き込む権限を与えないようにすることができます。この root squashing を無効にするには、no_root_squash
オプションを指定します。(root を含む) すべてのリモートユーザーの権限を下げるには、
all_squash
オプションを使用します。特定ホストのリモートユーザーに対して、NFS サーバーが割り当てるユーザー ID とグループ ID を指定するには、anonuid
オプションとanongid
オプションを以下のように使用します。export host(anonuid=uid,anongid=gid)
uid と gid は、それぞれユーザー ID とグループ ID の番号になります。
anonuid
オプションとanongid
オプションにより、共有するリモート NFS ユーザー用に、特別なユーザーアカウントおよびグループアカウントを作成できます。
Red Hat Enterprise Linux の NFS では、デフォルトでアクセス制御リスト (ACL) に対応しています。この機能を無効にするには、ファイルシステムをエクスポートする際に no_acl
オプションを指定します。
デフォルトオプションと上書きオプション
エクスポートするすべてのファイルシステムの各デフォルトは、明示的に上書きする必要があります。たとえば、rw
オプションを指定しないと、エクスポートするファイルシステムが読み取り専用として共有されます。以下は、/etc/exports
の例になりますが、ここでは 2 つのデフォルトオプションを上書きします。
/another/exported/directory 192.168.0.3(rw,async)
この例では、192.168.0.3
は /another/exported/directory/
の読み書きをマウントでき、ディスクへの書き込みはすべて非同期になります。
4.6.2. exportfs ユーティリティー
root ユーザーは、exportfs
ユーティリティーを使用すると、NFS サービスを再起動せずにディレクトリーを選択してエクスポートまたはアンエクスポートできます。適切なオプションが指定されると、exportfs
ユーティリティーは、エクスポートされたファイルシステムを /var/lib/nfs/xtab
に書き込みます。ファイルシステムへのアクセス権を決定する際には、nfs-mountd
サービスが xtab
ファイルを参照するため、エクスポートしたファイルシステムのリストの変更が直ちに反映されます。
一般的な exportfs オプション
exportfs
で利用できる一般的なオプションの一覧は以下のようになります。
-r
-
/var/lib/nfs/etab
に新しいエクスポート一覧を作成して、/etc/exports
に一覧表示されているディレクトリーをすべてエクスポートします。このオプションにより、/etc/exports
に変更が加えられると、エクスポート一覧が効果的に更新されます。 -a
-
exportfs
に渡されるその他のオプションに応じて、すべてのディレクトリーをエクスポートするかどうかを判断します。その他のオプションが指定されていないと、exportfs
は、/etc/exports
で指定されたすべてのファイルシステムをエクスポートします。 -o file-systems
-
/etc/exports
内に記載されていない、エクスポートされるディレクトリーを指定します。file-systems の部分を、エクスポートされる追加のファイルシステムに置き換えます。これらのファイルシステムは、/etc/exports
で指定されたものと同じフォーマットでなければなりません。このオプションは、多くの場合、エクスポートされるファイルシステムの一覧に永続的に追加する前に、エクスポートされるファイルシステムをテストするために使用されます。 -i
-
/etc/exports
を無視します。コマンドラインで指定されたオプションのみが、エクスポート用ファイルシステムの定義に使用されます。 -u
-
すべての共有ディレクトリーをエクスポートしなくなります。
exportfs -ua
コマンドは、すべての NFS サービスを稼働状態に維持しながら、NFS ファイル共有を保留します。NFS 共有を再度有効にするには、exportfs -r
を使用します。 -v
-
詳細な表示です。
exportfs
コマンドを実行するときに表示されるエクスポート、または非エクスポートのファイルシステムの情報が、より詳細に表示されます。
exportfs
ユーティリティーにオプションが渡されていない場合は、現在エクスポートされているファイルシステムのリストが表示されます。
関連情報