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 モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

推薦する

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

Reactは、読み込み、読み込み完了、読み込み失敗の3つの段階の原則分析を実装します。

最近ブログに書いたのですが、プロジェクトリストの中に写真がたくさんあり、最初は読み込みが遅いので、ス...

特殊効果メッセージボックスを実現するネイティブJS

この記事では、ネイティブ JS で実装された特殊効果メッセージ ボックスを紹介します。効果は次のとお...

JS はシンプルなブロック崩しピンボールゲームを実装します

この記事では、ブロック崩しピンボールゲームを実装するためのJSの具体的なコードを参考までに紹介します...

Docker での FastAPI デプロイの詳細なプロセス

Docker 学習https://www.cnblogs.com/poloyy/p/15257059...

MySQL フェイルオーバー ノート: アプリケーション対応設計の詳細な説明

1. はじめに周知のように、データベース ミドルウェアの読み取り/書き込み分離のアプリケーション シ...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

DockerのIDEA構成プロセス

IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...

Linux での MySQL 5.7.19 (tar.gz) インストール グラフィック チュートリアル

Linux で MySQL-5.7.19 バージョンをインストールするための最初のチュートリアル。す...

Ubuntu 18.04 が VMware 仮想マシンでネットワークに接続できない問題の解決策

仮想マシン内のUbuntu 18.04がネットワークに接続できない問題の解決策は次のとおりですVMw...

Discuz! フォーラムに設定オプションを追加する方法

Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...

レイアウトサイズを変更するために左右にドラッグする純粋なCSS

ブラウザの非overflow:auto要素resize伸縮機能を利用して、JavaScript を使...

Linux (Ubuntu 18.04) に Anaconda をインストールする詳細な手順

Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...

WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

1. はじめにプロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け...

linuxdeployqt を使用して Ubuntu で Qt プログラムをパッケージ化する問題を解決する

いくつかの Qt インターフェース プログラムを作成しましたが、Qt 環境がインストールされていない...