Exchange Server 中受管理的儲存區

受控存放區是資訊存放區 (的名稱,也稱為 2016 年 Exchange Server Exchange Server 2019 中的 Store) 進程。 Exchange Server 2013 年引進,受控存放區使用控制器/背景工作進程模型,可提供記憶體進程隔離和更快速的資料庫故障轉移。 受控存放區也會使用靜態資料庫快取機制來取代舊版 Exchange 中的動態緩衝區演算法。

受控存放區所使用的多進程模型是由信箱伺服器上的下列進程所組成:

  • 整個 Exchange Server (Microsoft.Exchange.Store.Service.exe 的單一存放區服務控制器程式,也稱為 MSExchangeIS) 。

  • 每個掛接的資料庫 (Microsoft.Exchange.Store.Worker.exe) 一個背景工作進程。 掛接資料庫時,會具現化新的背景工作進程,只服務該資料庫。 卸除資料庫時,該資料庫的背景工作進程會終止。

例如,如果您在信箱伺服器上掛接了 40 個信箱資料庫,將會針對受控存放區執行 41 個進程:每個資料庫一個,一個用於存放區服務進程控制器。 存放區進程控制器會監視伺服器上所有存放區背景工作進程的健康情況。 Microsoft.Exchange.Store.Service.exe 導致伺服器上所有作用中資料庫複本的立即故障轉移,這是無法或非預期的終止。

受控存放區也與 Microsoft Exchange 複寫服務 (MSExchangeRepl.exe) 和 Active Manager 緊密整合。 控制器進程、背景工作進程和複寫服務會一起運作,以提供更高的可用性和可靠性,如下列清單所述:

  • Microsoft Exchange 複寫服務程序 (MSExchangeRepl.exe)

    • 負責對市集發出掛接和卸除作業。

    • 針對存放區、可延伸儲存引擎 (ESE) 和受控可用性響應程式所報告的記憶體或資料庫失敗起始復原動作。

    • 偵測非預期的資料庫失敗。

    • 提供管理工作的系統管理介面。

  • 將服務行程/控制器儲存 (Microsoft.Exchange.Store.Service.exe)

    • 根據從復寫服務接收的掛接和卸除作業,管理每個背景工作進程存留期。

    • 處理來自 Windows 服務控制管理員的傳入要求。

    • 記錄在偵測到儲存背景工作進程問題時的失敗專案 (例如,停止回應或非預期的結束) 。

    • 終止回應故障轉移事件中的存放區背景工作進程。

  • 存放背景工作進程 (Microsoft.Exchange.Store.Worker.exe)

    • 負責在資料庫上執行信箱的 RPC 作業。

    • 背景工作進程內的 RPC 端點實例是資料庫 GUID。

    • 提供資料庫的資料庫快取。

靜態資料庫快取演算法

相較於舊版 Exchange 中使用的 動態緩衝區配置 ,受控存放區會使用簡單且直接的演算法來判斷資料庫快取。 配置給每個資料庫快取 (的記憶體,也就是每個存放區背景工作進程) 都是根據 Set-MailboxServer Cmdlet 上的本機資料庫複本數目和 MaximumActiveDatabases 參數的設定值, (預設值是$null或空白) 。 如果 MaximumActiveDatabases 的值大於目前資料庫複本的數目,則快取計算是以資料庫複本數目為基礎。

靜態演算法會根據伺服器中安裝的實體 RAM 數量,為每個存放區背景工作進程的 ESE 快取配置記憶體。 這稱為資料庫 的最大快取目標 。 總伺服器記憶體的 25% 會配置給 ESE 快取,並稱為 「伺服器快取大小目標」

注意事項

您可以覆寫伺服器快取大小目標,因此使用 Active Directory 中 InformationStore 對象的 屬性來設定給 ESE 快取msExchESEParamCacheSizeMax存放區的記憶體數量, (設定的值是要在所有存放區進程中配置的 32 KB 頁面數) 。

此快取的靜態數量會配置給主動和被動複本。 只有在服務使用中的資料庫複本時,才會配置存放區背景工作進程的最大快取目標。 被動資料庫複本會配置最大快取目標的 20%。 其餘部分由市集保留,如果資料庫從被動轉換為主動,則會配置給背景工作進程。

[最大快取目標] 只會在 Store 啟動時計算。 因此,如果您新增或移除資料庫或資料庫複本,您必須重新啟動 Store 控制器服務 (MSExchangeIS) ,以便據以調整快取。 如果未重新啟動服務,新資料庫的快取大小目標將會比上次服務啟動之前存在的資料庫小。 在此案例中,資料庫快取大小目標的總和可能會超過伺服器快取大小目標,直到 MSExchangeIS 重新啟動為止。

範例資料庫快取計算

以下是以信箱伺服器的記憶體和資料庫組態為基礎的資料庫快取計算範例。

範例 1

信箱伺服器設定:

  • 48 GB 的記憶體

  • 兩個主動資料庫和兩個被動資料庫

  • 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,以防它們變成使用中複本。 如果發生這種情況,他們會使用其最大快取目標 3 GB。

範例 2

信箱伺服器設定:

  • 48 GB 的記憶體

  • 兩個主動資料庫和兩個被動資料庫

  • 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

  • 資訊存放區不會為兩個被動資料庫複本保留任何記憶體,因為它們無法成為使用中復本 (MaximumActiveDatabases 的值設定為 2,而且伺服器) 上已經有 2 個作用中資料庫複本。