次の方法で共有


NFS ファイル サーバーのパフォーマンス チューニング

NFS モデルのサービス

次のセクションでは、クライアントとサーバー間の通信用のネットワーク ファイル システム (NFS) モデルの Microsoft Services に関する情報を提供します。 NFS v2 と NFS v3 は引き続き最も広くデプロイされているバージョンのプロトコルであるため、MaxConcurrentConnectionsPerIp を除くすべてのレジストリ キーは NFS v2 と NFS v3 にのみ適用されます。

NFS v4.1 プロトコルでは、レジストリチューニングは必要ありません。

NFS モデルのサービスの概要

Microsoft Services for NFS は、Windows 環境と UNIX 環境が混在する企業のためのファイル共有ソリューションです。 この通信モデルは、クライアント コンピューターとサーバーで構成されます。 クライアント上のアプリケーションがサーバーにあるファイルを、リダイレクター (Rdbss.sys) および NFS ミニリダイレクター (Nfsrdr.sys) を介して要求します。 ミニリダイレクターは、NFS プロトコルを使用して、TCP/IP 経由で要求を送信します。 サーバーはクライアントからの複数の要求を TCP/IP を介して受信して、その要求をローカル ファイル システム (Ntfs.sys) にルーティングすると、そこからストレージ スタックにアクセスします。

次の図は、NFS の通信モデルを示しています。

nfs 通信モデル

NFS ファイル サーバーのチューニング パラメーター

次のREG_DWORDレジストリ設定は、NFS ファイル サーバーのパフォーマンスに影響する可能性があります。

  • オプティマルリード

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\OptimalReads
    

    既定値は 0 です。 このパラメーターは、ワークロード I/O 特性に応じて、ファイルをFILE_RANDOM_ACCESSまたはFILE_SEQUENTIAL_ONLY用に開くかどうかを決定します。 FILE_RANDOM_ACCESSのファイルを強制的に開くには、この値を 1 に設定します。 FILE_RANDOM_ACCESSはファイルシステムとキャッシュマネージャーがプリフェッチを行わないようにします。

    この設定は、システム ファイル キャッシュの拡大に影響する可能性があるため、慎重に評価する必要があります。

  • RdWrHandleLifeTime(RdWrハンドルライフタイム)

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\RdWrHandleLifeTime
    

    既定値は 5 です。 このパラメーターは、ファイル ハンドル キャッシュ内の NFS キャッシュ エントリの有効期間を制御します。 このパラメーターは、開いている NTFS ファイル ハンドルが関連付けられているキャッシュ エントリを参照します。 実際の有効期間は、RdWrHandleLifeTime に RdWrThreadSleepTime を乗算した値とほぼ同じです。 最小値は 1、最大値は 60 です。

  • RdWrNfsHandleLifeTime(RdWrNfsハンドルライフタイム)

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\RdWrNfsHandleLifeTime
    

    既定値は 5 です。 このパラメーターは、ファイル ハンドル キャッシュ内の NFS キャッシュ エントリの有効期間を制御します。 このパラメーターは、開いている NTFS ファイル ハンドルが関連付けられていないキャッシュ エントリを参照します。 NFS サービスでは、これらのキャッシュ エントリを使用して、ファイル システムで開いているハンドルを保持せずに、ファイルのファイル属性を格納します。 実際の有効期間は、RdWrNfsHandleLifeTime に RdWrThreadSleepTime を乗算した値とほぼ同じです。 最小値は 1、最大値は 60 です。

  • RdWrNfsReadHandlesライフタイム

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\RdWrNfsReadHandlesLifeTime
    

    既定値は 5 です。 このパラメーターは、ファイル ハンドル キャッシュ内の NFS 読み取りキャッシュ エントリの有効期間を制御します。 実際の有効期間は、RdWrNfsReadHandlesLifeTime に RdWrThreadSleepTime を乗算した値とほぼ同じです。 最小値は 1、最大値は 60 です。

  • RdWrThreadスリープタイム

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\RdWrThreadSleepTime
    

    既定値は 5 です。 このパラメーターは、ファイル ハンドル キャッシュでクリーンアップ スレッドを実行する前の待機間隔を制御します。 値はティック単位で、非決定論的です。 1 ティックは約 100 ナノ秒に相当します。 最小値は 1、最大値は 60 です。

  • File Handle Cache Size in MB

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\FileHandleCacheSizeinMB
    

    既定値は 4 です。 このパラメーターは、ファイル ハンドル キャッシュ エントリによって消費される最大メモリを指定します。 最小値は 1、最大値は 1*1024*1024*1024 (1073741824) です。

  • LockFileHandleCacheInMemory

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\LockFileHandleCacheInMemory
    

    既定値は 0 です。 このパラメーターは、FileHandleCacheSizeInMB で指定されたキャッシュ サイズに割り当てられている物理ページがメモリ内でロックされているかどうかを指定します。 この値を 1 に設定すると、このアクティビティが有効になります。 ページはメモリ内でロックされます (ディスクにページングされません)。これにより、ファイル ハンドルを解決するパフォーマンスが向上しますが、アプリケーションで使用できるメモリが削減されます。

  • MaxIcbNfsReadHandlesCacheSize

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\MaxIcbNfsReadHandlesCacheSize
    

    既定値は 64 です。 このパラメーターは、読み取りデータ キャッシュのボリュームあたりのハンドルの最大数を指定します。 読み取りキャッシュ エントリは、メモリが 1 GB を超えるシステムでのみ作成されます。 最小値は 0 で、最大値は0xFFFFFFFF。

  • ハンドル署名が有効

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\HandleSigningEnabled
    

    既定値は 1 です。 このパラメーターは、NFS ファイル サーバーによって提供されるハンドルが暗号化によって署名されるかどうかを制御します。 0 に設定すると、ハンドル署名が無効になります。

  • RdWrNfsDeferredWritesFlushDelay

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\RdWrNfsDeferredWritesFlushDelay
    

    既定値は 60 です。 このパラメーターは、NFS V3 の UNSTABLE Write データ キャッシュの期間を制御するソフト タイムアウトです。 最小値は 1、最大値は 600 です。 実際の有効期間は、RdWrNfsDeferredWritesFlushDelay に RdWrThreadSleepTime を乗算した値とほぼ同じです。

  • CacheAddFromCreateAndMkDir (英語)

    HKLM\System\CurrentControlSet\Services\NfsServer\Parameters\CacheAddFromCreateAndMkDir
    

    既定値は 1 (有効) です。 このパラメーターは、NFS V2 および V3 CREATE および MKDIR RPC プロシージャ ハンドラーの間に開かれたハンドルをファイル ハンドル キャッシュに保持するかどうかを制御します。 CREATE および MKDIR コード パスのキャッシュへのエントリの追加を無効にするには、この値を 0 に設定します。

  • AdditionalDelayedWorkerThreads

    HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\Executive\AdditionalDelayedWorkerThreads
    

    指定した作業キューに対して作成される遅延ワーカー スレッドの数を増やします。 遅延ワーカー スレッドは、タイム クリティカルと見なされず、作業項目の待機中にメモリ スタックがページアウトされる可能性がある作業項目を処理します。 スレッドの数が不足すると、作業項目が処理される速度が低下します。値が大きすぎると、システム リソースが不必要に消費されます。

  • NtfsDisable8dot3NameCreation (英語)

    HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation
    

    Windows Server 2012、Windows Server 2012 R2、およびそれ以降のバージョンの Windows Server の既定値は 2 です。 Windows Server 2012 より前のリリースでは、既定値は 0 です。 このパラメーターは、NTFS が長いファイル名と拡張文字セットの文字を含むファイル名の 8dot3 (MSDOS) 名前付け規則で短い名前を生成するかどうかを決定します。 このエントリの値が 0 の場合、ファイルには、ユーザーが指定する名前と NTFS で生成される短い名前の 2 つの名前を指定できます。 ユーザー指定の名前が 8dot3 名前付け規則に従っている場合、NTFS は短い名前を生成しません。 値 2 は、このパラメーターをボリュームごとに構成できることを意味します。

    システム ボリュームでは、既定で 8dot3 が有効になっています。 Windows Server 2012 および Windows Server 2012 R2 の他のすべてのボリュームでは、既定で 8dot3 が無効になっています。 この値を変更してもファイルの内容は変更されませんが、ファイルの短い名前の属性の作成が回避され、NTFS によるファイルの表示と管理も変更されます。 ほとんどのファイル サーバーでは、推奨設定は 1 (無効) です。

  • NtfsDisableLastAccessUpdateの

    HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate
    

    既定値は 1 です。 このシステム グローバル スイッチは、最後のファイルまたはディレクトリ アクセスの日付と時刻スタンプの更新を無効にすることで、ディスク I/O の負荷と待機時間を削減します。

  • MaxConcurrentConnectionsPerIp

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rpcxdr\Parameters\MaxConcurrentConnectionsPerIp
    

    MaxConcurrentConnectionsPerIp パラメーターの既定値は 16 です。 この値を最大 8192 まで増やして、IP アドレスあたりの接続数を増やすことができます。