LinuxでのNFSの基礎

  

NFSの概要

NFSは、Sunによって最初に開発されたNetwork FileSystemの頭字語です。彼の最大の機能は、さまざまなマシン、さまざまなオペレーティングシステム、ネットワークを介して独自のファイルを共有することです(ファイル共有)。したがって、単に彼をファイルサーバーと見なすことができます。 。このNFSサーバを使用すると、PC上でネットワーク上のリモートNFSホストが共有するディレクトリをローカルマシンにマウントすることができるため、ローカルマシンは、リモートホストのディレクトリが自分のパーティションのように見えます。あなたにシェアを与えるリモートマシンはサーバであり、あなたのパソコンはクライアントです。

NFS V2プロトコル(rfc1094)、NFS V3(rfc1813)などのNFSプロトコルは、当初からリリースされています。最新バージョンはV4(rfc3010)です。

V3はV2に多くの機能を追加します。重要な機能の1つは非同期書き込み機能を追加することです:概要はここにあります:

NFS V3は非同期書き込みを使用できますか?これはオプションの機能です。 NFS V3クライアントは非同期の書き込み要求をサーバーに送信し、サーバーはクライアントに応答する前にデータをメモリーに書き込む(安定している)必要はありません。サーバーは、いつデータを書き込むか、または複数の書き込み要求をまとめて処理するかを決定してから書き込みます。サーバーがデータを完全に書き込めない場合に備えて、クライアントはデータのコピーを保持できます。クライアントがコピーを解放したいときは、各ステップが確実に完了するようにプロセスをサーバーに渡します。非同期書き込みを使用すると、サーバーはデータを同期させるための最適な方法を決定できます。データがデータの到着にできるだけ近づくようにします。 V2と比較して、このようなメカニズムはデータのバッファリングと並列化(バランス)をよりよく達成できます。 NFS V2サーバーは、データをメモリーに書き込む前に書き込み要求を書き込むことができなくなりました。

では、NFSはどのように実装されているのでしょうか。


RPCの概要

NFSには独自のプロトコルとポート番号が使用されていますが、データ転送またはその他の関連情報が配信される場合NFSは、Remote Procedure Call(RPC)と呼ばれるプロトコルを使用して、NFS自体の動作を支援します。

リモート接続にサービスを使用する場合、ホストのIP、サービスのポート番号、対応するサービスのPIDなどの情報を管理し、対応させる必要があります。これらの管理ポートの対応とサービスの依存関係の仕事は、このRemote Procedure Call(RPC)のタスクです。

NFSサービス自体はデータ転送用のプロトコルを提供していませんが、NFSを使用するとファイルを共有することができます。これらの伝送のプロトコルは、いわゆるRPC機能を使用することです。つまり、NFS自体がRPCを使用するプログラムですが、より端的に言えば、NFSもRPCサーバーと見なすことができます。

同時に、場合によっては、NFSを実行しているサーバーだけではなくRPCサービスをアクティブにする必要があるだけでなく、NFSパーティションをマウントするクライアントマシンも同期してRPCをアクティブにする必要があります。これは、サーバ側とクライアント側とがRPCプロトコルによるプログラムポート対応を行えるようにするためである。 NFSは主に共有ディレクトリを管理し、データが渡される限りは、RPCプロトコルに直接投げられて動作します。

では、サーバー側でファイルにアクセスするにはどのようなバックグラウンドプログラムが必要ですか?つまり、サーバー側はNFSサービスを提供する必要があります。これまでの説明から、nfsサーバーは実際にはrpcサーバーであることがわかります。したがって、nfsを提供するデーモンはrpcデーモンです。


NFSサーバーのRPCデーモン

クライアントはnfsサーバーファイルにアクセスする必要があり、NFSサーバーにはNFSサービスが必要であり、NFSサービスはこれは、次の2つのバックグラウンドプロセスによって行われます。

2、rpc.mountd:このデーモンの主な機能はNFSファイルシステムを管理することです。

クライアントがrpc.nfsdを介してホストに正常にログインすると、NFSサーバーから提供されたファイルを使用する前にファイルのアクセス許可が渡されます(つまり、-rwxrwxrwxと所有者がそれらのアクセス許可をグループ化します)。 )認証プロセス。彼はクライアントのパーミッションを比較するためにNFS設定ファイル/etc /exportsを読みますこのレベルを通過した後、クライアントはNFSファイルを使用するパーミッションを取得することができます。 (注:ここでも、NFS共有ディレクトリを管理するためのアクセス許可とセキュリティ設定を使用しています)。

NFSを起動して外部で実行するには、合計2つのパッケージが必要です。

1、nfs-utils:これはNFSデーモン、その他の関連文書、ドキュメンテーション、実行ファイルなどのセットで、rpc.nfsdとrpc.mountdで、これはNFSのメインパッケージです。

2、portmap:ポートマッピングを改良しました。
先ほど述べたように、私たちのNFSは実際にはRPCサーバープログラムと見なすことができ、RPCサーバープログラムをアクティブにする前に、ポートのマッピング作業を行う必要があります。ジョブは実際には "portmap"サービスを担当しています。言い換えれば、RPCサーバーを起動する前にportmapを起動する必要があります。

では、ポートマップは何をしているのでしょうか。このサービスの名前と同じように、それはポートのマッピングです。例:クライアントがRPCサーバーが提供するサービスを使用しようとすると、クライアントはRPCサーバーが提供するサービスを使用するために接続可能なポートを取得する必要があるため、最初にポートマップと通信します。教えてください、私にポート番号を教えてください。そうすれば私はRPCに連絡することができます! 』、今回はportmapは自動的に自分に管理されているport mappingをクライアントに通知するので、彼はサーバーに接続することができます。

だから:「NFSを有効にする前にポートマップを有効にする」


NFSクライアントの設定

クライアント側実際には、設定は、クライアントがどのようにホストのディレクトリをマウントするかを言うことです。もちろん、そのマウントディレクトリを使用して、その構文は次のようになります。

#mount -t nfs hostname(orIP):/directory /mountpoint

誤ってNFS側にリンクされることになるSUID特権ファイルのプログラム実行を心配するために、rootはより安全な状況でNFSによって共有されるディレクトリをマウントすることができます。

#mount -t Nfs -o nosuid、roホスト名:/directory /mountponit

マウントnfsのその他のオプションパラメータ:

1、ハードマウントとソフトマウント:

ハード:NFS CLIENTは、MOUNTまで、SERVERとの接続を試みます(バックグラウンドではプロンプト情報は表示されません。Linuxの一部のバージョンではヒントが表示されます)。

ソフト:フォアグラウンドでSERVERとの接続を試みます。これがデフォルトの接続方法です。エラーメッセージを受け取り、関連情報が与えられると、マウントの試みは終了します。

例:mount -F nfs -o hard 192.168.0.10:/nfs /nfs

ハードとソフトのどちらを使用するかについては、主にどの情報を表示するかによって異なります。たとえば、NFSを介してX PROGRAMを実行したい場合、予期しない状況(ネットワーク速度が非常に遅くなったり、ネットワークカードのプラグを差し込んだりなど)が原因で、システムが多くのエラーメッセージを出力したくないでしょう。この時点でHARD方式を使用している場合、システムは情報を転送するためにNFSサーバーとの接続を再確立できるまで待機します。さらに、それが重要ではないデータである場合は、FTPデータなどのSOFTメソッドを使用して、リモートマシンが一時的に接続またはクローズされたときにセッションが中断されないようにすることもできます。

Copyright © Windowsの知識 All Rights Reserved