Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル

第 3 章 NFS チューニング可能パラメータ

この章では、NFS のチューニング可能パラメータについて説明します。

チューニング可能パラメータ情報の記載箇所

チューニング可能パラメータ 

参照先 

Solaris カーネルのチューニング可能パラメータ 

第 2 章Oracle Solaris カーネルチューニング可能パラメータ

インターネットプロトコル群のチューニング可能パラメータ 

第 4 章インターネットプロトコル群のチューニング可能パラメータ

ネットワークキャッシュとアクセラレータ (NCA) のチューニング可能パラメータ 

第 5 章ネットワークキャッシュとアクセラレータのチューニング可能パラメータ

NFS 環境のチューニング

NFS パラメータは、ブートプロセス中に読み込まれる /etc/system ファイルに設定できます。各パラメータには、対応するカーネルモジュールの名前を含めます。詳細は、「Solaris システムのチューニング」を参照してください。


注意 – 注意 –

パラメータ名や、それが存在するモジュール、デフォルト値は、リリースによって変わることがあります。変更を行ったり、前のリリースの値を適用したりする前に、使用する SunOS リリースのバージョンのマニュアルをチェックしてください。


NFS モジュールのパラメータ

ここでは、NFS カーネルモジュールに関連するパラメータについて説明します。

nfs:nfs3_pathconf_disable_cache

備考欄

NFS バージョン 3 でマウントされたファイルシステムの pathconf 情報をキャッシングするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

0 (キャッシングを有効にする)

範囲

0 (キャッシングを有効にする) または 1 (キャッシングを無効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

pathconf 情報はファイルごとにキャッシュされます。しかし、サーバーが特定のファイルの情報を動的に変更することがある場合は、このパラメータを使用してキャッシングを無効にします。クライアントがキャッシュエントリを検証する方法はありません。

コミットレベル

変更の可能性あり

nfs:nfs4_pathconf_disable_cache

備考欄

NFS バージョン 4 でマウントされたファイルシステムの pathconf 情報をキャッシングするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

0 (キャッシングを有効にする)

範囲

0 (キャッシングを有効にする) または 1 (キャッシングを無効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

pathconf 情報はファイルごとにキャッシュされます。しかし、サーバーが特定のファイルの情報を動的に変更することがある場合は、このパラメータを使用してキャッシングを無効にします。クライアントがキャッシュエントリを検証する方法はありません。

コミットレベル

変更の可能性あり

nfs:nfs_allow_preepoch_time

備考欄

タイムスタンプが正しくなかったり「負」であるファイルをクライアントから表示できるようにするかどうかを制御します。

従来、NFS クライアントも NFS サーバーも、返されるファイルの時間範囲を確認していませんでした。伝送されるタイムスタンプ値は符号なしの 32 ビット long です。したがって、あらゆる値が有効でした。

しかし、32 ビットの Solaris カーネルが動作しているシステムでは、タイムスタンプの値は符号付きの 32 ビット long です。このため、タイムスタンプが 1970 年 1 月 1 日より前の表示 (つまり「昔」の) になっていることがあります。

64 ビットの Solaris カーネルが動作しているシステムでの問題は、これとは多少異なります。64 ビットの Solaris カーネルでは、タイムスタンプ値は符号付きの 64 ビット long です。時刻フィールドがフルの 32 ビットの時刻を表しているのか、時刻フィールドが負の時刻、つまり、1970 年 1 月 1 日より前を表しているのかを判別できません。

32 ビットから 64 ビットに変換するときに、時刻に符号を付けるかどうかを決定することはできません。時刻値が本当に負数の場合は、値に符号を付けるべきです。しかし、時刻値がフルの 32 ビット時刻値を本当に表している場合は、時刻値に符号を付けるべきではありません。この問題は、フルの 32 ビット時刻値を無効にすることによって解決できます。

データ型

整数 (32 ビット)

デフォルト

0 (32 ビットのタイムスタンプを無効にする)

範囲

0 (32 ビットのタイムスタンプを無効にする) または 1 (32 ビットのタイムスタンプを有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

正常な操作が行われていても、ファイルによっては、タイムスタンプ値がはるかに離れた将来や過去の日付に設定されることがあります。NFS でマウントされたファイルシステムを使用してこれらのファイルにアクセスすることが望ましい場合は、このパラメータを 1 にすれば、タイムスタンプ値をチェックなしで受け取ることができます。

コミットレベル

変更の可能性あり

nfs:nfs_cots_timeo

備考欄

トランスポートプロトコルとして TCP などの接続型トランスポートを使用している、NFS バージョン 2 でマウントされたファイルシステムのデフォルトの RPC タイムアウトを制御します。

データ型

符号付き整数 (32 ビット)

デフォルト

600 (60 秒)

範囲

0 から 231 - 1

単位

1/10 秒

動的か

はい。ただし、ファイルシステムの RPC タイムアウトは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

TCP では、要求と応答が適切に転送されるよう機能します。しかし、特に遅いネットワークにおいて往復時間が非常に長くなると、NFS バージョン 2 のクライアントがタイムアウトになってしまう可能性があります。

クライアントが無用にタイムアウトしてしまうことを防ぐには、このパラメータを増やします。ただし、値の範囲が非常に広いため、この値を大きくしすぎると、再転送が長い間検出されないおそれがあります。

コミットレベル

変更の可能性あり

nfs:nfs3_cots_timeo

備考欄

トランスポートプロトコルとして TCP などの接続型トランスポートを使用している、NFS バージョン 3 でマウントされたファイルシステムのデフォルトの RPC タイムアウトを制御します。

データ型

符号付き整数 (32 ビット)

デフォルト

600 (60 秒)

範囲

0 から 231 - 1

単位

1/10 秒

動的か

はい。ただし、ファイルシステムの RPC タイムアウトは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

TCP では、要求と応答が適切に転送されるよう機能します。しかし、特に遅いネットワークにおいて往復時間が非常に長くなると、NFS バージョン 3 のクライアントがタイムアウトになってしまう可能性があります。

クライアントが無用にタイムアウトしてしまうことを防ぐには、このパラメータを増やします。ただし、値の範囲が非常に広いため、この値を大きくしすぎると、再転送が長い間検出されないおそれがあります。

コミットレベル

変更の可能性あり

nfs:nfs4_cots_timeo

備考欄

トランスポートプロトコルとして TCP などの接続型トランスポートを使用している、NFS バージョン 4 でマウントされたファイルシステムのデフォルトの RPC タイムアウトを制御します。

NFS バージョン 4 のプロトコル仕様では、同一 TCP 接続での再転送は認められません。したがって、このパラメータでは主に強制的アンマウント操作の検出、サーバーがどの程度迅速に新しいサーバーにフェイルオーバーしたかという検出など、クライアントが特定のイベントにどの程度の迅速に応答するかを制御します。

データ型

符号付き整数 (32 ビット)

デフォルト

600 (60 秒)

範囲

0 から 231 - 1

単位

1/10 秒

動的か

はい。ただし、このパラメータは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

TCP では、要求と応答が適切に転送されるよう機能します。しかし、特に遅いネットワークにおいて往復時間が非常に長くなると、NFS バージョン 4 のクライアントがタイムアウトになってしまう可能性があります。

クライアントが無用にタイムアウトしてしまうことを防ぐには、このパラメータを増やします。ただし、値の範囲が非常に広いため、この値を大きくしすぎると、再転送が長い間検出されないおそれがあります。

コミットレベル

変更の可能性あり

nfs:nfs_do_symlink_cache

備考欄

NFS バージョン2 でマウントされたファイルシステムに対して、シンボリックリンクファイルの内容をキャッシュするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

1 (キャッシングを有効にする)

範囲

0 (キャッシングを無効にする) または 1 (キャッシングを有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

サーバーが、シンボリックリンクファイルの内容を変更してもそのファイルの更新タイムスタンプを更新しない場合や、タイムスタンプの精度が粗すぎる場合には、シンボリックリンクファイルの内容が変更されても、クライアントにはその変更が長い間見られないことがあります。その場合、このパラメータを使用して、シンボリックリンク内容のキャッシングを無効にします。そうすることによって、クライアント上で動作しているアプリケーションに変更がただちに認識されるようにします。

コミットレベル

変更の可能性あり

nfs:nfs3_do_symlink_cache

備考欄

NFS バージョン 3 でマウントされたファイルシステムに対して、シンボリックリンクファイルの内容をキャッシュするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

1 (キャッシングを有効にする)

範囲

0 (キャッシングを無効にする) または 1 (キャッシングを有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

サーバーが、シンボリックリンクファイルの内容を変更してもそのファイルの更新タイムスタンプを更新しない場合や、タイムスタンプの精度が粗すぎる場合には、シンボリックリンクファイルの内容が変更されても、クライアントにはその変更が長い間見られないことがあります。その場合、このパラメータを使用して、シンボリックリンク内容のキャッシングを無効にします。そうすることによって、クライアント上で動作しているアプリケーションに変更がただちに認識されるようにします。

コミットレベル

変更の可能性あり

nfs:nfs4_do_symlink_cache

備考欄

NFS バージョン 4 でマウントされたファイルシステムに対して、シンボリックリンクファイルの内容をキャッシュするかどうかを制御します。

データ型

整数 (32 ビット)

デフォルト

1 (キャッシングを有効にする)

範囲

0 (キャッシングを無効にする) または 1 (キャッシングを有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

サーバーが、シンボリックリンクファイルの内容を変更してもそのファイルの更新タイムスタンプを更新しない場合や、タイムスタンプの精度が粗すぎる場合には、シンボリックリンクファイルの内容が変更されても、クライアントにはその変更が長い間見られないことがあります。その場合、このパラメータを使用して、シンボリックリンク内容のキャッシングを無効にします。そうすることによって、クライアント上で動作しているアプリケーションに変更がただちに認識されるようにします。

コミットレベル

変更の可能性あり

nfs:nfs_dynamic

備考欄

UDP などのコネクションレストランスポートを使用する、NFS バージョン 2 でマウントされたファイルシステムに対して、「動的再転送」と呼ばれる機能を有効にするかどうかを制御します。この機能は、サーバーの応答時間を監視し、RPC タイムアウトと読み取り / 書き込みの転送サイズを調整することによって、再転送の回数を減らそうとするものです。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

このパラメータは変更しないでください。

コミットレベル

変更の可能性あり

nfs:nfs3_dynamic

備考欄

UDP などのコネクションレストランスポートを使用する、NFS バージョン 3 でマウントされたファイルシステムに対して、「動的再転送」と呼ばれる機能を有効にするかどうかを制御します。この機能は、サーバーの応答時間を監視し、RPC タイムアウトと読み取り / 書き込みの転送サイズを調整することによって、再転送の回数を減らそうとするものです。

データ型

整数 (32 ビット)

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

このパラメータは変更しないでください。

コミットレベル

変更の可能性あり

nfs:nfs_lookup_neg_cache

備考欄

NFS バージョン 2 でマウントされたファイルシステムに対して、ネガティブ名前キャッシュを使用するかどうかを制御します。このネガティブ名前キャッシュを使用すると、ルックアップされたファイル名が存在しない場合には、そのファイル名が記録されます。このキャッシュは、存在しないことがすでにわかっているファイル名のルックアップ要求が、ネットワークを介して行われないようにする目的で使用されます。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

このキャッシュが正しく機能するためには、ネガティブエントリが使用前に厳密に検証されなければなりません。整合性機構は、読み取り専用でマウントされたファイルシステムに関しては多少緩和されています。これは、サーバー上のファイルシステムが変更されないか、変更されるにしてもそのペースが緩やかであり、クライアントへの伝達がゆっくりであっても支障はないと想定されているからです。この場合は、この整合性機構が通常の属性キャッシュ機構になります。

読み取り専用でクライアントにマウントされているファイルシステムがサーバーで変更されたら、その変更をクライアントでただちに見る必要ある場合は、このパラメータを使用してネガティブキャッシュを無効にします。

nfs:nfs_disable_rddir_cache パラメータを無効にする場合は、通常、このパラメータも無効にします。詳細は、nfs:nfs_disable_rddir_cacheを参照してください。

コミットレベル

変更の可能性あり

nfs:nfs3_lookup_neg_cache

備考欄

NFS バージョン 3 でマウントされたファイルシステムに対して、ネガティブ名前キャッシュを使用するかどうかを制御します。このネガティブ名前キャッシュを使用すると、ルックアップされたファイル名が存在しない場合には、そのファイル名が記録されます。このキャッシュは、存在しないことがすでにわかっているファイル名のルックアップ要求が、ネットワークを介して行われないようにする目的で使用されます。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

このキャッシュが正しく機能するためには、ネガティブエントリが使用前に厳密に検証されなければなりません。整合性機構は、読み取り専用でマウントされたファイルシステムに関しては多少緩和されています。これは、サーバー上のファイルシステムが変更されないか、変更されるにしてもそのペースが緩やかであり、クライアントへの伝達がゆっくりであっても支障はないと想定されているからです。この場合は、この整合性機構が通常の属性キャッシュ機構になります。

読み取り専用でクライアントにマウントされているファイルシステムがサーバーで変更されたら、その変更をクライアントでただちに見る必要ある場合は、このパラメータを使用してネガティブキャッシュを無効にします。

nfs:nfs_disable_rddir_cache パラメータを無効にする場合は、通常、このパラメータも無効にします。詳細は、nfs:nfs_disable_rddir_cacheを参照してください。

コミットレベル

変更の可能性あり

nfs:nfs4_lookup_neg_cache

備考欄

NFS バージョン 4 でマウントされたファイルシステムに対して、ネガティブ名前キャッシュを使用するかどうかを制御します。このネガティブ名前キャッシュを使用すると、ルックアップされたファイル名が存在しない場合には、そのファイル名が記録されます。このキャッシュは、存在しないことがすでにわかっているファイル名のルックアップ要求が、ネットワークを介して行われないようにする目的で使用されます。

データ型

整数 (32 ビット)

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

このキャッシュが正しく機能するためには、ネガティブエントリが使用前に厳密に検証されなければなりません。整合性機構は、読み取り専用でマウントされたファイルシステムに関しては多少緩和されています。これは、サーバー上のファイルシステムが変更されないか、変更されるにしてもそのペースが緩やかであり、クライアントへの伝達がゆっくりであっても支障はないと想定されているからです。この場合は、この整合性機構が通常の属性キャッシュ機構になります。

読み取り専用でクライアントにマウントされているファイルシステムがサーバーで変更されたら、その変更をクライアントでただちに見る必要ある場合は、このパラメータを使用してネガティブキャッシュを無効にします。

nfs:nfs_disable_rddir_cache パラメータを無効にする場合は、通常、このパラメータも無効にします。詳細は、nfs:nfs_disable_rddir_cacheを参照してください。

コミットレベル

変更の可能性あり

nfs:nfs_max_threads

備考欄

NFS バージョン 2 クライアントの非同期入出力を行うカーネルスレッドの数を制御します。NFS は RPC に基づくものであり、RPC はもともと同期して動作する機能であるため、呼び出し側のスレッドと非同期に NFS 操作を行うには、個別の実行コンテキストが必要です。

非同期に実行できる操作には、先読みのための読み取り、readdir 先読みのための readdir、putpage および pageio 操作のための書き込み、コミット、およびクライアントがファイルの使用を停止したときに実行するクリーンアップ操作のための非アクティブ化があります。

データ型

整数 (16 ビット)

デフォルト

8

範囲

0 から 215 - 1

単位

スレッド

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

ある時点で存在する同時入出力操作の数を増やしたり、減らしたりする場合。たとえば、帯域幅が非常に狭いネットワークでは、NFS クライアントによるネットワークの過負荷を防止するためにこの値を減らすことがあるかもしれません。また、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

nfs:nfs3_max_threads

備考欄

NFS バージョン 3 クライアントの非同期入出力を行うカーネルスレッドの数を制御します。NFS は RPC に基づくものであり、RPC はもともと同期して動作する機能であるため、呼び出し側のスレッドと非同期に NFS 操作を行うには、個別の実行コンテキストが必要です。

非同期に実行できる操作には、先読みのための読み取り、readdir 先読みのための readdir、putpage および pageio 要求のための書き込み、およびコミットがあります。

データ型

整数 (16 ビット)

デフォルト

8

範囲

0 から 215 - 1

単位

スレッド

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

ある時点で存在する同時入出力操作の数を増やしたり、減らしたりする場合。たとえば、帯域幅が非常に狭いネットワークでは、NFS クライアントによるネットワークの過負荷を防止するためにこの値を減らすことがあるかもしれません。また、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

nfs:nfs4_max_threads

備考欄

NFS バージョン 4 クライアントの非同期入出力を行うカーネルスレッドの数を制御します。NFS は RPC に基づくものであり、RPC はもともと同期して動作する機能であるため、呼び出し側のスレッドと非同期に NFS 操作を行うには、個別の実行コンテキストが必要です。

非同期に実行できる操作には、先読みのための読み取り、後書き、ディレクトリの先読み、およびクライアントがファイルの使用を停止したときに実行するクリーンアップ操作があります。

データ型

整数 (16 ビット)

デフォルト

8

範囲

0 から 215 - 1

単位

スレッド

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

なし

どのような場合に変更するか

ある時点で存在する同時入出力操作の数を増やしたり、減らしたりする場合。たとえば、帯域幅が非常に狭いネットワークでは、NFS クライアントによるネットワークの過負荷を防止するためにこの値を減らすことがあるかもしれません。また、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

nfs:nfs_nra

備考欄

ファイルへの順次アクセスが検出されたときに NFS バージョン 2 クライアントによってキューに入れられる先読み操作の数を制御します。これらの先読み操作では、並行性が高まり、読み取りのスループットが向上します。個々の先読み要求は、通常、ファイルデータの 1 論理ブロックに対するものです。

データ型

整数 (32 ビット)

デフォルト

4

範囲

0 から 231 - 1

単位

論理ブロック(nfs:nfs_bsizeを参照)

動的か

はい

検査

なし

どのような場合に変更するか

特定のファイルに対してある時点で存在する先読み要求の数を増やしたり、減らしたりする場合。たとえば、ネットワークの帯域幅が非常に狭い場合やクライアントのメモリーが少ない場合は、NFS クライアントによるネットワークの過負荷やシステムメモリーの使いすぎを防止するために、この値を減らすことができるかもしれません。また、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

nfs:nfs3_nra

備考欄

ファイルへの順次アクセスが検出されたときに NFS バージョン 3 クライアントによってキューに入れられる先読み操作の数を制御します。これらの先読み操作では、並行性が高まり、読み取りのスループットが向上します。個々の先読み要求は、通常、ファイルデータの 1 論理ブロックに対するものです。

データ型

整数 (32 ビット)

デフォルト

4

範囲

0 から 231 - 1

単位

論理ブロック(nfs:nfs3_bsizeを参照)

動的か

はい

検査

なし

どのような場合に変更するか

特定のファイルに対してある時点で存在する先読み要求の数を増やしたり、減らしたりする場合。たとえば、ネットワークの帯域幅が非常に狭い場合やクライアントのメモリーが少ない場合は、NFS クライアントによるネットワークの過負荷やシステムメモリーの使いすぎを防止するために、この値を減らすことができるかもしれません。または、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

変更履歴

詳細は、nfs:nfs3_nra (Solaris 10)」を参照してください。

nfs:nfs4_nra

備考欄

ファイルへの順次アクセスが検出されたときに NFS バージョン 4 クライアントによってキューに入れられる先読み操作の数を制御します。これらの先読み操作では、並行性が高まり、読み取りのスループットが向上します。個々の先読み要求は、通常、ファイルデータの 1 論理ブロックに対するものです。

データ型

整数 (32 ビット)

デフォルト

4

範囲

0 から 231 - 1

単位

論理ブロック(nfs:nfs4_bsizeを参照)

動的か

はい

検査

なし

どのような場合に変更するか

特定のファイルに対してある時点で存在する先読み要求の数を増やしたり、減らしたりする場合。たとえば、ネットワークの帯域幅が非常に狭い場合やクライアントのメモリーが少ない場合は、NFS クライアントによるネットワークの過負荷やシステムメモリーの使いすぎを防止するために、この値を減らすことができるかもしれません。また、広帯域幅のネットワークにおいて、クライアントとサーバーに十分なリソースがある場合は、この値を増やすことができるかもしれません。そうすることによって、使用可能なネットワーク帯域幅とクライアント / サーバーリソースをいっそう有効に活用できるようになります。

コミットレベル

変更の可能性あり

nfs:nrnode

備考欄

NFS クライアントの rnode キャッシュのサイズを制御します。

NFS バージョン 2、3、および 4 のクライアントのいずれでも使用される rnode は、NFS クライアント上のファイルを記述する中心的なデータ構造体です。rnode には、サーバー上のファイルを識別するファイルハンドルが含まれています。rnode にはさらに、ネットワークからサーバーへの呼び出しを回避するために NFS クライアントが使用する、各種キャッシュへのポインタも含まれています。個々の rnodevnode と 1 対 1 で対応しています。vnode には、ファイルデータがキャッシュされます。

NFS クライアントは、キャッシュされたデータやメタデータが破棄されないように、最小限の rnode を維持しようとします。rnode の再利用や解放が行われると、キャッシュされたデータやメタデータは破棄されなければなりません。

データ型

整数 (32 ビット)

デフォルト

このパラメータのデフォルト値は 0 です。これは nrnode の値が ncsize パラメータの値に設定されるべきであることを示しています。実際、nrnode の値が正でないと、nrnode には ncsize が設定されます。

範囲

1 から 231 - 1

単位

rnode

動的か

いいえ。この値は、/etc/system ファイルにパラメータを追加するか、パラメータを変更し、その後システムをリブートすることによってのみ変更できます。

検査

rnode キャッシュが使用可能なメモリーの 25% を超えないような最大値をシステムは強制します。

どのような場合に変更するか

rnode の作成や破棄は動的に行われるため、システムは、システムのメモリーの要求や同時にアクセスされるファイルの数が増えるに従って、キャッシュのサイズを自動的に調整して、nrnode サイズキャッシュを決定する傾向があります。しかし、アクセスするファイルの組み合わせが前もって予測できる場合など、状況によっては、nrnode の値を設定できることもあります。たとえば、NFS クライアントが少数の非常に大きいファイルにアクセスする場合、nrnode を小さい値に設定すると、システムメモリーでは rnode の代わりにファイルデータをキャッシュできます。または、クライアントが多数の小さいファイルにアクセスする場合は、nrnode の値を増やして、ファイルメタデータを格納できるように最適化すると、メタデータを要求するネットワーク呼び出しの数を減らすことができます。

推奨はできませんが、nrnode の値を 1 に設定すると、rnode キャッシュを事実上無効にできます。この値は 1 rnode だけのキャッシュをクライアントに指示するので、結果的に頻繁に再利用されることになります。

コミットレベル

変更の可能性あり

変更履歴

詳細は、nfs:nrnode (Solaris 9 8/03)」を参照してください。

nfs:nfs_shrinkreaddir

備考欄

以前の一部の NFS サーバーでは、NFS バージョン 2 の READDIR 要求で 1024 バイトより大きいディレクトリ情報を求めるものが正しく処理されないことがありました。これは、サーバーの実装にバグがあったためです。このパラメータは、NFS バージョン 2 クライアントでの対処方法を含んでいます。

このパラメータが有効化されると、クライアントは、1024 バイトよりも大きいディレクトリ情報を求める READDIR 要求を生成しなくなります。このパラメータを無効にすると、送信されるサイズは、getdents システム呼び出しを使用するか、またはNFS_MAXDATA (8192 バイト) を使用して渡されるサイズのどちらか小さい方に設定されます。詳細は、getdents(2) のマニュアルページを参照してください。

データ型

整数 (32 ビット)

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

NFS バージョン 2 専用のサーバーが使用され、ディレクトリの読み取りで相互運用性に問題がある場合は、このパラメータの値を調べてください。このパラメータを有効にすると、ディレクトリを読み取るアプリケーションのパフォーマンスが多少低下することがあります。

コミットレベル

変更の可能性あり

nfs:nfs3_shrinkreaddir

備考欄

以前の一部の NFS サーバーでは、NFS バージョン 3 の READDIR 要求で 1024 バイトより大きいディレクトリ情報を求めるものが正しく処理されないことがありました。これは、サーバーの実装にバグがあったためです。このパラメータは、NFS バージョン 3 クライアントでの対処方法を含んでいます。

このパラメータが有効化されると、クライアントは、1024 バイトよりも大きいディレクトリ情報を求める READDIR 要求を生成しなくなります。このパラメータを無効にすると、送信されるサイズは、getdents システム呼び出しを使用するか、またはMAXBSIZE (8192 バイト) を使用して渡されるサイズのどちらか小さい方に設定されます。詳細は、getdents(2) のマニュアルページを参照してください。

データ型

整数 (32 ビット)

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

NFS バージョン 3 専用のサーバーが使用され、ディレクトリの読み取りで相互運用性に問題がある場合は、このパラメータの値を調べてください。このパラメータを有効にすると、ディレクトリを読み取るアプリケーションのパフォーマンスが多少低下することがあります。

コミットレベル

変更の可能性あり

nfs:nfs_write_error_interval

備考欄

NFS クライアントが受け取った ENOSPC および EDQUOT 書き込みエラーのロギング間隔を制御します。このパラメータは、NFS バージョン2、3、および 4 のクライアントに影響を与えます。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

5 秒

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

動的か

はい

検査

なし

どのような場合に変更するか

クライアントによってロギングされるメッセージ量に応じてこのパラメータの値を増減します。たとえば、サーバーのファイルシステムが満杯で頻繁に使用されているときに出力される「out of space」メッセージを減らす場合は、このパラメータの値を増やせるかもしれません。

コミットレベル

変更の可能性あり

変更履歴

nfs:nfs_write_error_interval (Solaris 9 8/03)」を参照してください。

nfs:nfs_write_error_to_cons_only

備考欄

NFS 書き込みエラーをシステムコンソールと syslog に記録するか、それともシステムコンソールだけに記録するかを制御します。このパラメータは、NFS バージョン2、3、および 4 のクライアントのメッセージに影響を与えます。

データ型

整数 (32 ビット)

デフォルト

0 (システムコンソールと syslog)

範囲

0 (システムコンソールと syslog) または 1 (システムコンソール)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

syslogd デーモンによってロギングされるメッセージを含むファイルシステムがいっぱいになるのを防ぐには、このパラメータの値を調べます。このパラメータを有効にすると、メッセージはシステムコンソールに出力されるだけで、syslog メッセージファイルにはコピーされません。

コミットレベル

変更の可能性あり

変更履歴

nfs:nfs_write_error_to_cons_only (Solaris 9 8/03)」を参照してください。

nfs:nfs_disable_rddir_cache

備考欄

READDIR 要求と READDIRPLUS 要求に対する応答を格納するために、キャッシュを使用するかどうかを制御します。このキャッシュを使用すると、ディレクトリ情報を取得するためにサーバーを繰り返し呼び出すことがなくなります。

データ型

整数 (32 ビット)

デフォルト

0 (キャッシングを有効にする)

範囲

0 (キャッシングを有効にする) または 1 (キャッシングを無効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

ファイルやディレクトリがサーバーに作成されたりサーバーから削除されてもサーバーがディレクトリの変更時刻を更新しないために、相互運用性に問題がある場合は、このパラメータの値を調べます。ディレクトリにファイルを追加しても新しい名前が表示されなかったり、ディレクトリからファイルを削除しても古い名前が削除されない場合は、この問題があります。

このパラメータは、NFS バージョン 2、3、および 4 でマウントされたファイルシステムのキャッシングに適用されます。このパラメータは NFS でマウントされたすべてのファイルシステムに適用されるため、キャッシングをファイルシステムごとに有効にしたり、無効にしたりすることはできません。

このパラメータを無効にする場合は、DNLC ネガティブキャッシュに不良エントリが発生しないように、次のパラメータも無効にする必要があります。

コミットレベル

変更の可能性あり

変更履歴

nfs:nfs_disable_rddir_cache (Solaris 9 8/03)」を参照してください。

nfs:nfs_bsize

備考欄

NFS バージョン 2 のクライアントが使用する論理ブロックサイズを制御します。このブロックサイズは、クライアントが入出力を行うときにサーバーに対して読み取りや書き込みを行うデータ量を表します。

データ型

符号なし整数 (32 ビット)

デフォルト

8192 バイト

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、ファイルシステムのブロックサイズは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。このパラメータの設定が小さすぎたり、大きすぎたりすると、システムの動作が異常になることがあります。このパラメータには、そのプラットフォームの PAGESIZE より小さい値を設定しないでください。さらに、このパラメータの値が大きすぎると、メモリー割り当てが許可されるまで待つ間に、システムがハングすることがあります。

どのような場合に変更するか

このパラメータは変更しないでください。

コミットレベル

変更の可能性あり

nfs:nfs3_bsize

備考欄

NFS バージョン 3 のクライアントが使用する論理ブロックサイズを制御します。このブロックサイズは、クライアントが入出力を行うときにサーバーに対して読み取りや書き込みを行うデータ量を表します。

データ型

符号なし整数 (32 ビット)

デフォルト

32,768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、ファイルシステムのブロックサイズは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。このパラメータの設定が小さすぎたり、大きすぎたりすると、システムの動作が異常になることがあります。このパラメータには、そのプラットフォームの PAGESIZE より小さい値を設定しないでください。さらに、このパラメータの値が大きすぎると、メモリー割り当てが許可されるまで待つ間に、システムがハングすることがあります。

どのような場合に変更するか

データ転送サイズの最大値を変更したい場合は、このパラメータの値を調べてください。このパラメータは、nfs:nfs3_max_transfer_size パラメータと連携して変更してください。転送サイズを増やしたい場合は両方のパラメータを増やします。転送サイズを減らしたい場合は、通常、このパラメータを減らすだけで十分です。

コミットレベル

変更の可能性あり

nfs:nfs4_bsize

備考欄

NFS バージョン 4 のクライアントが使用する論理ブロックサイズを制御します。このブロックサイズは、クライアントが入出力を行うときにサーバーに対して読み取りや書き込みを行うデータ量を表します。

データ型

符号なし整数 (32 ビット)

デフォルト

32,768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、ファイルシステムのブロックサイズは、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。このパラメータの設定が小さすぎたり、大きすぎたりすると、システムの動作が異常になることがあります。このパラメータには、そのプラットフォームの PAGESIZE より小さい値を設定しないでください。さらに、このパラメータの値が大きすぎると、メモリー割り当てが許可されるまで待つ間に、システムがハングすることがあります。

どのような場合に変更するか

データ転送サイズの最大値を変更したい場合は、このパラメータの値を調べてください。このパラメータは、 nfs:nfs4_max_transfer_size パラメータとセットで変更してください。転送サイズを増やしたい場合は両方のパラメータを増やします。転送サイズを減らしたい場合は、通常、このパラメータを減らすだけで十分です。

コミットレベル

変更の可能性あり

nfs:nfs_async_clusters

備考欄

NFS バージョン 2 クライアントによって生成される非同期要求の組み合わせを制御します。非同期要求には、read-ahead、putpage、pageio、readdir-ahead という 4 つのタイプがあります。クライアントは、これらのタイプをラウンドロビンに処理し、特定の要求タイプだけを優遇することがないようにします。

しかし、書き込みの一括化 (書き込みをまとめる) などの NFS バージョン 2 サーバーの機能の中には、既存の NFS バージョン 2 クライアントの特定の動作に依存するものがあります。特に、この機能では、クライアントが複数の WRITE 要求をほぼ同時に送信することに依存します。キューから要求を 1 度に 1 つずつ取り出したのでは、クライアントのパフォーマンスを高めるために設けられたこのサーバー機能が生かされません。

そこで、このパラメータを使用して、タイプが変更されるまでに送信される、各要求タイプの要求数を制御します。

データ型

符号なし整数 (32 ビット)

デフォルト

1

範囲

0 から 231 - 1

単位

非同期要求

動的か

はい。ただし、ファイルシステムに対するクラスタ設定は、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、このパラメータに 0 を設定すると、キューに入れられている特定の要求タイプの要求がすべて処理されてから、次のタイプが処理されます。これによって、アルゴリズムの公平性の部分が実質的に無効にされます。

どのような場合に変更するか

あるタイプについて次のタイプへ移行する前に生成される非同期要求の数を増やす場合。これによって、クライアントからの要求のクラスタに依存するサーバーの機能が生かされる場合があります。

コミットレベル

変更の可能性あり

nfs:nfs3_async_clusters

備考欄

NFS バージョン 3 クライアントによって生成される非同期要求の組み合わせを制御します。非同期要求には、read-ahead、putpage、pageio、readdir-ahead、commit という 5 つのタイプがあります。クライアントは、これらのタイプをラウンドロビンに処理し、特定の要求タイプだけを優遇することがないようにします。

しかし、書き込みの一括化 (書き込みをまとめる) などの NFS バージョン 3 サーバーの機能の中には、既存の NFS バージョン 3 クライアントの一定の動作に依存するものがあります。特に、この機能では、クライアントが複数の WRITE 要求をほぼ同時に送信することに依存します。キューから要求を 1 度に 1 つずつ取り出したのでは、クライアントのパフォーマンスを高めるために設けられたこのサーバー機能が生かされません。

そこで、このパラメータを使用して、タイプが変更されるまでに送信される、各要求タイプの要求数を制御します。

データ型

符号なし整数 (32 ビット)

デフォルト

1

範囲

0 から 231 - 1

単位

非同期要求

動的か

はい。ただし、ファイルシステムに対するクラスタ設定は、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、このパラメータに 0 を設定すると、キューに入れられている特定の要求タイプの要求がすべて処理されてから、次のタイプが処理されます。この値によって、アルゴリズムの公平性の部分が実質的に無効にされます。

どのような場合に変更するか

あるタイプについて次のタイプへ移行する前に生成される非同期操作の数を増やす場合。これによって、クライアントからの操作のクラスタに依存するサーバーの機能が生かされる場合があります。

コミットレベル

変更の可能性あり

nfs:nfs4_async_clusters

備考欄

NFS バージョン 4 クライアントによって生成される非同期要求の組み合わせを制御します。非同期要求には、read-ahead、putpage、pageio、readdir-ahead、commit、および inactive という 6 つのタイプがあります。クライアントは、これらのタイプをラウンドロビンに処理し、特定の要求タイプだけを優遇することがないようにします。

しかし、書き込みの一括化 (書き込みをまとめる) などの NFS バージョン 4 サーバーの機能の中には、既存の NFS バージョン 4 クライアントの一定の動作に依存するものがあります。特に、この機能では、クライアントが複数の WRITE 要求をほぼ同時に送信することに依存します。キューから要求を 1 度に 1 つずつ取り出したのでは、クライアントのパフォーマンスを高めるために設けられたこのサーバー機能が生かされません。

そこで、このパラメータを使用して、タイプが変更されるまでに送信される、各要求タイプの要求数を制御します。

データ型

符号なし整数 (32 ビット)

デフォルト

1

範囲

0 から 231 - 1

単位

非同期要求

動的か

はい。ただし、ファイルシステムに対するクラスタ設定は、ファイルシステムのマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、このパラメータに 0 を設定すると、キューに入れられている特定の要求タイプの要求がすべて処理されてから、次のタイプが処理されます。これによって、アルゴリズムの公平性の部分が実質的に無効にされます。

どのような場合に変更するか

あるタイプについて次のタイプへ移行する前に生成される非同期要求の数を増やす場合。これによって、クライアントからの要求のクラスタに依存するサーバーの機能が生かされる場合があります。

コミットレベル

変更の可能性あり

nfs:nfs_async_timeout

備考欄

非同期入出力要求を実行するスレッドが終了するまで、なにもしない休眠状態を続けることのできる時間の長さを制御します。実行する要求がないと各スレッドは休眠状態に入ります。このタイマーが切れる前に新しい要求が到着しないと、スレッドは休眠から起きて終了します。要求が届くと、スレッドは起き上がって再び要求がなくなるまで要求を実行します。その後、スレッドは休眠状態に戻り、次の要求が届くか、またはタイマーが満了するまで待ちます。

データ型

整数 (32 ビット)

デフォルト

6000 (1 分を 60 秒 * 100Hz として表す)

範囲

0 から 231 - 1

単位

Hz(一般にクロックは 100Hz で動作する)

動的か

はい

検査

ありません。しかし、このパラメータに正以外の値を設定すると、スレッドが、自身が処理する要求がキューになくなるとすぐに終了します。

どのような場合に変更するか

システムでのアプリケーションの動作を正確に把握し、非同期入出力要求の割合を予測できる場合は、次のどちらかの方法によってこのパラメータをチューニングすることで、パフォーマンスをある程度最適化することができます。

  • スレッドの終了までの時間を短くして、カーネルリソースの解放を早くする。

  • スレッドの終了までの時間を長くして、スレッドの作成や破棄にかかるオーバーヘッドを減らす。

コミットレベル

変更の可能性あり

nfs:nacache

備考欄

NFS クライアント上のファイルアクセスキャッシュにアクセスするハッシュキューの数を調整します。ファイルアクセスキャッシュは、ユーザーがアクセスしようとするファイルに関する、ユーザーの持つファイルアクセス権を格納します。キャッシュそのものは動的に割り当てられます。しかし、キャッシュに対するインデックスを作成するためのハッシュキューは、静的に割り当てられます。このアルゴリズムでは、アクティブファイルごとに 1 つのアクセスキャッシュエントリが、ハッシュバケットごとにこれらの 4 つのアクセスキャッシュエントリがあるものとみなします。したがって、このパラメータの値には、デフォルトで nrnode パラメータの値が設定されます。

データ型

整数 (32 ビット)

デフォルト

このパラメータのデフォルト値は 0 です。この値は nacache の値に nrnode パラメータの値が設定されるべきであることを示しています。

範囲

1 から 231 - 1

単位

アクセスキャッシュエントリ

動的か

いいえ。この値は、/etc/system ファイルにパラメータを追加するか、パラメータを変更し、その後システムをリブートすることによってのみ変更できます。

検査

ありません。しかし、このパラメータに負の値を設定すると、システムは、おそらく、非常に多くのハッシュキューをシステムに割り当てようとし、その間におそらくハングします。

どのような場合に変更するか

1 つのファイルごとに 1 つのアクセスキャッシュエントリがあるという基本的な前提が損われるおそれがある場合は、このパラメータの値を検討します。複数のユーザーが同じファイルにほぼ同時にアクセスするタイムシェアリングモードのシステムでは、この前提が損なわれる可能性があります。このような場合には、予想されるアクセスキャッシュのサイズを増やすことが、キャッシュへのハッシュアクセスの効率性を保つ上で役立つことがあります。

コミットレベル

変更の可能性あり

nfs:nfs3_jukebox_delay

備考欄

NFS バージョン 3 クライアントが前回の要求で NFS3ERR_JUKEBOX エラーを受け取ってから、新しい要求を送信するまでに待機する時間の長さを制御します。NFS3ERR_JUKEBOX エラーは、通常、何らかの理由でファイルが一時的に使用できないときにサーバーから返されます。このエラーは、通常、階層型記憶装置、CD やテープといったジュークボックスに関連しています。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

1000 (10 秒を 10 秒 * 100Hz で表す)

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

Hz(一般にクロックは 100Hz で動作する)

動的か

はい

検査

なし

どのような場合に変更するか

このパラメータの値を調べ、必要ならサーバーが示す動作に合わせて値を調整します。再送信を繰り返すことによるネットワークオーバーヘッドを減らすためにファイルを使用できる遅延を長くする場合は、この値を増やします。ファイルが使用可能になったことを検出する場合の遅延を短くするには、この値を減らします。

コミットレベル

変更の可能性あり

nfs:nfs3_max_transfer_size

備考欄

NFS バージョン 3 の READWRITEREADDIR、または READDIRPLUS 要求のデータ部分の最大サイズを制御します。このパラメータは、サーバーが返す要求の最大サイズとクライアントが生成する要求の最大サイズの両方を制御します。

データ型

整数 (32 ビット)

デフォルト

1,048,576 (1M バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、サーバー側の最大転送サイズに 0 を設定すると、クライアントはおそらく、誤作動するか、単にサーバーに要求を送信しないかのどちらかになる可能性があります。

また、UDP トランスポート経由の NFS を使用する場合にも、転送サイズの最大値に制限があります。UDP は、データグラム当たり 64K バイトの「強い」制限があります。この 64K バイトには、要求のデータ部分の他に RPC ヘッダーやその他の NFS 情報を含まなければなりません。この制限値が大きすぎると、UDP エラーのためにクライアントとサーバーの通信に問題が発生することがあります。

どのような場合に変更するか

ネットワークを介して送信するデータのサイズをチューニングする場合。通常、nfs:nfs3_bsize パラメータもこのパラメータの変更が反映されるように更新すべきです。

たとえば、転送サイズを 32K バイトより大きい値に増やす場合は、その値を反映させて nfs:nfs3_bsize を更新します。そうしないと、ネットワーク上で送信される要求のサイズは変わりません。詳細は、nfs:nfs3_bsizeを参照してください。

転送サイズをデフォルト値より小さくする場合は、mount コマンドの -wsize または -rsize オプションをファイルシステム単位で使用します。

コミットレベル

変更の可能性あり

変更履歴

nfs:nfs3_max_transfer_size (Solaris 9 8/03)」を参照してください。

nfs:nfs4_max_transfer_size

備考欄

NFS バージョン 4 の READWRITEREADDIR、または READDIRPLUS 要求のデータ部分の最大サイズを制御します。このパラメータは、サーバーが返す要求の最大サイズとクライアントが生成する要求の最大サイズの両方を制御します。

データ型

整数 (32 ビット)

デフォルト

32, 768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、サーバー側の最大転送サイズに 0 を設定すると、クライアントはおそらく、誤作動するか、単にサーバーに要求を送信しないかのどちらかになる可能性があります。

また、UDP トランスポート経由の NFS を使用する場合にも、転送サイズの最大値に制限があります。UDPの最大値については、nfs:nfs3_max_transfer_sizeを参照してください。

どのような場合に変更するか

ネットワークを介して送信するデータのサイズをチューニングする場合。通常、nfs:nfs4_bsize パラメータもこのパラメータの変更が反映されるように更新すべきです。

たとえば、転送サイズを 32K バイトより大きい値に増やす場合は、その値を反映させて nfs:nfs4_bsize を更新します。そうしないと、ネットワーク上で送信される要求のサイズは変わりません。詳細は、nfs:nfs4_bsizeを参照してください。

転送サイズをデフォルト値より小さくする場合は、mount コマンドの -wsize または -rsize オプションをファイルシステム単位で使用します。

コミットレベル

変更の可能性あり

nfs:nfs3_max_transfer_size_clts

備考欄

NFS バージョン 3 の UDP を介した READWRITEREADDIR、または READDIRPLUS 要求のデータ部分の最大サイズを制御します。このパラメータは、サーバーが返す要求の最大サイズとクライアントが生成する要求の最大サイズの両方を制御します。

データ型

整数 (32 ビット)

デフォルト

32, 768 (32K バイト)

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、サーバー側の最大転送サイズに 0 を設定すると、クライアントはおそらく、誤作動するか、単にサーバーに要求を送信しないかのどちらかになる可能性があります。

どのような場合に変更するか

このパラメータは変更しないでください。

コミットレベル

変更の可能性あり

nfs:nfs3_max_transfer_size_cots

備考欄

NFS バージョン 3 の TCP を介した READWRITEREADDIR、または READDIRPLUS 要求のデータ部分の最大サイズを制御します。このパラメータは、サーバーが返す要求の最大サイズとクライアントが生成する要求の最大サイズの両方を制御します。

データ型

整数 (32 ビット)

デフォルト

1048576 バイト

範囲

0 から 231 - 1

単位

バイト

動的か

はい。ただし、このパラメータは、ファイルシステムごとにマウント時に設定されます。特定のファイルシステムに影響を与えるには、このパラメータを変更してからそのファイルシステムをアンマウントし、再びマウントします。

検査

ありません。しかし、サーバー側の最大転送サイズに 0 を設定すると、クライアントはおそらく、誤作動するか、単にサーバーに要求を送信しないかのどちらかになる可能性があります。

どのような場合に変更するか

1M バイトを超える転送サイズが必要な場合以外、このパラメータを変更しないでください。

コミットレベル

変更の可能性あり

nfssrv モジュールのパラメータ

この節では、nfssrv モジュールの NFS パラメータについて説明します。

nfssrv:nfs_portmon

備考欄

NFS サーバーがクライアント側の整合性を確保するために行おうとする一部のセキュリティーチェックを制御します。NFS では、要求を送信したソースポートが「予約ポート」だったかどうかをチェックできます。予約ポートには 1024 未満の番号が与えられます。BSD ベースのシステムでは、これらのポートは root が実行するプロセス用に予約されています。このセキュリティーチェックでは、ユーザーが独自の RPC ベースのアプリケーションを作成して、NFS クライアントが使用するアクセスチェックを破ることを防止できます。

データ型

整数 (32 ビット)

デフォルト

0 (セキュリティーチェックを無効にする)

範囲

0 (セキュリティーチェックを無効にする) または 1 (セキュリティーチェックを有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

悪意のあるユーザーが、普通ならアクセス権のない NFS サーバーを使用してファイルにアクセスするのを防ごうとする場合、このパラメータを使用します。しかし、「予約ポート」は広範にサポートされている概念ではありません。したがって、このチェックにおけるセキュリティーの側面は非常に弱いものです。また、すべての NFS クライアントが予約の範囲内のポート番号にトランスポート終端を結びつけるわけでもありません。したがって、セキュリティーチェックを有効にすると、相互運用性に関する問題が起きることがあります。

コミットレベル

変更の可能性あり

nfssrv:rfs_write_async

備考欄

NFS バージョン 2 サーバーが WRITE 要求をどのように処理するかを制御します。NFS バージョン 2 プロトコルでは、WRITE 要求に関連するすべての変更済みデータとメタデータが安定したストレージに格納されていないと、サーバーはクライアントに応答できません。NFS バージョン 2 の WRITE 要求は、データは 8192 バイトに制限されます。したがって、各 WRITE 要求によって、複数の小さい書き込みがストレージサブシステムに対して行われることがあります。これは、パフォーマンス低下の原因になります。

NFS バージョン 2 の WRITE 要求を高速化する方法の 1 つは、クライアントの動作を活用することです。クライアントは、複数の WRITE 要求をバッチで (一括して) 送信する傾向があります。サーバーでは、この動作を利用して複数の WRITE 要求を 1 つの要求にクラスタ化し、ファイルシステムに出すことができます。こうして、要求の数を少なくし、要求のサイズを大きくして、データをストレージサブシステムに書き込むことができます。この方式によって、WRITE 要求のスループットが大幅に向上します。

データ型

整数 (32 ビット)

デフォルト

1 (クラスタ化を有効にする)

範囲

0 (クラスタ化を無効にする) または 1 (クラスタ化を有効にする)

単位

ブール値

動的か

はい

検査

なし

どのような場合に変更するか

特に PC クライアントなど、非常に小さい NFS クライアントのなかには、複数の WRITE 要求をバッチ化しないものがあります。したがって、クライアントが要求した動作が存在しないということもあります。また、NFS バージョン 2 サーバーにおいて、クラスタ化はオーバーヘッドの増加をもたらすだけで、パフォーマンスがむしろ下がるという場合もあります。

コミットレベル

変更の可能性あり

nfssrv:nfsauth_ch_cache_max

備考欄

NFS 認証サーバーに接続するクライアントハンドルのキャッシュサイズを制御します。サーバーは、NFS クライアントを認証して、クライアントが使用しようとしているファイルハンドルへのアクセスが許可できるかどうかを判定します。

データ型

整数 (32 ビット)

デフォルト

16

範囲

0 から 231 - 1

単位

クライアントハンドル

動的か

はい

検査

なし

どのような場合に変更するか

このキャッシュは動的でないため、すべてのクライアントハンドルが使用されていると、クライアントハンドルの割り当て要求は失敗します。その結果、NFS サーバーは、この要求を認証できなかったという理由で要求を廃棄します。しかし、ほとんどの場合、NFS クライアントはタイムアウトになり、要求を再転送するため、これは問題になりません。しかし、クライアントにソフトマウントされたファイルシステムの場合、クライアントは、タイムアウトになっても要求を再試行せず、アプリケーションにエラーを返すことがあります。サーバーのキャッシュを負荷に対応できるだけの大きさにしておけば、このような状況を防止できることがあります。

コミットレベル

変更の可能性あり

nfssrv:exi_cache_time

備考欄

システムのメモリー要求によりエントリが破棄されるまでに、NFS 認証キャッシュに保持される時間の長さを制御します。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

3600 秒 (1 時間)

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

動的か

はい

検査

なし

どのような場合に変更するか

NFS 認証キャッシュのサイズは、エントリがキャッシュから消去されるまでの最小限の時間を変更することによって調整することができます。キャッシュのサイズは、大きくなりすぎないように制御すべきです。そうすれば、この時間のプロセスによって開放されなかったシステムリソースを使用できます。

コミットレベル

変更の可能性あり

rpcmod モジュールのパラメータ

この節では、rpcmod モジュールの NFS パラメータについて説明します。

rpcmod:clnt_max_conns

備考欄

個々のN FS サーバーと通信するときに、NFS クライアントが使用する TCP 接続の数を制御します。1 つの接続で RPC を多重化できるように、カーネル RPC が構築されます。しかし、必要な場合には複数の接続を使用できます。

データ型

整数 (32 ビット)

デフォルト

1

範囲

1 から 231 - 1

単位

接続

動的か

はい

検査

なし

どのような場合に変更するか

一般には、1 つの接続だけでネットワーク帯域幅全体を使いきることができます。しかし、ネットワークが提供する帯域幅を TCP が 1 つのストリームだけで利用できない場合は、複数の接続を使えば、クライアントとサーバー間のスループットが向上することがあります。

接続数の増加にはそれなりの影響があります。接続数が増えると、各接続を維持するために必要なカーネルリソースの使用量も増えます。

コミットレベル

変更の可能性あり

rpcmod:clnt_idle_timeout

備考欄

クライアントとサーバー間の接続が終了するまでにアイドル状態を維持できる、クライアント側の時間の長さを制御します。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

300,000 ミリ秒 (5 分)

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

ミリ秒

動的か

はい

検査

なし

どのような場合に変更するか

クライアント側でどのくらいの間アイドル状態であれば接続を閉じるかを変更する場合は、このパラメータを使用します。システムリソースが浪費されるのを防ぐために、接続を閉じるまでの時間を短縮する場合などです。

コミットレベル

変更の可能性あり

rpcmod:svc_idle_timeout

備考欄

クライアントとサーバー間の接続が終了するまでにアイドル状態を維持できる、サーバー側の時間の長さを制御します。

データ型

long 整数 (32 ビットプラットフォームでは 32 ビット、64 ビットプラットフォームでは 64 ビット)

デフォルト

360,000 ミリ秒 (6 分)

範囲

32 ビットプラットフォームでは 0 から 231 - 1

64 ビットプラットフォームでは 0 から 263 - 1

単位

ミリ秒

動的か

はい

検査

なし

どのような場合に変更するか

サーバー側でどのくらいの間アイドル状態であれば接続を閉じるかを変更する場合は、このパラメータを使用します。システムリソースが浪費されるのを防ぐために、接続を閉じるまでの時間を短縮する場合などです。

コミットレベル

変更の可能性あり

rpcmod:svc_default_stksize

備考欄

カーネル RPC サービス スレッドに対するカーネルスタックのサイズを設定します。

データ型

整数 (32 ビット)

デフォルト

デフォルト値は 0 です。この場合、スタックサイズはシステムデフォルトに設定されます。

範囲

0 から 231 - 1

単位

バイト

動的か

はい。新しく割り当てられるすべてのスレッドに適用されます。スタックサイズはスレッドの作成時に設定されます。したがって、このパラメータの変更は、既存のスレッドには適用されず、新しく割り当てられるすべてのスレッドに適用されます。

検査

なし

どのような場合に変更するか

呼び出し深度が非常に深いために、スタックがオーバーフローし、レッドゾーンの障害が発生するおそれがある場合。トランスポートに対する呼び出し深度が比較的深く、ローカルファイルシステムに対する呼び出しの深さが深いという組合わせは、NFS サービススレッドのスタックがオーバーフローを起こすことがあります。

このパラメータには、プラットフォームのハードウェア pagesize の倍数を設定する必要があります。

コミットレベル

変更の可能性あり

rpcmod:svc_default_max_same_xprt

備考欄

各トランスポート終端の要求を最大でいくつ処理したら、次のトランスポート終端に進むかを制御します。カーネル RPC では、サービススレッドのプールとトランスポート終端のプールが使用されます。個々のサービススレッドは、どのトランスポート終端からの要求でも処理できます。ただし、パフォーマンス上の理由により、次のトランスポート終端に進む前に各トランスポート終端の複数の要求が処理されます。このアプローチにより、不足を避け、パフォーマンス上の利点を得ることができます。

データ型

整数 (32 ビット)

デフォルト

8

範囲

0 から 231 - 1

単位

要求

動的か

はい。ただし、トランスポート終端を切り替える前に要求を最大でいくつ処理するかは、トランスポート終端がカーネル RPC サブシステムに構成されるときに設定されます。このパラメータへの変更は、新しいトランスポート終端だけに適用されます。つまり、既存のトランスポート終端には無効です。

検査

なし

どのような場合に変更するか

サービスが、NFS バージョン 2 の WRITE 要求を高速化するクラスタ化などのクライアントの動作を利用できるようにこのパラメータをチューニングすることができます。このパラメータの値を増やすことにより、サーバー側でクライアントの動作の利点をいっそう活用できる可能性があります。

コミットレベル

変更の可能性あり

rpcmod:maxdupreqs

備考欄

コネクションレストランスポートにおける RPC レベルの再転送を検出する、重複要求キャッシュのサイズを制御します。このキャッシュは、クライアントネットワークアドレス、RPC の手順番号、プログラム番号、バージョン番号、および、トランザクション ID でインデックス化されています。このキャッシュにより、非べき等であるかもしれない再転送要求の処理が防止されます。

データ型

整数 (32 ビット)

デフォルト

1024

範囲

1 から 231 - 1

単位

要求

動的か

キャッシュのサイズは動的に決められますが、キャッシュへの高速アクセスを可能にするハッシュキューのサイズは静的に決められます。キャッシュのサイズを著しく大きくすると、キャッシュ内のエントリの検索に長い時間がかかることがあります。

このパラメータの値を 0 に設定しないでください。0 に設定すると、NFS サーバーが非べき等の要求を処理できなくなります。

検査

なし

どのような場合に変更するか

NFS クライアントで不正な障害エラーが検出された場合は、このパラメータの値を調べます。たとえば、ディレクトリの作成が失敗したのに、実際にはディレクトリが作成されている場合は、再転送された MKDIR 要求をサーバーが検出しなかった可能性があります。

キャッシュのサイズは、サーバーの負荷に見合ったものでなければなりません。キャッシュには非べき等の要求が格納されるため、キャッシュでは、要求全体の一部だけしか管理する必要がありません。キャッシュは、クライアントによる再転送を検出できるだけの間、情報を保持していなければなりません。一般に、コネクションレストランスポートのクライアントのタイムアウトは比較的短く、1 秒から 20 秒くらいです。

コミットレベル

変更の可能性あり

rpcmod:cotsmaxdupreqs

備考欄

接続型トランスポートにおける RPC レベルの再転送を検出する、重複要求キャッシュのサイズを制御します。このキャッシュは、クライアントネットワークアドレス、RPC の手順番号、プログラム番号、バージョン番号、および、トランザクション ID でインデックス化されています。このキャッシュにより、非べき等であるかもしれない再転送要求の処理が防止されます。

データ型

整数 (32 ビット)

デフォルト

1024

範囲

1 から 231 - 1

単位

要求

動的か

はい

検査

キャッシュのサイズは動的に決められますが、キャッシュへの高速アクセスを可能にするハッシュキューのサイズは静的に決められます。キャッシュのサイズを著しく大きくすると、キャッシュ内のエントリの検索に長い時間がかかることがあります。

このパラメータの値を 0 に設定しないでください。0 に設定すると、NFS サーバーが非べき等の要求を処理できなくなります。

どのような場合に変更するか

NFS クライアントで不正な障害エラーが検出された場合は、このパラメータの値を調べます。たとえば、ディレクトリの作成が失敗したのに、実際にはディレクトリが作成されている場合は、再転送された MKDIR 要求をサーバーが検出しなかった可能性があります。

キャッシュのサイズは、サーバーの負荷に見合ったものでなければなりません。キャッシュには非べき等の要求が格納されるため、キャッシュでは、要求全体の一部だけしか管理する必要がありません。キャッシュは、クライアント側の再転送を検出できるだけの間、情報を保持していなければなりません。一般に、コネクション型のトランスポートのクライアントのタイムアウトは非常に長く、1 分くらいです。したがって、エントリは、キャッシュに比較的長く留まる必要があります。

コミットレベル

変更の可能性あり