本文提供備份大型系統磁碟區時備份程式失敗的問題解決方式。
原始 KB 編號: 304101
徵兆
當您嘗試使用 NTBackup.exe 或使用使用NT備份 API 的第三方備份程式建立備份時,備份可能無法順利完成。 即使您在本機伺服器上執行程式,也可能會發生此行為。 此外,您可能會遇到下列一或多個徵兆:
下列一或多個錯誤訊息會出現在應用程式記錄檔中:
錯誤訊息 1錯誤 1450:系統資源不足,無法完成所要求的服務。
錯誤 1450:/十六進位0x5aa ERROR_NO_SYSTEM_RESOURCES
操作系統錯誤 1450 系統資源不足,無法完成所要求的服務。
在「裝置」寫入失敗,狀態 = 1450
錯誤訊息 2
錯誤 1130:沒有足夠的伺服器記憶體可用來處理此命令。
錯誤 1130 / 十六進位0x46a ERROR_NOT_ENOUGH_SERVER_MEMORY
備份或還原作業異常終止。
伺服器服務可能會產生事件標識碼 2020 和事件標識碼 2021 訊息。
注意
一般而言,事件標識碼 2020 和事件標識碼 2021 訊息不會出現。
如果您執行 Hewlett-Packard (HP) OmniBack 備份程式,您可能會收到類似下列錯誤訊息:
[81:78] C:\foldername\file.name
無法在位移436176408讀取 57256 個字節(:1): ([1450]
系統資源不足,無法完成所要求的服務。如果您在 Windows 任務管理器中檢視 [效能] 索引標籤,您會發現非分頁的核心記憶體不足。
注意
您可能會因為與本文所描述的問題無關的原因,收到這些錯誤訊息。 如果您只在備份大型系統磁碟區時收到這些錯誤訊息,則本文描述的兩個最可能原因就是這些錯誤訊息。
若要協助判斷您是否遇到此問題,請啟動 Windows 任務管理員,然後按兩下 [ 效能] 索引標籤。在右下方,找出 核心記憶體 (K) 區域,然後記下 Paged 的值。 當此值達到大約 160 MB 時,您可能會在 Microsoft Windows 2000 或 Microsoft Windows NT 4.0 中遇到此問題。 或者,當此值超過 160 MB 時,您可能會在 Microsoft Windows Server 2003 中遇到此問題。 如果您已將分頁集區內存的登錄機碼設定為較高的值,則除非使用分頁集區內存的值更高,否則不會遇到此問題(當分頁集區內存使用量達到約 80% 的設定值時,可能會發生此問題)。 如果您已開啟 gflags
的資源標籤設定,並且使用 Poolmon 工具,您會看到 MmSt 標籤的使用量更高。 這是用來映射操作系統用於追蹤共用檔案的記憶體的集區標籤。
原因
此問題的兩個原因相關。 最頻繁的原因會先列出:
開啟的檔案數量超過記憶體快取管理員可處理的範圍。 因此,快取管理員已耗盡可用的分頁池內存。
備份程式嘗試備份的檔案大小大於該作業系統版本的備份 API 能夠處理的範圍。 其結果相同(也就是分頁集區已用盡)。
注意
第二個問題更有可能發生在以 Windows NT 4.0 為基礎的Microsoft電腦上。
每個問題的解決方式會因您在 Windows Server 2003、Microsoft Windows 2000 或 Windows NT 4.0 中遇到問題而有所不同。
解決方法
Windows Server 2003 和 Windows 2000
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下以下文章編號來檢視 Microsoft 知識庫 文章:
322756 如何在 Windows 中備份和還原登錄
您可能必須變更兩個登錄設定。 一律變更第一個設定。 視系統設定而定,您可能也必須變更第二個設定。
登錄設定 1
按兩下 [開始],按兩下 [ 執行],在 [ 開啟 ] 方塊中輸入 regedit,然後按兩下 [ 確定]。
找出並按一下下列登錄子機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
在 [編輯] 功能表上,指向 [新增],然後按一下 [DWORD 值]。
輸入 PoolUsageMaximum 作為專案名稱,然後按 ENTER。
以滑鼠右鍵按兩下 [ PoolUsageMaximum],然後按兩下 [ 修改]。
點擊 十進位。
在 [ 值數據 ] 方塊中,輸入 60,然後按兩下 [ 確定]。
重要
- 使用 60 作為初始值。 如果您的備份未成功,請使用 40 作為您的值。 如果這樣無法解決問題,您必須改變備份程式的運作方式,以減少分頁資源池的需求。 如果該值有效,您可能想要將其增加大約 25%,直到備份不再運作。 如果備份失敗,請使用本文中所述的第二個登錄設定。
- 請確定此登錄設定的值不超過 60。
- 如果您使用 /3GB 參數,初始設定請設為 40。 請注意,此值是百分比值。
結束登錄編輯程式。
重新啟動您的電腦。
由於您必須在最緊張的備份期間測試這些設定,因此如果您不確定哪個備份會耗用最多資源,您可能必須等候一個月的時間才能完成整個備份週期。 由於這種情況,Microsoft建議您先測試低值。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
312362 伺服器無法配置記憶體於系統分頁集區中
登錄設定 2
按兩下 [開始],按兩下 [ 執行],在 [ 開啟 ] 方塊中輸入 regedit,然後按兩下 [ 確定]
找出並按一下下列登錄子機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
在 [編輯] 功能表上,指向 [新增],然後按一下 [DWORD 值]。
輸入 PagedPoolSize 作為專案名稱,然後按 ENTER。
以滑鼠右鍵按兩下 PagedPoolSize,然後按兩下 [ 修改]。
按一下 十六進位。
在 [ 值數據 ] 方塊中,輸入 FFFFFFFF 的值,然後按兩下 [ 確定]。
重要
將 PagedPoolSize 設定為 0xFFFFFFFF (-1) 會配置頁面集區上限,而不是將其他資源配置給電腦。 這通常是域控制器或終端機伺服器上的必要專案。 根據預設,大部分的 Windows 2000 系統似乎受限於分頁集區大小上限為 160 MB。 您可以從公用網站下載核心調試程式,並在您想要使用的調試程序中開啟核心傾印,以驗證這一點。 要使用的指令是 !vm 。 例如,這會顯示分頁池的上限為 163840 KB。 新增此值可減少系統上可用的Page Table Entries (PTE),並將分頁集區上限擴充為Windows 2000中的343 MB。 分頁集區的大小上限可以擴充為 Windows Server 2003 中的較大值。
Windows Server 2003 的預設和最大分頁集區值遠大於 Windows 2000。 一般而言,Windows Server 2003 值至少比 Windows 2000 中找到的值高出 50%。 這些較大的值讓您更不容易遇到本文所述的由分頁集區值引起的問題。 不過,仍有可能發生此問題。
這個值會限制可用的系統 PTE。 PTE 是您系統使用的另一個不相關的系統資源。 此設定可能會導致您的操作系統在啟動時意外停止,並在藍色畫面上顯示停止錯誤代碼0x3F。 您可以在系統重新啟動功能表或復原控制臺上使用 上次最佳設定 重啟選項來復原。 使用性能監視器來檢視 系統未使用的頁表項 計數器。 如果觀察到的可用值超過 40,000,您可以新增 PagePoolSize 設定。
如果您要一起執行 /3GB 和 /PAE,在未進行充分測試和確定環境所需系統 PTES 的確切數量之前,切勿設定此選項。 您可能會在 10,000-20,000 免費範圍內看到值。 使用文件來配置分頁集區記憶體,但絕不能低於10,000個可用系統PTE。 如果您使用 /3GB 切換開關,請勿設置此值為任何其他值。 唯一支援的值是 0、0A000000 和 FFFFFFFFFF。
結束登錄編輯程式。
重新啟動您的電腦。
Windows NT 4.0
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下以下文章編號來檢視 Microsoft 知識庫 文章:
322756 如何在 Windows 中備份和還原登錄
注意
您必須使用 Windows NT 4.0 Service Pack 6a。
解決第一個問題
啟動註冊表編輯器(Regedt32.exe)。
找出並按一下下列登錄子機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management
在 [編輯] 功能表上,按一下 [新增值],然後新增下列登錄值:
數值名稱:UnusedFileCache
數據類型:REG_DWORD
基數:十進位
值數據:15注意
這個數位代表可供未使用的區段取用的集區百分比。 值為 0 表示系統會使用類似於 Windows NT 4.0 Service Pack 3 的預設行為。 值 5 到 40 表示系統會根據集區使用量修剪未使用的檔案快取。 5 是最積極的(也就是說,它會增加快取大小最少),而 40 則最不積極(也就是說,它可讓快取在修剪快取之前成長到最大)。
重要
使用15作為初始值。 如果您的備份未成功,請使用 5 作為您的值。 如果這樣無法解決問題,您必須變更備份程序的行為,以減少分頁池的需求,或者您必須升級至 Windows 2000,這個版本提供的分頁池容量是現有的兩倍以上(如需詳細資訊,請參閱“Windows 2000”部分)。 如果此值正常運作,您可能會想要將此值增加約 20%,直到備份失敗為止。 如果備份失敗,請使用本文中所述的第二個登錄設定。
如果您使用 /3GB 參數,請使用 5 作為初始設定。
結束登錄編輯程式。
重新啟動您的電腦。
由於您必須在最緊張的備份期間測試這些設定,因此如果您不確定哪個備份會耗用最多資源,您可能必須等候一個月的時間才能完成整個備份週期。 因此,Microsoft建議您先測試低值。
解決第二個問題
其中一個可能的解決方法是限制備份,以便一次備份一個檔案。 視要備份的檔案大小而定,它可能無法運作。 (預期可處理小於 180 GB 的檔案[GB]。)如果您要備份數個大型檔案,但每個檔案小於 180 GB,您也可以嘗試此解析。 請遵循步驟,同時解決第一個問題。 對於大於 180 GB 的檔案,沒有因應措施存在。 因此,您必須將系統升級至 Windows 2000。 如果您嘗試從遠端備份系統作為因應措施,您將會遇到相同的問題。
啟動註冊表編輯器(Regedt32.exe)。
找出並按一下下列登錄子機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management
在 [編輯] 功能表上,按一下 [新增值],然後新增下列登錄值:
數值名稱:DisablePagedPoolHint
數據類型:REG_DWORD
基數:十進位
數值資料:1結束登錄編輯程式。
重新啟動您的電腦。
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
其他相關資訊
NTBackupread 和 NTBackupwrite 都使用緩衝 I/O。 這表示 Windows NT 會快取針對數據流執行的 I/O。 這也是唯一會備份檔案元數據的 API。 此快取從有限的資源提取:即資源池和非分頁資源池。 因此,大量的檔案或檔案過大可能會導致集區資源不足。
數個因素可能會耗盡分頁池記憶體的供應。 您可以開啟集區標記,並在不同的時間間隔採取 poolsnaps
,以協助您了解哪個驅動程式耗盡分頁集區記憶體。
poolsnaps
如果表示 MmSt 標籤 (Mm 區段物件原型 PTE) 是最大的取用者,且超過 80 MB,則伺服器上可能會開啟大量的檔案。
在 Windows 2000 系統中,計算機上可能的最大分頁池內存是當分頁池機碼設為 FFFFFFFF 時為 343 MB;如果未設置機碼,則為 164 MB。 Windows NT 中可能的最大分頁集區內存為 192 MB。 根據預設,當系統達到分頁集區總數的 80% 時,記憶體管理員會嘗試修剪配置的分頁集區內存。 例如,343 MB 的 80% 是 274 MB。 如果記憶體管理員無法快速修剪以跟上需求,可能會發生本文一節中列出的事件。 如果您微調記憶體管理員以稍早啟動修剪程式(例如,當達到 40% 時),計算機可以在突然尖峰使用期間跟上分頁集區的需求,使其不會用盡分頁集區內存。
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以暗示或其他方式擔保這些產品的效能或可靠性。