ウェブサイト検索

標準 Linux ファイル システムのセットアップと NFSv4 サーバーの構成 - パート 2


Linux Foundation 認定エンジニア (LFCE) は、Linux システムでのネットワーク サービスのセットアップ、構成、管理、トラブルシューティングについて訓練を受けており、システム アーキテクチャの設計と実装、および日常の関連問題の解決に責任を負います。問題。

Linux Foundation 認定プログラム (LFCE) の紹介。

このシリーズのパート 1 では、NFS (ネットワーク ファイル システム) サーバーをインストールし、起動時にサービスが自動的に開始されるように設定する方法を説明しました。まだ行っていない場合は、続行する前にその記事を参照し、概要の手順に従ってください。

  1. ネットワーク サービスのインストールと起動時の自動起動の構成 – パート 1

次に、NFSv4 サーバー (認証セキュリティなし) を適切に構成して、Linux クライアントで使用するネットワーク共有を、ファイル システムがローカルにインストールされているかのように設定できるようにする方法を説明します。認証目的で LDAP または NIS を使用できますが、どちらのオプションも LFCE 認定の範囲外であることに注意してください。

NFSv4サーバーの構成

NFS サーバーが起動して実行されたら、次の点に注目します。

  1. ネットワーク上で共有するローカル ディレクトリを指定して構成します。
  2. /etc/fstab ファイルまたは自動マウント カーネル ベース ユーティリティ (autofs) を介して、これらのネットワーク共有をクライアントに自動的にマウントします。

どちらの方法を選択するかについては後ほど説明します。

その前に、idmapd デーモンが実行され、設定されていることを確認する必要があります。このサービスは、NFSv4 名 (user@mydomain) とユーザー ID およびグループ ID のマッピングを実行し、NFSv4 サーバーを実装するために必要です。

/etc/default/nfs-common を編集して idmapd を有効にします。

NEED_IDMAPD=YES

/etc/idmapd.conf をローカル ドメイン名で編集します (デフォルトはホストの FQDN)。

Domain = yourdomain.com

次に、idmapdを起動します。

service nfs-common start 	[sysvinit / upstart based systems]
systemctl start nfs-common 	[systemd based systems]

ネットワーク共有のエクスポート

/etc/exports ファイルには、NFS サーバーの主な構成ディレクティブが含まれており、リモート ホストにエクスポートされるファイル システムを定義し、使用可能なオプションを指定します。このファイルでは、各ネットワーク共有が個別の行を使用して示されており、デフォルトでは次の構造になっています。

/filesystem/to/export client1([options]) clientN([options])

/filesystem/to/export はエクスポートされたファイル システムへの絶対パスですが、client1 (clientN まで) は特定のクライアント (ホスト名または IP アドレス) またはネットワークを表します。 (ワイルドカードを使用できます) 共有のエクスポート先。最後に、options は、共有をエクスポートするときにそれぞれ考慮されるカンマ区切りの値 (オプション) のリストです。各ホスト名とその前にある括弧の間にはスペースが入らないことに注意してください。

以下に、最も頻繁に使用されるオプションとそれぞれの説明のリストを示します。

  1. ro (読み取り専用の略): リモート クライアントは、読み取り権限のみでエクスポートされたファイル システムをマウントできます。
  2. rw (read-write の略): リモート ホストがエクスポートされたファイル システムに書き込み変更を行うことを許可します。
  3. wlay (書き込み遅延の略): NFS サーバーは、関連する別の書き込み要求が差し迫っていると疑われる場合、ディスクへの変更のコミットを遅らせます。ただし、NFS サーバーが無関係の小さなリクエストを複数受信する場合、このオプションはパフォーマンスを低下させるため、no_wlay オプションを使用して無効にすることができます。
  4. 同期: NFS サーバーは、変更が永続ストレージ (ハードディスクなど) にコミットされた後にのみリクエストに応答します。その反対の非同期 オプションを使用すると、パフォーマンスが向上する可能性がありますが、汚れたサーバーの再起動後にデータの損失や破損が発生する可能性があります。
  5. root_squash: リモートの root ユーザーがサーバー内でスーパーユーザー権限を持つことを禁止し、ユーザーにユーザー nobody のユーザー ID を割り当てます。 root だけでなくすべてのユーザーを「スカッシュ」したい場合は、 all_squash オプションを使用できます。
  6. anonuid/anongid: 匿名アカウント (nobody) の UID と GID を明示的に設定します。
  7. subtree_check: ファイル システムのサブディレクトリのみがエクスポートされる場合、このオプションは、要求されたファイルがエクスポートされたサブディレクトリに存在することを検証します。一方、ファイル システム全体をエクスポートする場合は、no_subtree_check を使用してこのオプションを無効にすると、転送が高速化されます。 man 5 のエクスポートによると、サブツリー チェックは価値以上に多くの問題を引き起こす傾向があるため、現在のデフォルト オプションは no_subtree_check です。
  8. fsid=0 | ルート (ゼロまたはルート): 指定したファイル システムが複数のエクスポートされたディレクトリのルートであることを指定します (NFSv4 にのみ適用されます)。

この記事では、192.168.0.10 (NFS サーバー) 上のディレクトリ /NFS-SHARE/NFS-SHARE/mydir を使用します。ファイルシステムをテストします。

次のコマンドを使用すると、NFS サーバーで使用可能なネットワーク共有をいつでも一覧表示できます。

showmount -e [IP or hostname]

上記の出力では、192.168.0.10 上の /NFS-SHARE 共有と /NFS-SHARE/mydir 共有がエクスポートされたことがわかります。 IP アドレス 192.168.0.17 のクライアントに送信します。

エクスポートされたディレクトリの初期設定 (NFS サーバーの /etc/exports ディレクトリを参照) は次のとおりです。

/NFS-SHARE  	192.168.0.17(fsid=0,no_subtree_check,rw,root_squash,sync,anonuid=1000,anongid=1000)
/NFS-SHARE/mydir    	192.168.0.17(ro,sync,no_subtree_check)

構成ファイルを編集した後、NFS サービスを再起動する必要があります。

service nfs-kernel-server restart 		[sysvinit / upstart based system]
systemctl restart nfs-server			[systemd based systems]
autofs を使用してエクスポートされたネットワーク共有をマウントする

を使用してオンデマンドでリモート NFS 共有をマウントする方法の詳細については、LFCS シリーズのパート 5 (「Linux でローカルおよびネットワーク (Samba および NFS) ファイルシステムをマウント/アンマウントする方法」) を参照してください。 mount コマンドを使用するか、/etc/fstab ファイルを介して永続的に使用します。

これらの方法を使用してネットワーク ファイル システムをマウントする場合の欠点は、共有を常にマウントしておくために、または少なくとも手動でアンマウントするまでシステムが必要なリソースを割り当てる必要があることです。別の方法は、autofs を使用して、必要なファイル システムをオンデマンドで (mount コマンドを使用せずに) 自動的にマウントすることです。これにより、ファイル システムを使用時にマウントし、使用後にアンマウントできます。非活動的な期間。

autofs は、次の形式の /etc/auto.master を読み取ります。

[mount point]	[map file]

ここで、[マップ ファイル] は、[マウント ポイント] 内の複数のマウント ポイントを示すために使用されます。

このマスター マップ ファイル (/etc/auto.master) は、どのマウント ポイントが定義されているかを決定するために使用され、各マウント ポイントに対して指定されたパラメーターを使用して自動マウント プロセスを開始します。

autofs を使用してエクスポートされた NFS 共有をマウントする

/etc/auto.master を次のように編集します。

/media/nfs	/etc/auto.nfs-share	--timeout=60

そして、次の内容を含む /etc/auto.nfs-share という名前のマップ ファイルを作成します。

writeable_share  -fstype=nfs4 192.168.0.10:/
non_writeable_share  -fstype=nfs4 192.168.0.10:/mydir

/etc/auto.nfs-share の最初のフィールドは、/media/nfs 内のサブディレクトリの名前であることに注意してください。各サブディレクトリは autofs によって動的に作成されます。

次に、autofs サービスを再起動します。

service autofs restart 			[sysvinit / upstart based systems]
systemctl restart autofs 			[systemd based systems]

最後に、autofs が起動時に開始できるようにするには、次のコマンドを実行します。

chkconfig --level 345 autofs on
systemctl enable autofs 			[systemd based systems]
autofs デーモンの起動後のマウントされたファイル システムの検査

autofs を再起動すると、mount コマンドにより、マップ ファイル (/etc/auto.nfs-share) が指定された場所にマウントされていることが表示されます。 /etc/auto.master 内のディレクトリ:

実際にはディレクトリはまだマウントされていませんが、/etc/auto.nfs-share で指定された共有にアクセスしようとすると自動的にマウントされることに注意してください。

ご覧のとおり、autofs サービスはいわばマップ ファイルを「マウント 」しますが、ファイル システムに対して実際にマウントする要求が行われるまで待機します。

エクスポートされたファイル システムでの書き込みテストの実行

anonuid および anongid オプションと、最初の共有で設定された root_squash を使用すると、root ユーザーによって実行されたリクエストをマッピングできます。クライアントをサーバーのローカル アカウントに接続します。

つまり、クライアントの root がエクスポートされたディレクトリにファイルを作成すると、そのアカウントがサーバー上に存在する場合、その所有権は UID および GID=1000 のユーザー アカウントに自動的にマップされます。

結論

この記事をガイドとして使用して、環境に適した NFS サーバーを正常にセットアップして構成できたことを願っています。さらに詳しいヘルプが必要な場合は、関連する man ページを参照することもできます (man エクスポートman idmapd.conf など)。

前述した他のオプションやテスト ケースを自由に試してみてください。コメント、提案、質問を送信するには、以下のフォームを遠慮なく使用してください。ぜひご連絡ください。