Share via


NFS 檔案伺服器效能微調

Services for NFS 模型

下列各節提供用於用戶端/伺服器通訊之 Microsoft Services for Network File System (NFS) 模型的相關資訊。 由於 NFS v2 和 NFS v3 仍然是最廣泛部署的通訊協定版本,因此 MaxConcurrentConnectionsPerIp 以外的所有登錄機碼僅適用於 NFS v2 和 NFS v3。

NFS v4.1 通訊協定不需要進行登錄微調。

Services for NFS 模型概觀

Microsoft Services for NFS 可以為擁有 Windows 與 UNIX 混合環境的企業,提供檔案共用解決方案。 此通訊模型由用戶端電腦和伺服器組成。 用戶端上的應用程式透過重新導向器 (Rdbss.sys) 和 NFS 迷你重新導向器 (Nfsrdr.sys) 要求位於伺服器上的檔案。 迷你重新導向器會使用 NFS 通訊協定透過 TCP/IP 傳送其要求。 伺服器則透過 TCP/IP 從用戶端接收多個要求,並將要求路由傳送至本機檔案系統 (Ntfs.sys),以存取儲存體堆疊。

下圖顯示 NFS 的通訊模型。

nfs communication model

NFS 檔案伺服器的微調參數

下列 REG_DWORD 登錄設定可能會影響 NFS 檔案伺服器的效能:

  • OptimalReads

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

    預設值是 0。 此參數可根據工作負載 I/O 特性,判斷是要針對 FILE_RANDOM_ACCESS 開啟檔案,還是針對 FILE_SEQUENTIAL_ONLY 開啟檔案。 將此值設定為 1,以強制針對 FILE_RANDOM_ACCESS 開啟檔案。 FILE_RANDOM_ACCESS 可防止檔案系統和快取管理員預先擷取。

    注意

    此設定必須經過仔細評估,因為其可能會影響系統檔案快取增長。

  • RdWrHandleLifeTime

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

    預設值為 5。 此參數可控制檔案控制代碼快取中 NFS 快取項目的存留期。 該參數參考具有相關聯之開啟 NTFS 檔案控制代碼的快取項目。 實際存留期大約等於 RdWrHandleLifeTime 乘以 RdWrThreadSleepTime。 其最小值為 1,最大值為 60。

  • RdWrNfsHandleLifeTime

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

    預設值為 5。 此參數可控制檔案控制代碼快取中 NFS 快取項目的存留期。 該參數參考沒有相關聯之開啟 NTFS 檔案控制代碼的快取項目。 Services for NFS 會使用這些快取項目來儲存檔案的檔案屬性,而不會保留檔案系統的開啟控制代碼。 實際存留期大約等於 RdWrNfsHandleLifeTime 乘以 RdWrThreadSleepTime。 其最小值為 1,最大值為 60。

  • RdWrNfsReadHandlesLifeTime

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

    預設值為 5。 此參數可控制檔案控制代碼快取中 NFS 讀取快取項目的存留期。 實際存留期大約等於 RdWrNfsReadHandlesLifeTime 乘以 RdWrThreadSleepTime。 其最小值為 1,最大值為 60。

  • RdWrThreadSleepTime

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

    預設值為 5。 此參數可控制在檔案控制代碼快取上執行清除執行緒之前的等候間隔。 此值以刻度為單位,且不具決定性。 一個刻度大約相當於 100 奈秒。 其最小值為 1,最大值為 60。

  • FileHandleCacheSizeinMB

    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。

  • HandleSigningEnabled

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

    預設值是 1。 此參數可控制是否以密碼編譯方式簽署 NFS 檔案伺服器所指定的控制代碼。 將其設定為 0 會停用控制代碼簽署。

  • RdWrNfsDeferredWritesFlushDelay

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

    預設值是 60。 此參數是一種軟性逾時,可控制 NFS V3 不穩定寫入資料快取的持續時間。 其最小值為 1,最大值為 600。 實際存留期大約等於 RdWrNfsDeferredWritesFlushDelay 乘以 RdWrThreadSleepTime。

  • CacheAddFromCreateAndMkDir

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

    預設值為 1 (已啟用)。 此參數可控制是否要在檔案控制代碼快取中保留 NFS V2 與 V3 CREATE 和 MKDIR RPC 程序處理常式期間開啟的控制代碼。 將此值設定為 0,以停用在 CREATE 和 MKDIR 程式碼路徑中將項目新增至快取的功能。

  • 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 產生的簡短名稱。 如果使用者指定的名稱遵循 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 位址的連線數目。