GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS / RHEL における NFS の初心者向けガイド

NFS の概要

ネットワーク ファイル システム (NFS) を使用すると、サーバーはディレクトリ階層 (ファイル システム) をネットワーク経由でリモート システムと共有できます。 NFS サーバーはディレクトリをエクスポートし、NFS クライアントはエクスポートされたディレクトリをマウントします。クライアント システムには、サーバー ディレクトリがローカル ディレクトリであるかのように表示されます。 NFS はストレージの必要性を減らし、データの一貫性と信頼性を向上させます。これは、ユーザーが中央サーバーに保存されているファイルにアクセスしているためです。

RedHat Linux 7 は NFS バージョン 2 (NFSv2) をサポートしていません。次の 2 つのバージョンがサポートされています:
NFS バージョン 3 (NFSv3)。
NFS バージョン 4 (NFSv4)。

NFS は、クライアントとサーバー間のリモート プロシージャ コール (RPC) に依存しています。 RPC サービスは rpcbind サービスによって制御されます。 rpcbind サービスは、以前のバージョンの Linux で RPC プログラム番号を IP アドレス ポート番号の組み合わせにマップするために使用されていた portmap に代わるものです。 rpcbind は RPC サービスの要求に応答し、要求された RPC サービスへの接続を設定します。サーバーは既知の TCP ポート 2049 でリッスンするため、rpcbind は NFSv4 では使用されません。マウントおよびロック プロトコルも NFSv4 プロトコルに組み込まれています。そのため、NFSv4 は lockd および rpc.statd デーモンとも対話しません。

NFS サーバーと RPC プロセス

nfs-server サービスを開始すると、NFS サーバーと、共有 NFS ファイル システムの要求を処理するために必要なその他の RPC プロセスが開始されます。短い名前「nfs」を使用できます 「nfs-server」ではなく「」 」サービスを開始するとき。例:

# systemctl start nfs

これは、NFS サービスのユーザー レベル部分を実装する NFS サーバー プロセスです。主な機能は、nfsd カーネル モジュールによって処理されます。ユーザー空間プログラムは、カーネル サーバーがリッスンするソケットの種類、サポートする NFS バージョン、および使用する nfsd カーネル スレッドの数を指定するだけです。 ps –e コマンドを使用して、実行中のスレッドの数を表示します。

# ps -ef | grep nfs
root      9093     2  0 11:21 ?        00:00:00 [nfsd4_callbacks]
root      9099     2  0 11:21 ?        00:00:00 [nfsd]
root      9100     2  0 11:21 ?        00:00:00 [nfsd]
root      9101     2  0 11:21 ?        00:00:00 [nfsd]
root      9102     2  0 11:21 ?        00:00:00 [nfsd]
root      9103     2  0 11:21 ?        00:00:00 [nfsd]
root      9104     2  0 11:21 ?        00:00:00 [nfsd]
root      9105     2  0 11:21 ?        00:00:00 [nfsd]
root      9106     2  0 11:21 ?        00:00:00 [nfsd]

実行する nfsd スレッドの数は、/proc/fs/nfsd/threads で定義されています ファイル。この例では、8 つの nfsd スレッドが指定されています:

# cat /proc/fs/nfsd/threads
8

nfs-server サービスを開始すると、RPC プロセスも開始されます。 ps –e コマンドを使用して、RPC プロセスの名前を表示できます。

# ps -e | grep -i rpc
  177 ?        00:00:00 rpciod
 9080 ?        00:00:00 rpc.statd
 9081 ?        00:00:00 rpc.idmapd
 9082 ?        00:00:00 rpcbind
 9083 ?        00:00:00 rpc.mountd
 9084 ?        00:00:00 rpc.rquotad

rpc.statd

このプロセスは、Network Status Monitor (NSM) RPC プロトコルを実装します。これは、NFS サーバーが正常に停止せずに再起動されたときに NFS クライアントに通知します。これは NFSv4 では使用されません。

rpc.mountd

これは、NFSv3 クライアントからのマウント要求のサーバー側を実装する NFS マウント デーモンです。要求された NFS 共有が NFS サーバーによって現在エクスポートされていること、およびクライアントがアクセスを許可されていることを確認します。 NFSv4 の場合、rpc.mountd デーモンは、エクスポートをセットアップするために NFS サーバーでのみ必要です。

rpc.idmapd

これにより、ネットワーク上の NFSv4 名 (user@domain の形式の文字列) とローカルの UID および GID の間でマッピングされる NFSv4 クライアントとサーバーの upcall が提供されます。 idmapd が NFSv4 で機能するには、/etc/idmapd.conf を構成する必要があります。すべてのホストが同じ DNS ドメイン名を共有している場合ではありませんが、このサービスは NFSv4 で使用するために必要です。

rpc.rquotad

このプロセスは、リモート ユーザーのユーザー クォータ情報を提供します。 nfs サービスによって自動的に開始され、ユーザー構成は必要ありません。この結果は、リモート ファイル システムのユーザー クォータを表示するために quota コマンドによって使用され、リモート ファイル システムにクォータを設定するために edquota コマンドによって使用されます。

ロック

これは、クライアントとサーバーの両方で実行されるカーネル スレッドです。 NFSv3 クライアントがサーバー上のファイルをロックできるようにする Network Lock Manager (NLM) プロトコルを実装します。 NFS サーバーが実行されるたびに、また NFS ファイル システムがマウントされるたびに、自動的に開始されます。

nfslock

このサービスを開始すると、NFS クライアントがサーバー上のファイルをロックできるようにする RPC プロセスが開始されます。

NFS サーバー構成

システムを NFS サーバーとして構成するには、nfs-utils パッケージをインストールします:

# yum install nfs-utils

NFS サーバーの主な構成ファイルは /etc/exports です .このファイルには、リモート システムがマウントできる、エクスポートされたディレクトリ階層のリストが格納されます。エントリの形式は次のとおりです:

export-point client1(options) [client2(options) ... ]

export-point は、エクスポートするディレクトリ階層の絶対パス名です。それぞれが特定のオプションを持つ 1 つ以上のクライアント システムは、export-point をマウントできます。 client 属性と開き括弧の間にスペースはありません。クライアント オプションが指定されていない場合、次のデフォルト設定が適用されます:

  • ro:読み取り専用 .クライアント ホストは、ファイル システムで共有されるデータを変更できません。クライアント ホストがファイル システムを変更できるようにするには、rw (読み取り/書き込み) オプションを指定します。
  • 同期 :NFS サーバーは、以前の要求によって行われた変更がディスクに書き込まれた後にのみ、要求に応答します。 async は、サーバーが待機する必要がないことを指定します。
  • wdelay :NFS サーバーは、別の書き込み要求が差し迫っている疑いがある場合、書き込み要求のコミットを遅らせます。遅延を無効にするには、no_wdelay オプションを使用します。 no_wdelay は、デフォルトの同期オプションも指定されている場合にのみ使用できます。
  • root_squash :リモートで接続されたルート ユーザーがルート権限を持つことを防ぎ、リモートのルート ユーザーの権限を事実上「押しつぶす」。要求は、ユーザー nfsnobody、ローカル システム上の非特権ユーザー、または anonuid によって指定されたユーザーから送信されたように見えます。ルート スカッシュを無効にするには、no_root_squash オプションを指定します。
  • no_all_squash :リモート ユーザーのマッピングを変更しません。すべてのリモート ユーザー (root を含む) をスカッシュするには、all_squash オプションを使用します。

NFS サーバーがリモート ユーザーに割り当てるユーザー ID (UID) とグループ ID (GID) を指定するには、次のように anonuid および anongid オプションを使用します。

export-point client(anonuid=uid,anongid=gid)

anonuid および anongid オプションを使用すると、リモート NFS ユーザーが共有する特別なユーザーおよびグループ アカウントを作成できます。デフォルトでは、NFS はアクセス制御リスト (ACL) をサポートしています。この機能を無効にするには、ファイル システムのエクスポート時に no_acl オプションを指定します。

クライアント名には (*) や (?) などのワイルドカード文字を使用できます。ディレクトリを IP ネットワーク上のすべてのホストにエクスポートすることもできます。これを行うには、IP アドレスとネットマスクのペアをアドレス/ネットマスクとして指定します。次のいずれかの形式が有効です:

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exports の例

次の例では、IP アドレスが 192.0.2.102 のクライアント システムは、読み取り/書き込み権限で /export/directory をマウントできます。ディスクへの書き込みはすべて非同期です:

/export/directory 192.0.2.102(rw,async)

次の例では、/exports/apps ディレクトリをすべてのクライアントにエクスポートし、すべての接続ユーザーをローカルの匿名 nfsnobody ユーザーに変換して、ディレクトリを読み取り専用にします:

/exports/apps *(all_squash, ro)

次の例では、/spreadsheets/proj1 ディレクトリを、192.168.1.0 サブネット上のすべてのクライアントへの読み取り専用アクセス許可と、mgmtpc という名前のクライアント システムへの読み取り/書き込みアクセス許可でエクスポートします:

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

NFS サービスの開始

nfs を開始する前に、rpcbind サービスを開始する必要があります。次のコマンドは、rpcbind サービスが有効で実行中であるかどうかを確認します。

# systemctl status rpcbind

rpcbind サービスが実行されている場合、nfs サービスを開始できます。 /etc/exports で構成を変更した後、nfs を再起動するか、exportfs -a コマンドを実行します。

# systemctl start nfs

nfslock サービスが有効で実行中であることを確認します。このサービスを開始すると、NFS クライアントがサーバー上のファイルをロックできるようにする RPC プロセスが開始されます。

# systemctl status nfslock

systemctl enable コマンドを使用して、起動時にサービスを自動的に開始します。 NFS サービスを有効にするときは、nfs-server のフル ネームを使用します。

# systemctl enable nfs-server

/etc/sysconfig/nfs に配置して、構成オプションと引数を指定します .このファイルには、オプションを引数として指定する際に役立ついくつかのコメントが含まれています。 showmount –e コマンドを使用して、エクスポートされたファイル システムを表示します。

# showmount –e

exportfs ユーティリティ

コマンド ラインから exportfs を使用して NFS サーバーを構成することもできます。このコマンドを使用すると、root ユーザーは、/etc/exports を変更したり、NFS サービスを再起動したりせずに、ディレクトリを選択的にエクスポートまたはアンエクスポートできます。コマンドの構文は次のとおりです:

# exportfs [options] [client:dir ...]

client 引数は、dir がエクスポートされるクライアント システムの名前です。 dir 引数は、エクスポートされるディレクトリの絶対パス名です。以下は、いくつかのオプションのリストです:

  • -r :/etc/exports のエントリを再エクスポートし、/var/lib/nfs/etab を /etc/exports と同期します。 /var/lib/nfs/etab ファイルはマスター エクスポート テーブルです。クライアントが NFS マウント コマンドを送信すると、rpc.mountd がこのファイルを読み取ります。
  • -a :/etc/exports のエントリをエクスポートしますが、/var/lib/nfs/etab を同期しません。構成を変更したら、exportfs –a を実行してください。
  • -i :/etc/exports のエントリを無視し、コマンドライン引数のみを使用してください。
  • -u :1 つまたは複数のディレクトリをアンエクスポートします。
  • -o :/etc/exports で指定されているクライアント オプションを指定します。

NFS クライアントの構成

システムを NFS クライアントとして構成するには、nfs-utils パッケージをインストールします:

# yum install nfs-utils

mount コマンドを使用して、エクスポートされたファイル システム (NFS 共有) をクライアント側にマウントします。コマンドの構文は次のとおりです:

# mount -t nfs -o options host:/remote/export /local/directory

引数の説明は次のとおりです:

  • -t NFS :ファイルシステムのタイプが nfs であることを示します。このオプションを使用すると、サーバーが NFSv4 をサポートしている場合、mount は NFSv4 を使用します。それ以外の場合は、NFSv3 を使用します。
  • -o オプション :マウント オプションのカンマ区切りリスト
  • ホスト :/remote/export:ファイル システムをエクスポートするホスト名、コロン、NFS 共有の絶対パス名
  • /ローカル/ディレクトリ :クライアント システムのマウント ポイント

たとえば、ホスト abc からエクスポートされた /home ディレクトリを読み取り専用パーミッション (ro オプション) でローカル マウント ポイント /abc_home にマウントし、setuid プログラムを実行してリモート ユーザーがより高い権限を取得できないようにするには (nosuid オプション):

# mount -t nfs -o ro,nosuid abc:/home /abc_home

起動時に NFS 共有をマウントするには、ファイル システムのマウント テーブル /etc/fstab にエントリを追加します。エントリは次の形式です:

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

たとえば、前のページのマウント コマンドを複製する /etc/fstab エントリは次のとおりです。

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

df コマンドは、マウントされたファイル システム (NFS マウント ファイル システムを含む) を表示します。 NFS マウントの場合、「ファイル システム」列に server:/exported-filesystem 情報が表示されます。 -T を使用 「タイプ」列を含めるオプション:

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS / RHEL 7 :NFS サーバーと NFS クライアントの構成


Cent OS
  1. CentOS 7 /RHEL7にWebminをインストールします

  2. CentOS / RHEL/Fedoraでカーネルをアップグレードするための究極のガイド

  3. CentOS / RHEL 7 :NFS サーバーと NFS クライアントの構成

  1. CentOS / RHEL 7 :firewalld の初心者向けガイド

  2. CentOS / RHEL :vsftpd の初心者向けガイド (インストールと構成)

  3. CentOS / RHEL でファイル システムを自動マウントするための初心者向けガイド

  1. CentOS/RHEL で NFS クライアントのキャッシュを無効にする方法

  2. CentOS / RHEL :cron の初心者向けガイド

  3. CentOS / RHEL :iptables トラブルシューティング ガイド