Linux での NFS サービスについての予備的な理解

王林
リリース: 2024-01-23 17:18:05
転載
1161 人が閲覧しました

Linux NFS服务的初步了解

RPC の概要

1) サービス利用者 (クライアント) は、ローカル呼び出しを通じてサービスを呼び出します。

2) 呼び出しを受信した後、クライアント スタブはメソッド、パラメータなどをネットワーク経由で送信できるメッセージ本文に組み立てる役割を果たします。

3) クライアント スタブはサービス アドレスを見つけて、メッセージをサーバーに送信します。

4) サーバー スタブはメッセージを受信した後、メッセージをデコードします。

5) サーバー スタブは、デコード結果に基づいてローカル サービスを呼び出します。

6) ローカル サービスが実行され、結果がサーバー スタブに返されます。

7) サーバー スタブは、返された結果をメッセージにパッケージ化し、それをコンシューマに送信します。

8) クライアント スタブはメッセージを受信し、それをデコードします。

9) サービス利用者が最終結果を受け取ります。

NFS の概要

NFS (Network File System) は、FreeBSD がサポートするファイル システムの 1 つで、ネットワーク上のコンピュータが TCP/IP ネットワークを通じてリソースを共有できるようにします。 NFS アプリケーションでは、ローカル NFS クライアント アプリケーションは、ローカル ファイルにアクセスするのと同じように、リモート NFS サーバーにあるファイルを透過的に読み書きできます。

現在、NFS には主に 2 つのバージョン (NFSv2、NFSv3) があり、NFSv2 のバージョン 3 と、より多くの新機能をサポートする NFSv3 に加えて、主な違いは、NFSv2 が送信に UDP プロトコルを使用するため、NFSv2 の接続が困難になる可能性があることです。複雑なネットワーク環境ではそれほど信頼性が低く、NFSv3 は UDP プロトコルと TCP プロトコルの両方をサポートします。

調べてみたら、Centos7 はすでに NFSv4 プロトコルをサポートしていることがわかりました。NFSv4 についてはここには載せません。時間があるときに v4 について見てみましょう。

クライアントが NFS 共有ボリュームをマウントしたい場合、サーバーに RPC 要求が送信され、NFS サーバーはユーザー認証後にランダムな Cookie をクライアントに送信し、クライアントがこの Cookie を認証に使用できるようにします。アクセスされる共有ボリューム。 NFS 認証は、組み込みの IP/ホスト権限の割り当てをサポートしていますが、tcp ラッパーによっても制限されます。


Redhat 上の NFS サービス

NFS サポートは、Redhat カーネルでデフォルトで有効になっており、NFS サーバーの起動は、ネットワーク ソケットのバインドと RPC 呼び出しを担当する NFS デーモンによって制御されます。また、rpcbind サービス (redhat5 ポートマップで名前が付けられています) も必要です)、システム内に nfs サービスが見つからない場合は、nfs-utils パッケージがインストールされていないことが原因です。このパッケージには、いくつかのツールとサービス スクリプトが含まれています。

NFS サービス全体には、おそらく次のものが含まれます (Red Hat 公式ドキュメントからコピーしましたが、少し古いようです):

nfs

— NFS

に応答するために、対応する RPC プロセスを開始します。 nfslock

— これは、ファイル ロックのクライアント要求に応答するために使用されるオプションのサービスです。
  • rpcbind(portmap) — これは、接続を確立し、rpc リクエストに応答するために使用される、rpc サービスのデーモン プロセスです。
  • NFS サービスは、次の RPC 呼び出し (関数) を提供します:
  • rpc.mountd
— この関数は、クライアントのマウント要求に応答し、要求されたファイル システムの使用が許可されているかどうかを確認するために使用されます。このプロセスは、nfs サービスによって開始されます。

rpc.nfsd

— nfs サービスのメインプロセス (関数)。
  • rpc.lockd — 上記の nfslock サービスのメイン呼び出し (関数) は、主に顧客のファイル ロック要求に応答するために使用されます。
  • rpc.statd - この呼び出し (関数) は主に、nfs サーバーが再起動または異常にシャットダウンしたときにクライアントに通知するために使用され、nfslock サービスによって有効になります。
  • rpc.rquotad — nfs サービスは、クォータ呼び出し (関数) をサポートするために使用されます。
  • NFS サービスの構成
  • NFS 構成ファイルは /etc/exports にあります
  • デフォルトは空のファイルです。次の形式 (1 行に 1 つの共有ボリューム) で構成するだけで済みます。 host:限定ホスト (ドメイン名) 1.単一ホストまたはIP
  • 2. ドメイン名またはホスト名で使用されるワイルドカード * (任意の文字と一致) または ? (任意の 1 文字と一致)
3.IP/マスク、例: 192.168.110.0/24 options: マウント オプション。以前のホストのマウント権限を制限するために使用されます。

共通オプション:

  • ro,rw: 読み取り専用または読み取り/書き込み
  • sync: 同期、クライアントの書き込み要求が完了すると、メモリ内のデータがすぐにディスクに書き込まれます。これは安全です。
  • async: 非同期。クライアントの書き込みリクエストが完了すると、サーバーはデータをすぐにディスクに書き込まず、特定の機会 (アイドル状態か...誰にもわかりません) でディスクにデータを書き込みます。紛失の可能性がございます。
  • wlay(書き込み遅延): 書き込み遅延。これは、サーバーがディスクへのデータの書き込みを遅らせることを可能にする最適化オプションです。これにより、2 番目のクライアント書き込み要求が来た場合、1 つの書き込みシステム コールを使用して 2 つのデータが書き込まれます。ディスク。
  • nowlay: 上記とは異なり、同期モードでのみ使用できます。
  • root_squash: "squash" ルート。クライアントがサーバーにファイルを書き込むときに、クライアントによって書き込まれたユーザーの uid がサーバーの同じ uid を持つユーザーに直接マッピングされるため、root ユーザーはサーバー側では、所有者とグループは依然として root ですが、これには特定のセキュリティ上のリスクがあるため、このオプションを使用して root を nfsnobody ユーザーにフラット化できます。
  • all_squash: すべてのユーザーをスカッシュします。anonuid=、anongid= を使用して、どのユーザーをスカッシュするかを指定できます。

以上がLinux での NFS サービスについての予備的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:linuxprobe.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート