Exchange Server の管理ストア

Managed Store は、Exchange Server 2016 および Exchange Server 2019 のインフォメーション ストア (ストアとも呼ばれます) プロセスの名前です。 Exchange Server 2013 で導入された Managed Store は、ストレージ プロセスの分離とデータベース フェールオーバーの高速化を実現するコントローラー/ワーカー プロセス モデルを使用します。 マネージド ストアでは、以前のバージョンの Exchange の動的バッファー アルゴリズムを置き換える静的データベース キャッシュ メカニズムも使用します。

マネージド ストアで使用されるマルチプロセス モデルは、メールボックス サーバー上の次のプロセスで構成されます。

  • Exchange サーバー全体 (Microsoft.Exchange.Store.Service.exe、MSExchangeIS とも呼ばれます) の 1 つのストア サービス コントローラー プロセス。

  • マウントされたデータベースごとに 1 つのワーカー プロセス (Microsoft.Exchange.Store.Worker.exe)。 データベースをマウントすると、そのデータベースに対してのみサービスを提供する新しいワーカー プロセスのインスタンスが生成されます。 データベースをマウント解除すると、そのデータベースのワーカー プロセスは削除されます。

たとえば、メールボックス サーバーに 40 個のメールボックス データベースがマウントされている場合、Managed Store に対して実行されるプロセスは 41 個あり、データベースごとに 1 つ、ストア サービス プロセス コントローラー用に 1 つずつ実行されます。 ストア プロセス コントローラーは、サーバー上のすべてのストア ワーカー プロセスの状態を監視します。 Microsoft.Exchange.Store.Service.exe が強制的または予期しない終了を行うと、サーバー上のすべてのアクティブなデータベース コピーの即時フェールオーバーが発生します。

また、管理ストアは Microsoft Exchange Replication Service (MSExchangeRepl.exe) およびアクティブ マネージャーと密接に統合されています。 コントローラー プロセス、ワーカー プロセス、レプリケーション サービスが連携して、次の一覧で説明するように、可用性と信頼性が向上します。

  • Microsoft Exchange レプリケーション サービス プロセス (MSExchangeRepl.exe):

    • ストアへのマウント操作とマウント解除操作の発行を担当します。

    • ストア、拡張可能記憶域エンジン (ESE)、およびマネージド可用性レスポンダーによって報告されたストレージまたはデータベースの障害に対する回復アクションを開始します。

    • 予期しないデータベース エラーを検出します。

    • 管理タスクの管理インターフェイスを提供します。

  • サービス プロセス/コントローラーを格納する (Microsoft.Exchange.Store.Service.exe):

    • レプリケーション サービスから受け取ったマウント操作とマウント解除操作に基づいて、各ワーカー プロセスの有効期間を管理します。

    • Windows Service Control Manager からの受信要求を処理します。

    • ストア ワーカー プロセスの問題が検出されたときにエラー項目をログに記録します (ハングや予期しない終了など)。

    • 応答フェールオーバー イベントでストア ワーカー プロセスを終了します。

  • ストア ワーカー プロセス (Microsoft.Exchange.Store.Worker.exe)

    • データベース上のメールボックスに対する RPC 操作の実行を担当します。

    • ワーカー プロセス内の RPC エンドポイント インスタンスは、データベース GUID です。

    • データベースのデータベース キャッシュを提供します。

静的データベース キャッシュ アルゴリズム

Managed Store では、以前のバージョンの Exchange で使用されていた 動的バッファー割り当て と比較して、データベース キャッシュを決定するための単純で簡単なアルゴリズムが使用されます。 各データベース キャッシュ (つまり、各ストア ワーカー プロセス) に割り当てられるメモリは、Set-MailboxServer コマンドレットの MaximumActiveDatabases パラメーターのローカル データベース コピーの数と構成された値に基づいています (既定値は$nullまたは空白です)。 MaximumActiveDatabases の値が現在のデータベース コピーの数を超える場合、キャッシュの計算はデータベース コピーの数に基づきます。

静的アルゴリズムは、サーバーにインストールされている物理 RAM の量に基づいて、各ストア ワーカー プロセスの ESE キャッシュにメモリを割り当てます。 これは、データベースの 最大キャッシュ ターゲット と呼ばれます。 サーバー メモリ全体の 25% が ESE キャッシュに割り当てられ、 サーバー キャッシュ サイズ ターゲットと呼ばれます。

注:

Active Directory の InformationStore オブジェクトの属性 (構成されている値は、すべてのストア プロセスに割り当てる 32 KB ページの数) を使用msExchESEParamCacheSizeMaxして、サーバー キャッシュ サイズ ターゲットをオーバーライドできます。そのため、ESE キャッシュ用のストアに割り当てられたメモリの量。

静的なこのキャッシュの量は、アクティブ コピーおよびパッシブ コピーに割り当てられます。 ストア ワーカー プロセスには、アクティブなデータベース コピーを処理する場合にのみ、最大キャッシュ ターゲットが割り当てられます。 パッシブ データベース コピーの場合、最大キャッシュ ターゲットの 20% が割り当てられます。 残りは Store によって予約され、データベースがパッシブからアクティブに移行する場合にワーカー プロセスに割り当てられます。

最大キャッシュ ターゲットの計算は Store 起動時にのみ行われます。 そのため、データベースまたはデータベース コピーを追加または削除する場合、その結果に応じてキャッシュを調整できるように、Store コントローラー サービス (MSExchangeIS) を再起動する必要があります。 サービスが再起動されない場合、新しいデータベースのキャッシュ サイズターゲットは、前回のサービスの起動前に存在していたデータベースよりも小さくなります。 このシナリオでは、MSExchangeIS が再起動されるまで、データベース キャッシュ サイズ ターゲットの合計がサーバー キャッシュ サイズ ターゲットを超える可能性があります。

データベース キャッシュ計算の例

メールボックス サーバーのメモリとデータベースの構成に基づくデータベース キャッシュ計算の例を次に示します。

例 1

メールボックス サーバーの構成:

  • 48 GB のメモリ

  • 2 つのアクティブなデータベースと 2 つのパッシブ データベース

  • MaximumActiveDatabases パラメーター: 未構成

データベース キャッシュの量は、アクティブなデータベース コピー ワーカー プロセスごとに 3 GB、パッシブ データベース コピー ワーカー プロセスごとに 0.6 GB です。 これらの値の計算方法を次に示します。

  • サーバー キャッシュ サイズ ターゲット: メモリ量の 25%: 48 GB * 0.25 = 12 GB

  • データベースの最大キャッシュ ターゲット: サーバー キャッシュ サイズ ターゲットをアクティブデータベースとパッシブ データベースの合計数で除算します。12 GB/4 データベース = 3 GB

  • パッシブ データベース コピーに使用されるメモリ: データベース最大キャッシュ ターゲットの 20%: 3 GB * 0.20 = 0.6 GB

サーバー キャッシュ サイズ ターゲットに割り当てられている 12 GB のメモリのうち、

  • データベース ワーカー プロセスでは、7.2 GB が使用されます。

  • 4.8 GB は、アクティブなコピーになった場合に備え、2 つのパッシブ データベース コピー用にインフォメーション ストアによって予約されます。 この場合は、最大キャッシュ ターゲット 3 GB を使用します。

例 2

メールボックス サーバーの構成:

  • 48 GB のメモリ

  • 2 つのアクティブなデータベースと 2 つのパッシブ データベース

  • MaximumActiveDatabases パラメーター: 2

データベース キャッシュの量は、アクティブなデータベース コピー ワーカー プロセスごとに 5 GB、パッシブ データベース コピー ワーカー プロセスごとに 0.2 GB です。 これらの値の計算方法を次に示します。

  • サーバー キャッシュ サイズ ターゲット: メモリ量の 25%: 48 GB * 0.25 = 12 GB

  • データベースの最大キャッシュ ターゲット: サーバー キャッシュ サイズ ターゲットを次の合計で除算します。

    • アクティブなデータベースの数

    • パッシブ データベースの数の 20%

    12 GB / (2A + (2P * 0.20)) = 5 GB

  • パッシブ データベース コピーに使用されるメモリ: データベース最大キャッシュ ターゲットの 20%: 5 GB * 0.20 = 1 GB

サーバー キャッシュ サイズ ターゲットに割り当てられた 12 GB のメモリのうち、次の手順を実行します。

  • データベース ワーカー プロセスで 12 GB が使用されます

  • 2 つのパッシブ データベース コピーのメモリは、アクティブ コピーになることができないため、Information Store によって予約されることはありません (MaximumActiveDatabases の値は 2 で構成され、サーバーにはアクティブなデータベース コピーが既に 2 つあります)。