nfs は、FreeBSD がサポートするファイル システムの 1 つであるネットワーク ファイル システムを指し、ネットワーク上のコンピュータが TCP/IP ネットワークを通じてリソースを共有できるようにします。 NFS は、UDP/IP プロトコルに基づくアプリケーションです。その実装では、主にリモート プロシージャ コール RPC メカニズムが使用されます。RPC は、マシン、オペレーティング システム、および低レベルの転送プロトコルから独立したリモート ファイルにアクセスするための一連の操作を提供します。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
1. nfs の概要
ネットワーク ファイル システム (英語の Network File System (NFS)) は、SUN が開発した UNIX プレゼンテーション層プロトコルで、ユーザーがファイルにアクセスできるようにします。自分のコンピュータを使用するのと同じように、ネットワーク上の他の場所でも。
NFS は、UDP/IP プロトコルに基づくアプリケーションです。その実装では、主にリモート プロシージャ コール RPC メカニズムが使用されます。RPC は、マシン、オペレーティング システム、およびマシンに依存しないリモート ファイルにアクセスするための一連の操作を提供します。低層伝送プロトコル。 RPC は XDR サポートを使用します。 XDR はマシンに依存しないデータ記述エンコーディング プロトコルで、マシン アーキテクチャに依存しない形式でインターネット上で送信されるデータをエンコードおよびデコードし、異種システム間のデータ送信をサポートします。
1.1 nfs の機能
- NFS (Network File System) はネットワーク ファイル システムであり、FreeBSD でサポートされているファイル システムの 1 つです。 TCP/IP ネットワークを介してコンピュータ間で共有されます。
- NFS アプリケーションでは、ローカル NFS クライアント アプリケーションは、ローカル ファイルにアクセスするのと同じように、リモート NFS サーバーにあるファイルを透過的に読み書きできます
- nfs Linux と Unix 間のファイル共有には適していますが、Linux と Windows 間のファイル共有は実現できません。
- nfs はアプリケーション層で実行されるプロトコルで、2049/tcp および 2049
## をリッスンします。 /udp ソケット上の #nfs サービスは、IP に基づいてのみ認証できます-
1.2 nfs のアプリケーション シナリオ
nfs には多くの実用的なアプリケーションがあります。アプリケーション シナリオは次のとおりです。
複数のマシンが CDROM またはその他のデバイスを共有します。これは、複数のマシンにソフトウェアをインストールする場合に安価で便利です。- 大規模なネットワークでは、すべてのユーザーのホーム ディレクトリを収容するように中央の NFS サーバーを構成すると便利な場合があります。これらのディレクトリはネットワークにエクスポートできるため、ユーザーはどのワークステーションにログインしても常に同じホーム ディレクトリを取得できます。
- 異なるクライアントが NFS 上の映画や TV ファイルを視聴できるため、ローカル スペースを節約できます
-
クライアント上で完了した作業データをNFSサーバー上のユーザー独自のパスにバックアップ保存可能-
1.3 nfsシステム構成
nfs システムには少なくとも 2 つの主要な部分が必要です:
nfs システムのアーキテクチャ図は次のとおりです。
クライアントは、TCP/IP ネットワーク経由で NFS サーバーに保存されているデータにリモート アクセスします
NFS サーバーを正式に有効にする前に、一部の NFS パラメーターを以下に基づいて構成する必要があります。実際の環境とニーズ
2. nfs の動作メカニズム #nfs は、rpc に基づいてネットワーク ファイル システムの共有を実現します。それでは、最初に RPC について説明しましょう。
2.1 RPC
RPC (リモート プロシージャ コール プロトコル) は、リモート プロシージャ コール プロトコルであり、理解することなく、ネットワークを介してリモート コンピュータ プログラムからサービスを要求する方法です。基盤となるネットワーク技術のプロトコル。
RPC プロトコルは、通信するプログラム間で情報データを運ぶために、TCP や UDP などのトランスポート プロトコルの存在を前提としています。 OSI ネットワーク通信モデルでは、RPC はトランスポート層とアプリケーション層に及びます。
#RPC はクライアント/サーバー モードを採用しています。リクエスターはクライアントであり、サービスプロバイダーはサーバーです。
rpc の動作メカニズムは上の図に示されているので、以下で説明します。
- クライアント プログラムは RPC システム コールを開始し、TCP プロトコルに基づいて別のホスト (サーバー) に送信します。
- サーバーは特定のソケットをリッスンします。 クライアントのシステムを受信するとき 呼び出し後リクエストを受け取り、受け取ったリクエストとローカルのシステムコールで渡されたパラメータを実行し、その結果をローカルのサービスプロセスに返します。
- 返された実行結果を受け取った後、サーバー側のサービスプロセスはカプセル化されます。応答メッセージに変換され、rpc プロトコルを通じてクライアントに返されます。
#クライアントは、プロセスを呼び出して応答情報を受け取り、プロセスの結果を取得し、実行を呼び出して継続します-
2.2 nfs の動作メカニズム
NFS サーバーは 4 つのプロセスを実行します:
- nfsd
- mountd
- idmapd
- ポートマッパー
idmapd
ユーザー アカウントの一元的なマッピングを実現し、すべてのアカウントを NFSNOBODY にマッピングしますが、アクセスする場合はローカル ユーザーとしてアクセスできます
mountd
クライアントが、この NFS ファイル システムへのアクセスを許可されたクライアントのリストに含まれているかどうかを確認するために使用されます。含まれている場合は、アクセスが許可されます (トークンを発行し、nfsd を見つけるためにトークンを保持します)。そうでない場合は、アクセスが拒否されました
mountd のサービス ポートはランダムであり、ランダムなポート番号は rpc サービス (ポートマッパー) によって提供されます
nfsd
nfs デーモン、2049/tcp および 2049/udp ポートでリッスン
はファイル ストレージ (NFS サーバーのローカル カーネル) を担当しませんストレージのスケジュールを担当します)、クライアントによって開始された rpc リクエストを理解し、それをローカル カーネルに転送し、指定されたファイル システムに保存するために使用されます
portmapper
NFS サーバーの rpc サービスは、111/TCP および 111/UDP ソケットをリッスンし、リモート プロシージャ コール (RPC) の管理に使用されます。
次は例です。 NFS プロセスの簡単な動作を説明するには:
要件:
file ファイルの情報を表示します。この file はリモート NFS サーバー ホスト (にマウントされています) に保存されています。ローカル ディレクトリ /shared/nfs)
クライアントはカーネルに対してファイル情報 (ls ファイル) を表示するコマンドを開始します。カーネルは NFS モジュールを通じて学習します。このファイルはローカル ファイル システム内のファイルではなく、リモート NFS ホスト上のファイルであることを確認します。- クライアント ホストのカーネルは、ファイル情報を表示する命令 (システム コール) を rpc リクエストにカプセル化します。 RPC プロトコル経由で、TCP ポート 111 経由で NFS サーバー ホストに送信します。 portmapper
- NFS サーバー ホストのポートマッパー (RPC サービス プロセス) は、NFS サーバーの mountd サービスが特定のサーバー上にあることをクライアントに伝えます。
-
mountd がオンになっているため、サービスを提供するときは、ポートマッパーがどのポートで動作しているかを認識できるように、ポート番号をポートマッパーに登録する必要があります。
クライアントはサーバーの mountd プロセスのポート番号を学習した後、既知のサーバーの mountd ポート番号要求の検証を使用します
検証要求を受信した後、mountd は要求を開始したクライアントがこの NFS ファイル システムへのアクセスが許可されているクライアントのリスト。許可されている場合はアクセスが許可されます (トークンを発行し、トークンを保持して nfsd を検索します)。そうでない場合はアクセスが拒否されます。- 検証に合格した後、クライアントはトークンを使用します。サーバーの nfsd プロセスを検索し、特定のファイルの表示を要求するために mountd によって発行されます。
- サーバーの nfsd プロセスは、ローカル システム コールを開始します。クライアントが作成したファイルの情報を表示するようカーネルに要求します。表示したいです。
- サーバーのカーネルは、nfsd によって要求されたシステム コールを実行し、その結果を nfsd サービスに返します。
- nfsd プロセスがカーネルから返された結果を受信した後、それをカプセル化します。 rpc リクエスト メッセージを作成し、tcp/ip プロトコルを通じてクライアントに返します。
-
- 関連知識の詳細については、
FAQ
列を参照してください。
以上がNFSとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。