NFS サーバーの原理と、その構築、構成、展開の手順を簡単に分析します。

NFS サーバーの原理と、その構築、構成、展開の手順を簡単に分析します。

NFS サービスの概要

NFS とは何ですか?

  • NFS は Network File System の略です。その最大の機能は、異なるマシンや異なるオペレーティング システムがネットワークを介して互いのファイルを共有できるようにすることです。
  • NFS サーバーを使用すると、PC はネットワーク内の NFS サーバーによって共有されているディレクトリをローカル ファイル システムにマウントできます。ローカル システムの観点から見ると、リモート ホストのディレクトリは、独自のディスク パーティションの 1 つのように見えるため、非常に便利です。
  • NFS は通常、共有ビデオや画像などの静的データを保存するために使用されます。

NFS マウントの原則

ここに画像の説明を挿入

サーバーマウント構造図

上記の通り:

NFSサーバー上に共有ディレクトリ/home/publicを設定した後、

NFS サーバーにアクセスできる他の NFS クライアントは、このディレクトリを独自のファイル システム内のマウント ポイントにマウントできます。

このマウントポイントは自分で定義できます

上図に示すように、クライアント A とクライアント B によってマウントされるディレクトリは異なります。

マウント後、サーバー /home/public のすべてのデータをローカルで確認できるようになります。

  • サーバーがクライアントを読み取り専用に設定した場合、クライアントは読み取り専用のみを実行できます。
  • 読み取りと書き込みが設定されている場合、クライアントは読み取りと書き込みが可能になります。

マウント後、NFS クライアントは #df –h コマンドを使用してディスク情報を確認します。

NFS はネットワークを介してサーバーとクライアント間でデータを転送するため、両者間のデータ転送には対応するネットワーク ポートが必要です。

NFS サーバーはデータ転送にどのポートを使用しますか?

基本的に、NFS サーバーのポートは 2049 で開かれますが、ファイルシステムは非常に複雑です。

そのため、NFS には追加のポートを起動するための他のプログラムがあります。データの送信に使用されるこれらの追加ポートはランダムに選択され、1024 未満のポートです。

ランダムなので、クライアントは NFS サーバーがどのポートを使用しているかをどのように知るのでしょうか?

このとき、リモート プロシージャ コール (RPC) プロトコルを介して実装する必要があります。

RPC と NFS 間の通信原理

​ NFS は非常に多くの機能をサポートしており、異なる機能は異なるプログラムを使用して起動するため、機能が起動されるたびに、いくつかのポートがデータ転送用に有効になります。したがって、NFS 機能に対応するポートは固定されていません。クライアントは、データ転送用の接続を確立するために、NFS サーバー上の関連ポートを知っている必要があります。RPC は、NFS ポートを統一的に管理するために使用されるサービスであり、統一された外部ポートは 111 です。RPC は NFS ポートの情報を記録するため、RPC を使用してサーバーとクライアント間でポート情報を通信できます。 PRC の主な機能は、各 NFS 機能に対応するポート番号を指定し、クライアントが通常のポートに接続できることをクライアントに通知することです。

では、RPC はどのようにして各 NFS 機能のポートを認識するのでしょうか?

まず、NFS が起動すると、ランダムにいくつかのポートが使用され、次に NFS はこれらのポートを RPC に登録し、RPC はこれらのポートを記録し、RPC はポート 111 を開いてクライアントの RPC 要求を待機します。クライアントに要求がある場合、サーバー側の RPC は、以前に記録された NFS ポート情報をクライアントに通知します。このようにして、クライアントは NFS サーバーのポート情報を取得し、実際のポートを使用してデータを送信します。

知らせ:

NFSサーバーを起動する前に、まずRPCサービス(つまりポートマップサービス、以下同じ)を起動する必要があります。

そうしないと、NFS サーバーは RPC サービス領域に登録できなくなります。

また、RPC サービスを再起動すると、登録されている NFS ポート データはすべて失われます。

したがって、RPC サービスによって管理される NFS プログラムも再起動して、RPC に再登録する必要があります。

特別な注意:

通常、NFS 構成ドキュメントを変更した後、NFS を再起動する必要はありません。systemctl reload nfs または exportfs –rv コマンドを直接実行して、変更した /etc/exports を有効にできます。

NFSクライアントとNFSサーバー間の通信プロセス

ここに画像の説明を挿入

  • まず、サーバー上でRPCサービスを開始し、ポート111を開きます。
  • サーバーはNFSサービスを開始し、RPCでポート情報を登録します。
  • クライアントは RPC (ポートマップ サービス) を開始し、サーバーの RPC (ポートマップ) サービスからサーバーの NFS ポートを要求します。
  • サーバーの RPC (ポートマップ) サービスは、NFS ポート情報をクライアントにフィードバックします。
  • クライアントは取得した NFS ポートを介してサーバーとの NFS 接続を確立し、データを送信します。

Linux での NFS サーバーの展開

NFS サービスに必要なソフトウェアと主要な構成ファイル

NFS サービスをインストールするには、次の 2 つのソフトウェアをインストールする必要があります。

RPC メインプログラム: rpcbind

NFS は実際には RPC サービスと見なすことができます。これは、RPC サービスを開始する前にポート マッピング作業を行う必要があり、この作業は実際には「rpcbind」サービスの責任であるためです。

つまり、RPC サービスを開始する前に、rpcbind を開始する必要があります。 (CentOS 5.x より前では、このソフトウェアは portmap と呼ばれ、CentOS 6.x 以降では rpcbind と呼ばれていました)。

NFS メインプログラム: nfs-utils

これは、2 つの NFS デーモン rpc.nfsd と rpc.mountd と、その他の関連ドキュメントや手順、実行可能ファイルなどを提供するソフトウェアです。これは NFS サービスに必要な主要なソフトウェアです。

NFS関連ファイル

  • メイン設定ファイル: /etc/exports
    これは NFS のメイン設定ファイルです。このファイルは空であり、一部のシステムでは存在しない可能性があります。主に手動で作成されます。通常、NFS 構成はこのファイルでのみ構成する必要があります。
  • NFS ファイルシステムメンテナンスコマンド: /usr/sbin/exportfs
    これは、NFS 共有リソースを保守するためのコマンドです。このコマンドを使用すると、/etc/exports で変更されたディレクトリ リソースを再共有したり、NFS サーバーによって共有されているディレクトリをアンマウントまたは再共有したりできます。
  • 共有リソースのログインファイル: /var/lib/nfs/*tab
    NFS サーバーのログイン ファイルは、/var/lib/nfs/ ディレクトリに配置されます。このディレクトリには、2 つの重要なログイン ファイルがあります。1 つは etab で、主に NFS で共有されるディレクトリの完全な権限設定を記録します。もう 1 つは xtab で、この NFS サーバーに接続された関連クライアント データを記録します。
  • クライアントがサーバー共有リソースを照会するコマンド: /usr/sbin/showmount
    これはもう 1 つの重要な NFS ディレクティブです。 exportfs は NFS サーバー側で使用され、showmount は主にクライアント側で使用されます。 showmount を使用すると、NFS で共有されているディレクトリ リソースを表示できます。

サーバーにNFSサービスをインストールする手順

ステップ1: NFSとrpcをインストールする

[root@localhost ~]# yum install -y nfs-utils   
#nfsサービスをインストール [root@localhost ~]# yum install -y rpcbind
#rpcサービスをインストールする

ステップ2: サービスを開始し、開始するように設定する

注: 最初に rpc サービスを開始し、次に nfs サービスを開始します。

[root@localhost ~]# systemctl start rpcbind #まずrpcサービスを起動します[root@localhost ~]# systemctl enable rpcbind #ブートを設定します[root@localhost ~]# systemctl start nfs-server nfs-secure-server      
#nfsサービスとnfsセキュア転送サービスを開始します [root@localhost ~]# systemctl enable nfs-server nfs-secure-server
[root@localhost /]# ファイアウォールコマンド --permanent --add-service=nfs
成功 #NFS サービスを解放するようにファイアウォールを設定します [root@localhost /]# firewall-cmd --reload 
成功

ステップ3: 共有ファイルディレクトリを設定し、設定ファイルを編集する

まず共有ディレクトリを作成し、次に /etc/exports 構成ファイル内の構成を編集します。

[root@localhost /]# mkdir /public
#パブリック共有ディレクトリ [root@localhost /] を作成する# vi /etc/exports
	/パブリック 192.168.245.0/24(ro)
	/保護された 192.168.245.0/24 (rw)
[root@localhost /]# systemctl nfs をリロードします 
#設定ファイルを有効にするためにNFSサービスを再ロードします

設定ファイルの説明:

  • 形式: NFS クライアントがアクセスできる共有ディレクトリのパス (共有権限パラメータ)
    上記のように、共有ディレクトリは/publicであり、アクセスが許可されているクライアントは 192.168.245.0/24 ネットワーク ユーザーであり、権限は読み取り専用です。
    NFS クライアント アドレスと権限の間にスペースがないことに注意してください。
    NFSエクスポート保護には、 kerberos暗号化 ( nonesyskrb5krb5ikrb5p )、形式 sec=XXX が必要です。
  • none : 匿名としてアクセスします。書き込み操作を許可するには、 nfsnobodyユーザーにマップし、ブール スイッチをオンにします。
    setsebool nfsd_anon_write 1 を設定します
  • sys : ファイルアクセスは標準ファイルアクセスに基づきます。指定しない場合は、デフォルトはsysで、送信されたユーザー名を信頼します。
  • krb5 : クライアントは識別子を提供する必要があり、クライアント表現もドメイン環境認証に基づくkrb5である必要があります。
  • krb5i : krb5 に基づいて暗号化操作を実行し、ユーザーのパスワードを暗号化しますが、送信されるデータは暗号化されません。
  • krb5p : すべてのデータは暗号化されます

NFS サービス プログラム構成ファイルを構成するために使用されるパラメーター:

パラメータ効果
読み取り専用
読み書き
ルートスカッシュNFS クライアントがルート管理者としてアクセスすると、NFS サーバーの匿名ユーザーにマッピングされます。
根無しスカッシュNFS クライアントがルート管理者としてアクセスすると、NFS サーバーのルート管理者にマッピングされます。
すべてスカッシュNFS クライアントがアクセスに使用するアカウントに関係なく、そのアカウントは NFS サーバーの匿名ユーザーにマップされます。
同期データの損失を防ぐために、メモリとハードディスクに同時にデータを書き込みます。
非同期まずデータをメモリに保存し、次にハードディスクに書き込みます。これはより効率的ですが、データが失われる可能性があります。

NFSクライアントマウント構成

ステップ1: showmountコマンドを使用してNFSサーバーの共有情報を表示します

出力形式は「共有ディレクトリ名によりクライアントアドレスの使用が可能」です。

[root@localhost ~]# showmount -e 192.168.245.128      
192.168.245.128 のエクスポート リスト:
/保護された 192.168.245.0/24
/パブリック 192.168.245.0/24

showmountコマンドの使用法。

パラメータ効果
-e NFSサーバーの共有リストを表示する
-あローカルマシンにマウントされたファイルリソースとNFSリソースのステータスを表示します。
-vバージョン番号を表示

ステップ2: クライアント上にディレクトリを作成し、共有ディレクトリをマウントする

[root@localhost ~]# mkdir /mnt/public
[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# vim /etc/fstab 
#このファイルにマウントすると、システムが起動するたびに自動的にマウントされます 192.168.245.128:/public /mnt/public nfs defaults 0 0
	192.168.245.128:/protected /mnt/data nfs デフォルト 0 1
[root@localhost ~]# mount -a #ファイル/etc/fstabが有効になります

ステップ3: 確認

[root@mail ~]# df -Th
ファイルシステム タイプ サイズ 使用済み 空き容量 使用率 マウント先
/dev/mapper/rhel-root xfs 17G 3.1G 14G 18% /
devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs tmpfs 1.4G 140K 1.4G 1% /dev/shm
tmpfs tmpfs 1.4G 9.1M 1.4G 1% /実行
tmpfs tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 173M 842M 18% /ブート
tmpfs tmpfs 280M 32K 280M 1% /run/user/0
/dev/sr0 iso9660 3.6G 3.6G 0 100% /mnt/cdrom
192.168.245.128:/public nfs4 17G 3.7G 14G 22% /mnt/public
192.168.245.128:/保護されたnfs4 17G 3.7G 14G 22% /mnt/データ

Windows での NFS のマウント

ステップ1: コントロールパネル -> プログラムと機能の追加 -> NFSコンポーネントの追加

ここに画像の説明を挿入

ステップ2: このコンピュータのマップされたドライブに共有するNFSアドレスとフォルダを追加します

ここに画像の説明を挿入

ステップ3: 権限に問題がある場合

レジストリを開きます: regedit 、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

2 つの新しい OWORD (64) ビット値を作成し、 AnonymousGid (デフォルト値は 0) とAnonymousUid (デフォルト値は 0) を追加します。

上記は、NFS サーバーの原理と構築および構成手順の詳細な内容の簡単な分析です。NFS サーバーの原理、構築、および構成の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux NFS サーバーのインストールと設定方法 (画像とテキスト付き)
  • Linux サーバーの構成 - NFS サーバーを構築する手順
  • Windows NFS サーバーのインストールと構成のチュートリアル
  • Linux NFS サーバーのインストールと構成のアイデアの分析
  • Linux での NFS 設定チュートリアルの詳細な説明

<<:  ページキャッシュを無効にするいくつかの方法を共有する

>>:  Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

推薦する

Nginx を使用してフロントエンドのクロスドメイン問題を解決する方法

序文Vue アプリケーションなどの静的ページを開発する場合、クロスドメインになる可能性のあるインター...

HTML テーブル マークアップ チュートリアル (43): テーブル ヘッダーの VALIGN 属性

垂直方向では、ヘッダーの配置を上、中央、下に設定できます。基本的な構文構文Top は上、Middle...

CSS変数var()の使い方を理解する必要があります

Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...

上部の固定ナビゲーションバーによって CSS アンカーの配置がブロックされる問題の解決方法

多くのウェブサイトでは、ユーザーが簡単に検索したり他のページに移動したりできるように、上部にナビゲー...

スキン効果を実現するJavaScript(背景の変更)

この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

MySQL 8.0 の非表示インデックスの詳細な説明

言葉MySQL 8.0 は最初のバージョンから 4 年を経てリリースされました。バージョン 8.0 ...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

React refsの詳細な紹介

1. 何ですかRefs 、コンピューターでは Resilient File System (ReF...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...

JSは写真の自動再生効果を実現します

この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...

mysql5.7.21.zip インストールチュートリアル

mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...

CentOS7 で MySQL データベースにリモート接続できない理由と解決策

序文最近、仕事で問題が発生しました。 Centos7 システムでは MySQL にリモート接続できな...

ブログデザイン ウェブデザイン デビュー

私がデザインした最初の Web ページは次のとおりです。 私はこの業界に7年間在籍し、プログラミング...