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

推薦する

React の 3 つの主要属性における Ref の使用に関する詳細な説明

目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...

Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

目次ZabbixはNginxを監視するZabbixはTomcatを監視するZabbixはMySQLを...

スクロールラグの問題を解決するためのオーバーフロースクロールの詳細な説明

序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

入力ボックスのカーソルサイズの表示が一貫していない問題の解決方法

入力ボックス内のカーソルのサイズが一定ではありませんIE7とChromeの違いは非常に明白ですまず、...

Ubuntu サーバーで MySQL を設定し、リモート接続を実装する方法

サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

react setStateの詳細な説明

目次setState は同期ですか、それとも非同期ですか?カスタム合成イベントと React フック...

Vueルーティングコンポーネントでパラメータを渡す8つの方法の詳細な説明

シングルページアプリケーションを開発する場合、特定のルートを入力し、パラメータに基づいてサーバーから...

a href=# と a href=javascript:void(0) の違いの詳細な説明

a href="#"> リンクをクリックすると、ページがページ上部までスク...

Dockerコンテナ相互接続の予備的な実践についての簡単な説明

1. Dockerコンテナ間の相互接続Docker は現在、軽量の仮想化ソリューションとなっています...

js 正規表現の先読みと後読み、および非キャプチャグループ化

目次先読みと後読みをキャプチャグループと組み合わせる捕獲グループと非捕獲グループ前を向いて、後ろを振...

Linux に MySQL をインストールする方法 (yum とソース コードのコンパイル)

Linux に MySQL をインストールするには、yum インストールとソース コード コンパイ...

Reactフックとzarmコンポーネントライブラリ構成に基づいてh5フォームページを開発するためのサンプルコード

最近、React Hooks を zarm コンポーネント ライブラリと組み合わせて使用​​し、js...

CSSメディアクエリのアスペクト比を小さくする方法

CSS メディア クエリには非常に便利なアスペクト比、aspect-ratio があり、幅と高さを直...