大規模なシステム ボリュームをバックアップすると、バックアップ プログラムが失敗する

この記事では、大規模なシステム ボリュームをバックアップするときにバックアップ プログラムが失敗する問題の解決策について説明します。

適用対象:Windows Server 2012 R2、Windows 10 - すべてのエディション
元の KB 番号: 304101

現象

NTBackup.exe を使用するか、NT Backup API を使用するサードパーティのバックアップ プログラムを使用してバックアップを作成しようとすると、バックアップが正常に完了しない可能性があります。 この動作は、サーバーでプログラムをローカルで実行した場合でも発生する可能性があります。 さらに、次の現象の 1 つ以上が発生する可能性があります。

  • 次の 1 つ以上のエラー メッセージがアプリケーション ログに表示されます。
    エラー メッセージ 1

    エラー 1450: 要求されたサービスを完了するためのシステム リソースが不足しています。

    ERROR 1450: / hex 0x5aa ERROR_NO_SYSTEM_RESOURCES

    オペレーティング システム エラー 1450 要求されたサービスを完了するためのシステム リソースが不足しています。

    "デバイス" での書き込みに失敗しました。状態 = 1450

    エラー メッセージ 2

    エラー 1130: このコマンドを処理するのに十分なサーバー ストレージがありません。

    エラー 1130/ 16 進0x46a ERROR_NOT_ENOUGH_SERVER_MEMORY

    バックアップまたは復元操作が異常終了する。

  • イベント ID 2020 およびイベント ID 2021 メッセージは、サーバー サービスによって生成される場合があります。

    注:

    通常、イベント ID 2020 メッセージとイベント ID 2021 メッセージは表示されません。

  • Hewlett-Packard (HP) OmniBack バックアップ プログラムを実行している場合は、次のようなエラー メッセージが表示されることがあります。

    [81:78] C:\foldername\file.name

    オフセット 436176408(:1): ([1450] で 57256 バイトを読み取ることができません
    要求されたサービスを完了するためのシステム リソースが不足しています。)。

  • Windows タスク マネージャーで [ パフォーマンス ] タブを表示すると、非ページ カーネル メモリが不足していることがわかります。

注:

この記事で説明する問題に関連しない理由により、これらのエラー メッセージが表示される場合があります。 大規模なシステム ボリュームをバックアップするときにのみこれらのエラー メッセージが表示される場合、最も可能性の高い原因は、この記事で説明する 2 つの原因です。

この問題が発生しているかどうかを判断するには、Windows タスク マネージャーを起動し、[ パフォーマンス ] タブをクリックします。右下の カーネル メモリ (K) 領域を見つけて、 Paged の値を書き留めます。 この問題は、Microsoft Windows 2000 または Microsoft Windows NT 4.0 で、この値が約 160 MB (MB) に達したときに発生する可能性があります。 または、この値が 160 MB を超えると、Microsoft Windows Server 2003 でこの問題が発生する可能性があります。 ページ プール メモリのレジストリ キーを高い値に設定した場合、ページ プール メモリの値がはるかに大きくなるまで、この問題は発生しません (ページ プール メモリの使用量が設定値の約 80% に達したときに問題が発生する可能性があります)。 プール タグの設定を gflags 有効にしていて、Poolmon ユーティリティを使用している場合は、MmSt タグの使用率が高くなります。 これは、共有ファイルの追跡に使用されるオペレーティング システム メモリのマップに使用されるプール タグです。

原因

この問題の 2 つの原因が関連しています。 より頻繁に発生する原因を最初に示します。

  • メモリ キャッシュ マネージャーで処理できるファイル数よりも多くのファイルが開いています。 その結果、キャッシュ マネージャーは使用可能なページ プール メモリを使い果たしました。

  • バックアップ プログラムは、バックアップ API がそのバージョンのオペレーティング システムでアクセスできるサイズを超えるファイルをバックアップしようとしました。 同じ結果になります (つまり、ページ プールが使い果たされます)。

    注:

    この 2 つ目の問題は、Microsoft Windows NT 4.0 ベースのコンピューターで発生する可能性が高くなります。

各問題の解決方法は、Windows Server 2003、Microsoft Windows 2000、または Windows NT 4.0 で問題が発生するかどうかによって異なります。

解決方法

Windows Server 2003 および Windows 2000

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

2 つのレジストリ設定を変更する必要がある場合があります。 常に最初の設定を変更します。 システムの構成によっては、2 つ目の設定を変更しなければならない場合もあります。

レジストリ設定 1

  1. [スタート][ファイル名を指定して実行] の順にクリックし、[名前] ボックスに「regedit」と入力し、[OK] をクリックします。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。

  4. エントリ名として「PoolUsageMaximum」と入力し、Enter キーを押します。

  5. [PoolUsageMaximum] を右クリックし、[変更] をクリックします。

  6. [ Decimal] をクリックします。

  7. [ 値データ ] ボックスに「60」と入力し、[ OK] をクリックします。

    重要

    • 初期値として 60 を使用します。 バックアップが成功しない場合は、値として 40 を使用します。 これが機能しない場合は、バックアップ プログラムの動作を変更して、ページ プールの需要を減らす必要があります。 値が機能する場合は、バックアップが機能しないまで、値を約 25% 増やしたい場合があります。 バックアップが失敗した場合は、この記事で説明する 2 つ目のレジストリ設定を使用します。
    • このレジストリ設定の値が 60 以下であることを確認します。
    • /3 GB スイッチを使用している場合は、初期設定として 40 を使用します。 この値はパーセンテージ値であることに注意してください。
  8. レジストリ エディターを終了します。

  9. コンピューターを再起動します。

最も負荷の高いバックアップ中にこれらの設定をテストする必要があるため、ほとんどのリソースを消費するバックアップがわからない場合は、バックアップ サイクル全体が完了するまで 1 か月待つ必要があります。 このような状況のため、Microsoft では、低い値を最初にテストすることをお勧めします。 詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示します。

312362 サーバーがシステム ページ プールからメモリを割り当てることができません

レジストリ設定 2

  1. [スタート] をクリックし、[実行] をクリックし、[開く] ボックスに「regedit」と入力し、[OK] をクリックします

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。

  4. エントリ名として「PagedPoolSize」と入力し、Enter キーを押します。

  5. [PagedPoolSize] を右クリックし、[変更] をクリックします。

  6. [ 16 進数] をクリックします。

  7. [ 値データ ] ボックスに FFFFFFFF の値を入力し、[OK] をクリック します

    重要

    • PagedPoolSize を 0xFFFFFFFF (-1) に設定すると、他のリソースではなく最大ページング プールがコンピューターに割り当てられます。 これは通常、ドメイン コントローラーまたはターミナル サーバーで必要です。 既定では、ほとんどの Windows 2000 システムは、ページ プールの最大サイズが 160 MB に制限されているようです。 これを確認するには、パブリック Web サイトからカーネル デバッガーをダウンロードし、使用するデバッガーでカーネル ダンプを開きます。 使用するコマンドは!vm です。 たとえば、最大 163840 KB のページ プールが表示されます。 この値を追加すると、システムで使用できるページ テーブル エントリ (PTEs) が減り、Windows 2000 ではページ プールが最大 343 MB に拡張されます。 ページ プールの最大サイズは、Windows Server 2003 で大きな値に拡張できます。

      Windows Server 2003 の既定および最大ページ プール値は、Windows 2000 よりもはるかに大きくなります。 通常、Windows Server 2003 の値は、Windows 2000 の値よりも少なくとも 50% 高くなります。 これらの値が大きいほど、ページ プールの値がこの記事で説明されている問題に影響する問題が発生する可能性が高くなります。 ただし、この問題が発生する可能性があります。

    • この値は、使用可能なシステム PTEs を制限します。 PTEs は、システムが使用するもう 1 つの無関係なシステム リソースです。 この設定により、オペレーティング システムが予期せず停止し、起動時にブルー スクリーンに stop 0x3F エラーが表示されることがあります。 この状態から回復するには、システム再起動メニューまたは回復コンソールの [Last Known Good restart]\(最後の既知の良い再起動\) オプションを使用します。 [パフォーマンス モニターを使用して、空きシステム ページ テーブル エントリ カウンターを表示します。 観察された空き値が 40,000 を超える場合は、 PagePoolSize 設定を追加できます。

    • /3 GB と /PAE を同時に実行している場合は、広範なテストを行わずにこの設定を設定しないでください。また、環境内に必要なシステム PTES の数を正確に設定する前に行ってください。 10,000 から 20,000 の範囲の値が表示される可能性があります。 この記事を使用して、ページ プール メモリを構成しますが、10,000 個の空きシステム PTEs を下回ることはありません。 /3 GB スイッチを使用している場合は、この値を他の値に設定しないでください。 サポートされる値は、0、0A000000、FFFFFF のみです。

  8. レジストリ エディターを終了します。

  9. コンピューターを再起動します。

Windows NT 4.0

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

注:

Windows NT 4.0 Service Pack 6a を使用している必要があります。

最初の問題を解決する

  1. レジストリ エディター (Regedt32.exe) を起動します。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management

  3. [編集] メニューの [値の追加] をクリックし、次のレジストリ値を追加します。
    値名: UnusedFileCache
    データ型: REG_DWORD
    基数: 10 進数
    値データ: 15

    注:

    この数は、未使用のセグメントで使用できるプールの割合を表します。 値 0 は、Windows NT 4.0 Service Pack 3 と同様の既定の動作をシステムが使用することを示します。 値 5 から 40 は、プールの使用状況に基づいて、システムが未使用のファイル キャッシュをトリミングすることを示します。 5 は最も攻撃的です (つまり、キャッシュのサイズが最も大きくなります)、40 が最も積極的です (つまり、キャッシュをトリミングする前にキャッシュを最大に拡大できます)。

    重要

    • 初期値として 15 を使用します。 バックアップが成功しない場合は、値として 5 を使用します。 これが機能しない場合は、ページ プールの需要を減らすためにバックアップ プログラムの動作を変更するか、ページ プールの 2 倍を超える Windows 2000 にアップグレードする必要があります (詳細については、「Windows 2000」セクションを参照してください)。 この値が機能する場合は、バックアップが失敗するまで約 20% 増やすことをお勧めします。 バックアップが失敗した場合は、この記事で説明する 2 つ目のレジストリ設定を使用します。

    • /3 GB スイッチを使用している場合は、初期設定として 5 を使用します。

  4. レジストリ エディターを終了します。

  5. コンピューターを再起動します。

最も負荷の高いバックアップ中にこれらの設定をテストする必要があるため、ほとんどのリソースを消費するバックアップがわからない場合は、バックアップ サイクル全体が完了するまで 1 か月待つ必要があります。 そのため、Microsoft では最初に低い値をテストすることをお勧めします。

2 つ目の問題を解決する

考えられる解決策の 1 つは、一度に 1 つのファイルをバックアップするようにバックアップを制限することです。 バックアップするファイルのサイズによっては機能しない場合があります。 (180 ギガバイト [GB] より小さいファイルで動作することが予想されます)。複数の大きなファイルをバックアップしているが、各ファイルが 180 GB より小さい場合は、この解決策を試すこともできます。 手順に従って、最初の問題も解決します。 180 GB を超えるファイルの場合、回避策は存在しません。 そのため、システムを Windows 2000 にアップグレードする必要があります。 回避策としてシステムをリモートでバックアップしようとすると、同じ問題が発生します。

  1. レジストリ エディター (Regedt32.exe) を起動します。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management

  3. [編集] メニューの [値の追加] をクリックし、次のレジストリ値を追加します。
    値名: DisablePagedPoolHint
    データ型: REG_DWORD
    基数: 10 進数
    値のデータ: 1

  4. レジストリ エディターを終了します。

  5. コンピューターを再起動します。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細

NTBackupread と NTBackupwrite の両方でバッファー I/O が使用されます。 つまり、Windows NTはストリームに対して実行される I/O をキャッシュします。 また、ファイルのメタデータをバックアップする唯一の API でもあります。 このキャッシュは、限られたリソース (つまり、プールと非ページ プール) からプルされます。 このため、多数のファイルまたはファイルが大きいと、プール リソースが不足する可能性があります。

いくつかの要因により、ページ プール メモリの供給が枯渇する可能性があります。 プールのタグ付けを有効にし、さまざまな時間間隔を取って poolsnaps 、ページプールメモリを使い果たすドライバーを理解するのに役立ちます。 poolsnapsが MmSt タグ (Mm セクション オブジェクト プロトタイプ PTEs) が最大のコンシューマーであり、80 MB を超える場合は、サーバーで多数のファイルが開かれている可能性があります。

コンピューターで使用可能な最大ページング プール メモリは、Windows 2000 のページ プールの 343 MB で、ページ プール キーが FFFFFFFF に設定されている場合は 164 MB です。キーが存在しない場合は 164 MB です。 可能な最大ページング プール メモリは、Windows NTで 192 MB です。 既定では、メモリ マネージャーは、システムがページ プールの合計の 80% に達したときに、割り当てられたページ プール メモリのトリミングを試みます。 たとえば、343 MB の 80% は 274 MB です。 メモリ マネージャーが要求に対応するのに十分な速さでトリミングできない場合は、この記事の「現象」セクションに記載されているイベントが発生する可能性があります。 以前にトリミング プロセスを開始するようにメモリ マネージャーを調整した場合 (たとえば、40% に達した場合)、コンピューターは、ページプールメモリを使い果たさないように、突然のピーク時にページプールの需要に追いつくことができます。

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。