事例を通して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がデータとメソッドを直接取得できる理由がわかる

推薦する

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

Centos8環境でSSHポート番号を変更する方法

目次序文始める序文サーバーのデフォルトの SSH ポート番号は通常 22 であるため、ほとんどのユー...

Vueは小さな検索機能を実装する

この記事の例では、検索機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的な...

非常に実用的なTomcat起動スクリプトの実装方法

序文セキュリティ上の理由から、会社が Linux サーバーへのすべてのログインにセキュリティ制限を課...

ubuntu16.04でNFSサービスを構築する方法

NFS の紹介NFS (ネットワーク ファイル システム) は、FreeBSD でサポートされている...

CSS属性のマージンの理解について話す

1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...

Dreamweaver で Zen コーディングを使用する方法

前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

Vue バックグラウンドでステータス ラベルをエレガントに記述する例

目次序文最適化変数の抽出二次包装 el-tag コンポーネント使用要約する序文バックエンドシステムの...

Vue.jsは9グリッド画像表示モジュールを実装します

Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...

MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する

今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...

Windows での MySQL コミュニティ サーバー 8.0.16 のインストールと構成方法のグラフィック チュートリアル

最近、MySQL関連の構文をよく見かけます。また、MySQLストアドプロシージャの書き方も学びたいの...

Vue コンポーネント化の一般的な方法: コンポーネント値の転送と通信

関連する知識ポイント親コンポーネントから子コンポーネントに値を渡す子コンポーネントから親コンポーネン...

JavaScript でクールなマウス テーリング効果を実装

これを見た後、あなたにも手ができて、さまざまな美しい小さなしっぽを作れるようになることを保証します!...

クールなページング効果を実現するネイティブJS

この記事では、次のような効果を持つ JS ページング効果の例を紹介します。クールだと思いませんか? ...