事例を通してLinux NFSの仕組みを詳細に分析

事例を通してLinux NFSの仕組みを詳細に分析

前回の記事に引き続き、web02 サーバーを作成し、web01 サーバーと web02 サーバーの /data ディレクトリを nfs01 サーバーの共有ディレクトリ /data にマウントし、さまざまな方法で自動起動を有効にします。

ウェブ01:

/etc/rc.local に次の行を追加します。

再起動して確認します:

ウェブ02:

テンプレートマシンをクローンし、web02仮想マシンを作成し、ホスト名とIPアドレスを変更します

rpcサービスをインストールします: yum install rpcbind 有効にして、起動時に開始するように設定します

最後に次の行を追加します。

ディスクのマウントはシステム起動シーケンスでのネットワーク カードの読み込みよりも高速であり、RPC にはネットワークが必要であるため、遅延マウントを有効にする必要があります。

再起動して確認します:

注意: 起動時にマウントする場合は、nfs01 サーバーとその nfs サービスの両方が有効になっていることを確認してください。

nfs01 サーバーの共有ディレクトリ情報を表示する

uid と gid を設定することでユーザー アクセスを指定できます (サーバーとクライアントに同じユーザーを追加します --- uid と gid は同じです)。

useradd -u 1111 テスト

web01 サーバーでテスト:

要約:

①NFSサーバのNFS設定ファイル内の共有ディレクトリに書き込み権限が必要です

②NFSサーバ共有ディレクトリのローカル権限をw権限に設定する必要があります

③ユーザーを指定する際は、サーバーとクライアントのユーザーのuidとgidが同じであることを確認してください(ユーザー名は異なっていても構いません)

クライアントマウントの詳細

クライアントのマウント情報を表示します。

2つの取り付けモード:ハードとソフト

マウントがソフト モードの場合、ネットワークまたはサービスの問題が発生すると、クライアントはタイムアウト (timeo) が停止するまで継続的にマウントを試行します。

ハード マウントを使用すると、システムはマウントが成功するまで試行を続けます。この時点ではマウントを解除したり、マウントを強制終了したりすることはできません。これは intr とともに使用されることが多いです。

注意: ソフトはタイムアウト後にデータが失われる可能性があるため、推奨されません。

rsize/wsize は書き込み/読み取りのブロック サイズであり、クライアントとサーバー間のデータ転送用のバッファー ストレージ容量に影響します。ローカル エリア ネットワーク内で、両側のメモリが比較的大きい場合は、この値を大きく設定して転送速度を上げることができます。

マウントコマンドの詳細な説明: https://www.runoob.com/linux/linux-comm-mount.html

CentOS7.6 の最適化では、次のマウント コマンドの使用が推奨されます。

マウント -t nfs -o noatime、nodiratime、nosuid、noexec、nodev、rsize=131072、wsize=131072 172.16.1.31:/data /mnt

NFS カーネル最適化の提案

  • /proc/sys/net/core/rmem_default: このファイルは受信ソケットバッファサイズのデフォルト値を指定します。デフォルトは124928 (バイト)です。
  • /proc/sys/net/core/rmem_max: このファイルは受信ソケットバッファの最大サイズを指定します。デフォルトは 124928 (バイト) です。
  • /proc/sys/net/core/wmem_default: このファイルは送信ソケットバッファサイズのデフォルト値を指定します。デフォルトは 124928 (バイト) です。
  • /proc/sys/net/core/wmem_max: このファイルは送信ソケットバッファの最大サイズを指定します。デフォルトは 124928 (バイト) です。

上記のファイルに対応する具体的なコマンドは次のとおりです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で USB デバイスの信号を監視するための Python の実装
  • Linux USBホストドライバの書き方の詳細説明
  • ARM LinuxはALSAドライバを使用し、USBオーディオデバイスを使用します
  • LinuxでUSBモバイルストレージを使用する方法
  • Linux環境でUSBストレージを使用する
  • Linux NFSメカニズムの動作原理と例の分析
  • IntelliJ IDEA リモート デバッグ Linux Java プログラム、ログを見るだけでなく問題を見つけます (推奨)
  • Linux bzip2 コマンドの使用
  • Linux で libudev を使用して USB デバイスの VID と PID を取得する方法

<<:  JPQLに基づく純粋なSQL文方式の詳細な説明

>>:  ソースコードから、Vue2がデータとメソッドを直接取得できる理由がわかる

推薦する

nginx で複数のフロントエンド プロジェクトをデプロイするいくつかの方法

nginx を使用して 1 つのサーバーに複数のフロントエンド プロジェクトをデプロイする 3 つの...

React refの使用例

目次refとは何かrefの使い方DOM要素に配置するクラスコンポーネントに配置する関数コンポーネント...

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

PHP 開発環境の構築に関する win10 docker-toolsbox チュートリアル

画像をダウンロード docker プル mysql:5.7 docker pull php:7.2-...

CSSのline-heightとheightの詳細な説明

最近、CSS インターフェースに取り組んでいるときに、line-height と height とい...

Centos7 で yum を使用して Mysql5.7.19 をインストールする詳細な手順

Centos7 の yum ソースには、mysql の代わりに mariaDB が使用されているため...

CSSは高さと幅を固定した要素の比例表示効果を実現します

padding-top パーセンテージを使用すると、固定幅と比例した高さの表示を実現できます。現在の...

Vue elementUI はツリー構造テーブルと遅延読み込みを実装します

目次1. 成果を達成する2. バックエンドの実装2.1 エンティティクラス2.2 データベース内のデ...

MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有

複数のデータベースをバックアップするには、次のコマンドを使用できます。 mysqldump -uro...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

Docker x509 の安全でないレジストリ問題を解決する

Docker をインストールした後、会社が構築したプライベート サーバー Harbor からプルしよ...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

Vueシャトルボックスは上下の動きを実現します

この記事の例では、vueシャトルボックスを上下に動かすための具体的なコードを参考までに共有しています...

Linuxオペレーティングシステムは、タスクマネージャーの視覚化機能を実装するためにPythonを使用しています。

1. Pythonのインストール1. フォルダーを作成します。 mkdir python フォルダ...

Tomcatのクラスロードメカニズムを説明する記事

目次- 序文 - - JVM クラスローダー - 1. JVMクラスローダー2. クラスローダーのソ...