了解 Exchange 2010 儲存區

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2016-11-28

Exchange 儲存區是一種儲存平台,提供在一種基礎結構中管理多種類型之資訊的單一存放庫。Exchange 儲存區 (store.exe) 是 MicrosoftExchange Server 2010 的核心資料存放庫。

目錄

Exchange 2010 版本中的資料庫

Exchange 儲存區的邏輯元件

Exchange 儲存區的檔案結構

了解交易記錄

可延伸儲存引擎

儲存區健康狀況

資料庫記錄或資料庫磁碟機的磁碟空間不足

Exchange 儲存區限制

Exchange 2010 版本中的資料庫

Exchange 2010 有兩種伺服器版本:Standard Edition 及 Enterprise Edition。Exchange 2010 Standard Edition 的設計目的是為了符合小型和中型企業的郵件傳遞和協同作業需求,它也適用於特殊的伺服器角色或分公司。Exchange 2010 Enterprise Edition 是針對大型企業所設計。

Exchange 2010 Standard Edition 最多可支援五個資料庫。Exchange 2010 Enterprise Edition 最多可支援 100 個資料庫。

Exchange 儲存區的邏輯元件

Exchange 儲存區的主要元件是信箱資料庫及公用資料夾資料庫。這些元件可以位在單一的伺服器上,也可以分散在多部伺服器上。

信箱資料庫包含資料、資料定義、索引、總和檢查碼、標幟,以及構成 Exchange 2010 信箱的其他資訊。信箱資料庫會保留個別使用者私用的資料,並包含為該位使用者建立信箱時所產生的信箱資料夾。信箱資料庫將會儲存為 Exchange 資料庫 (.edb) 檔案。

公用資料夾資料庫包含資料、資料定義、索引、總和檢查碼、標幟,以及構成 Exchange 組織中任何公用資料夾的其他資訊。

在 Exchange 2010 中,您可以使用 Exchange 管理命令介面來管理公用資料夾。(您也可以在 Exchange 管理主控台中執行有限數目的公用資料夾資料庫管理工作。)如需管理公用資料夾的相關資訊,請參閱管理公用資料夾了解公用資料夾

Exchange 2010 版本中的資料庫

Exchange 儲存區的檔案結構

您可以使用其邏輯元件 (例如資料庫) 來管理 Exchange 儲存區。不過,Exchange 2010 是將資料儲存在一個專門的資料檔案集內,例如 Exchange 資料庫 (.edb) 檔案、交易記錄 (.log) 檔案和檢查點 (.chk) 檔案。除非您備份或還原資料,否則很少會與這些檔案直接互動。下表詳細說明了每個檔案。

Exchange 儲存區的檔案結構

資料檔案 描述

Exchange 資料庫 (.edb)

這些檔案是信箱資料的存放庫。它們是由可延伸儲存引擎 (ESE) 直接存取,並具有專為快速存取而設計的 B-Tree 結構。這可讓使用者於一次輸入/輸出 (I/O) 的循環內存取任何資料頁面,這比 Microsoft Exchange Server 2007 增加四倍。Exchange 資料庫包含多個 B-Tree,並含有輔助樹狀結構,以保存索引和檢視的方式與主要樹狀結構搭配使用。

交易記錄 (.log)

這些檔案是建立或修改郵件等資料庫作業的存放庫。認可的作業稍後會寫入至資料庫本身 (在 .edb 檔案中)。這樣的方式可保證在服務中斷時,所有已完成以及未完成的交易都會加以記錄,以保持資料完整性。每個資料庫都有一組專屬的交易記錄。

檢查點 (.chk)

這些檔案是資料的存放庫,可指出作業何時成功儲存至硬碟上的資料庫檔案。在服務中斷而要進行復原時,Exchange 2010 就會使用 .chk 檔案,讓 ESE 的執行個體自動將記錄檔重新顯示到不一致的資料庫中 (從下一個尚未寫入的作業開始)。.chk 檔案與 .log 檔案位在相同的記錄位置。

Exchange 2010 版本中的資料庫

了解交易記錄

Exchange 交易記錄是健全的 ESE 修復機制,設計的目的是要在資料庫突然停止之後,可以透過可靠方式將 Exchange 資料庫還原至一致狀態。還原線上備份時,也會使用記錄機制。本節說明 Exchange 2010 交易記錄的詳細資料,並包含循環記錄的簡短描述。

交換交易記錄

在變更 Exchange 資料庫檔案之前,Exchange 會先將變更寫入至交易記錄檔。安全記錄變更後,才將其寫入至資料庫檔案。將變更安全記錄至交易記錄之後,而在將變更寫入至資料庫檔案之前,一般使用者都可以使用這些變更。

Exchange 運用複雜的內部記憶體管理系統 (調整成達到高效能),而且可以有效管理大量 GB 之資料庫頁面的快取。變更內容實際寫入資料庫檔案,在一般作業中是低優先順序的工作。

如果資料庫突然停止,快取的變更不會因為記憶體快取損毀而遺失。而重新啟動資料庫時,Exchange 會掃描記錄檔,並重新建構及套用所有尚未寫入至資料庫檔案中的變更。此處理程序稱為重新顯示記錄檔。資料庫是具有結構的,因此 Exchange 可以判斷是否已將任何記錄檔中的任何作業套用至資料庫中、是否需要將之套用至資料庫,或不屬於資料庫。

因為不想將所有記錄資訊都寫入至單一大型檔案,所以 Exchange 會使用一連串的記錄檔,而每個記錄檔的大小都剛好 1 MB 或 1,024 KB。當記錄檔已滿時,Exchange 會關閉該檔案,並以序號重新命名該檔案。第一個寫滿的記錄檔名稱是 Enn00000001.log。nn 是兩位數字,即所謂的基準名稱或記錄前置詞。

每個資料庫的記錄檔都是使用帶有編號前置詞的檔案名稱來區分 (例如,E00、E01、E02 或 E03)。目前開啟的資料庫記錄檔名稱為 Enn.log。在填入並關閉此檔案前,此檔案不會有序號。

檢查點檔案 (Enn.chk) 會追蹤 Exchange 將記錄的資訊寫入至資料庫檔案的進度。每個記錄檔資料流都有檢查點檔案,而每個資料庫都有自己的記錄檔資料流。

記錄檔是以十六進位方式編號,因此 E0000000009.log 後面的記錄檔是 E000000000A.log,而不是 E0000000010.log。您可以使用 Windows 小算盤 (Calc.exe) 應用程式的 [工程型] 模式,將記錄檔序號轉換為它們的十進位值。作法是執行 Calc.exe,然後從 [檢視] 功能表中按一下 [工程型]

若要檢視特定記錄檔的十進位序號,則可以使用 Exchange Server 資料庫公用程式 (Eseutil.exe) 工具來檢查它的標頭。每個記錄檔的前 4-KB 頁面會包含標頭資訊,用以說明及識別記錄檔及其所屬的資料庫。Eseutil /ml [log file name] 命令會顯示標頭資訊。

如果使用錯誤的參數來顯示標頭 (例如,搭配使用 /ml 與資料庫標頭,而不是使用 /mh),則會顯示錯誤,或顯示的標頭資訊可能會不完整或不正確。

裝載資料庫時,不能檢視資料庫的標頭。裝載任何資料庫時,也不能檢視目前記錄檔 (Enn.log) 的標頭。只要有一個資料庫使用目前的記錄檔,Exchange 就會讓檔案保持開啟。不過,裝載資料庫時,您可以檢視檢查點檔案標頭。Exchange 每 30 秒更新檢查點檔案,您可以檢視標頭,但更新時除外。

身為 Exchange 系統管理員,請務必了解 Exchange 檔案標頭。如果您了解檔案標頭,就可以判斷哪個資料庫和記錄檔是一組,以及成功復原時需要哪些檔案。

在下列記錄檔標頭範例中,請注意前四行。

Base name: e00
Log file: e00.log
lGeneration: 11 (0xB)
Checkpoint: (0xB,7DC,6F)

因為記錄檔名稱沒有序號,所以這些記錄檔標頭行顯示此記錄檔是目前的記錄檔。lGeneration 行顯示記錄在填滿並關閉之後,它的序號是 B (對應於十進位值 11)。基準名稱是 e00,因此最後一個記錄檔名稱會是 E000000000B.log。

先前標頭範例中的 Checkpoint 值實際上並不是讀取自記錄檔標頭,但顯示出來的就像它是自記錄檔標頭中讀取而來。Eseutil.exe 會直接從 Enn.chk 讀取 Checkpoint 值,因此您並不需要輸入個別的命令來取得檢查點檔案的位置。如果檢查點檔案已毀損,則 Checkpoint 值會是 NOT AVAILABLE。在此情況下,檢查點是在目前記錄檔 (0xB) 中,而數字 7DC6F 則指出檢查點在記錄檔中的位置。請注意,您在實務上很少會需要用到此資訊。

如果檢查點檔案毀損,Exchange 還是可以適當地復原及重新顯示記錄檔。而為了進行上述作業,Exchange 必須從最舊的記錄檔開始掃描,而不是從檢查點記錄檔開始掃描。Exchange 略過已經套用到資料庫的資料,並且循序在記錄檔中尋找要套用的資料。

一般而言,Exchange 只需要一或兩秒的時間就可以掃描完已套用至資料庫的記錄檔。如果記錄檔中的作業必須要寫入至資料庫中,則可能需要 10 秒到數分鐘的時間來套用它們。記錄檔的內容寫到資料庫,平均在 30 秒以內。

正常關閉 Exchange 資料庫時,會將所有未完成的資料寫入至資料庫檔案中。而正常關閉之後,會將資料庫檔案集視為一致,而且 Exchange 會將它從其記錄資料流中分離出來。這表示資料庫檔案現在已十分完備 (具有最新的資訊)。啟動資料庫檔案時,不需要交易記錄檔。

您可以執行 Eseutil /mh 命令,並檢查檔案標頭,分辨是否已完全關閉資料庫。

如果已中斷所有資料庫的連線,而且處於正常關機狀態,則可以放心地刪除所有記錄檔,而不會影響資料庫。如果您刪除所有記錄檔,Exchange 會從 Enn00000001.log 開始,產生新的記錄檔系列。您可以將資料庫檔案移至已有記錄檔的不同伺服器中,而資料庫也會自行連接至不同記錄資料流。

注意事項附註:
雖然您可以在關閉所有資料庫之後刪除記錄檔,但是這樣做會影響還原較舊備份及向前復原的功能。目前的資料庫不再需要現有記錄檔,但如果您必須還原舊資料庫,可能還是需要這些檔案。

如果資料庫是處於不正常關機狀態,則在重新裝載資料庫之前,必須要有檢查點之前的所有現有交易記錄。如果無法取得這些記錄檔,則必須執行 Eseutil /p 命令讓資料庫一致,並準備好資料庫以供啟動,以修復資料庫。

注意注意:
如果您必須修復資料庫,部分資料會遺失。通常只會遺失少許資料,但卻可能很嚴重。在資料庫中執行 Eseutil /p 後,應執行 Eseutil/ d 以重組資料庫。此作業捨棄並重新建置所有資料庫索引及空間樹狀目錄。

交易記錄除了可讓 Exchange 以可靠方式來復原意外停止的資料庫外,製作及還原線上備份時也需要有交易記錄。如需製作及還原線上備份的相關資訊,請參閱瞭解備份、還原和嚴重損壞修復

Exchange 2010 版本中的資料庫

循環記錄

您可以設定 Exchange 啟用循環記錄以節省磁碟空間。循環記錄可以讓 Exchange 在資料庫認可交易記錄檔所含的資料之後,覆寫這些交易記錄檔。不過,如果啟用循環記錄,最多只能還原上次完整備份的資料。例如,您可在使用 Exchange 原生資料保護時啟用未做備份的循環記錄。若要避免建立記錄,您必須啟用循環記錄。

在 Exchange 2010 使用的標準交易記錄中,每筆資料庫交易會先寫入至記錄檔,然後再寫入至資料庫。記錄檔的大小達到 1 MB 時,會重新命名該記錄檔,並建立新的記錄檔。而經過一段時間後,這會產生一組的記錄檔。如果 Exchange 意外停止,則可以將資料從記錄檔中重新顯示至資料庫,以復原交易。循環記錄會在第一個記錄檔中所含的資料寫入至資料庫之後,覆寫及重複使用第一個記錄檔。

在 Exchange 2010 中,循環記錄預設會停用。而啟用循環記錄,會減少磁碟機儲存空間需求。不過,若沒有完整的一組交易記錄檔,則無法復原比最近一次的完整備份更新的任何資料。一般不建議在正常的生產環境中使用循環記錄。

如需關於如何啟用及停用循環記錄的資訊,請參閱設定信箱資料庫內容

Exchange 2010 版本中的資料庫

可延伸儲存引擎

集線傳輸伺服器和邊際傳輸伺服器上的 Exchange 信箱資料庫與佇列會利用 ESE 資料庫。ESE 是一種多重使用者的索引循序存取方法 (ISAM) 資料表管理員,其中含有完整的「資料操作語言 (DML)」及「資料定義語言 (DDL)」功能。ESE 可讓應用程式儲存記錄,並以不同方式建立索引來存取這些記錄。如需 ESE 的相關資訊,請參閱可延伸儲存引擎結構。對於 Exchange 2010 ESE 的改善,請參閱新的 Exchange 核心儲存區功能

Exchange 2010 版本中的資料庫

儲存區健康狀況

Exchange 儲存區可偵測及修正可能導致儲存區不健康的某些情況。Exchange 可處理有害信箱和執行緒逾時,使用報告和警示功能提醒不健康的 Exchange 儲存區狀態,以及偵測及修復信箱資料庫和公用資料夾資料庫的問題。

有害信箱偵測與修正

在某些情況下,包含已毀損資料的單一信箱 (邏輯或實體) 可能會導致 Exchange 儲存區失敗,並拒絕伺服器對所有信箱的代管服務。同理,有害信箱也可能導致 Exchange 儲存區重複失敗。本節說明 Exchange 儲存區偵測及斷絕有害信箱所採取的動作。

隔離有害信箱

以下是 Exchange 儲存區將信箱標記為潛在威脅的幾種事件類型:

  • 如果為該信箱服務的執行緒失敗時

  • 如果信箱中有超過五個執行緒長時間沒有進度時

會標記是潛在威脅的信箱,並附上標記為潛在威脅的次數。此資訊儲存在登錄中。Exchange 儲存區會保留何時將信箱視為潛在威脅的時間戳記資訊。

在資料庫裝載期間,Exchange 儲存區會讀取將信箱視為潛在威脅的時間。如果超過兩小時,就會刪除該信箱的登錄機碼。將此資訊保留於登錄之中的優點是,在高可用性的環境中,由叢集資料庫複寫此資訊。即使在 Exchange 儲存區容錯移轉期間,其他電腦中仍保有此資訊。用於隔離有害信箱的登錄子機碼為 HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-{db guid}\QuarantinedMailboxes\{mailbox guid}。此路徑的機碼是 [CrashCount] 及 [LastCrashTime]。

導致隔離信箱的失敗次數及信箱保持隔離的時間量等設定,均儲存於 MailboxQuarantineCrashThresholdMailboxQuarantineDurationInSeconds 機碼的 HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-{db guid} 子機碼中。

這些機碼的預設值為 MailboxQuarantineCrashThreshold 三次失敗,及 MailboxQuarantineDurationInSeconds 21,600 秒 (六小時)。

對有害信箱採取的動作

依預設,如果將信箱視為兩小時內引起失敗或鎖死三次,則 Exchange 儲存區會在登錄中將它標記為已隔離。除非加上 OPEN_AS_ADMIN 標幟,否則不允許存取信箱。不允許任何 Exchange 處理程序 (例如,內容索引或信箱助理員) 登入。QuarantineStateQuarantineTime 登錄機碼會持續追蹤信箱是否遭到隔離。如果信箱過去兩小時內並未導致任何失敗,也並未遭到隔離,則 Exchange 儲存區會清除信箱的登錄路徑。如果信箱從 LastCrashTime 值後遭到的隔離時限超過 MailboxQuarantineDurationInSeconds 值,就會自動解除隔離。

重設遭到隔離的信箱

找到並修正有害信箱的原因時,應手動刪除遭到隔離之信箱的登錄機碼來加以重設。不過,如果您忘記此手動步驟,Exchange 儲存區會在設定已隔離標幟的六小時後,自動重設遭到隔離的信箱。如果在這段時間內無法將問題除錯及修復,可能會導致一系列其他的失敗,然後再次隔離信箱或郵件。

注意事項附註:
必須重新裝載代管信箱的資料庫,或重新啟動 Exchange 儲存區,重設遭到隔離的信箱才會生效。

可使用登錄機碼 HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-{db guid}\QuarantinedMailboxes\MailboxQuarantineDurationInSeconds 來控制遭到隔離的信箱重設期間。

報告及警示

您可使用 Get-MailboxStatistics 指令程式報告信箱的隔離狀態。Exchange 儲存區有用於計算遭到隔離之信箱數量的「效能監視器」計數器。計數器名稱為 MSExchangeIS Mailbox\Quarantined Mailbox Count。

每當 Exchange 儲存區隔離信箱時,也會寫入包含信箱名稱與時間等詳細資料的事件。事件 10018 表示有遭到隔離的信箱。

Exchange 2010 版本中的資料庫

資料庫修復

在 Exchange 2010 Service Pack 1 (SP1) 中,您可使用 New-MailboxRepairRequest 指令程式偵測及修復信箱毀損。您可以針對特定信箱或信箱資料庫執行此指令程式。此工作執行時,將中斷對正在修復之信箱的存取。如果您針對信箱資料庫執行此指令程式,則只會中斷對正在修復之信箱的存取。資料庫中的所有其他信箱仍可正常運作。如需詳細資訊,請參閱建立信箱修復要求

New-MailboxRepairRequest 指令程式會偵測及修復下列類型的信箱損毀:

  • 搜尋資料夾損毀 (使用 CorruptionType 參數的 SearchFolder 值)

  • 資料夾彙總計數不反映正確的值 (使用 CorruptionType 參數的 AggregateCounts 值)

  • 資料夾的檢視不傳回正確的內容 (使用 CorruptionType 參數的 FolderView 值)

  • 提供的資料夾錯誤地指向未提供的父資料夾 (使用 CorruptionType 參數的 ProvisionedFolder 值)

執行 New-MailboxRepairRequest 指令程式之後,您可以使用事件檢視器來檢視要求的詳細資料。如需詳細資訊,請參閱在事件檢視器中檢視信箱修復要求項目

您也可使用 New-PublicFolderDatabaseRepairRequest 指令程式偵測並修正公用資料夾資料庫中的複寫問題。在要求執行期間,仍可存取公用資料夾資料庫上的公用資料夾。然而,目前正在修復中的公用資料是無法提供存取的。如需詳細資訊,請參閱建立公用資料夾資料庫修復要求

Exchange 2010 版本中的資料庫

偵測及報告逾時

執行緒鎖死或沒有進度,都是不正常 Exchange 儲存區的其他指示。如果一個信箱有五個以上的執行緒、一個資料庫有十個執行緒,或者一個伺服器上有二十個執行緒,且沒有進度時間長達一分鐘,則會在伺服器報告逾時。表示偵測到逾時的效能計數器是 MSExchangeIS\ RPC Request Timeout Detected。

Exchange 儲存區也會將下列事件寫入伺服器:

  • 10025,報告 Exchange 伺服器上的逾時

  • 10026,報告資料庫上的逾時

  • 10027,報告個別信箱上的逾時

如果在單一信箱上偵測到逾時,則會將信箱視為可能有害,且會將增加 CrashCount 機碼視為失敗一樣處理。這會增加信箱受懷疑並遭隔離的機率。

Exchange 2010 版本中的資料庫

資料庫記錄或資料庫磁碟機的磁碟空間不足

當 Exchange 儲存庫偵測到記錄或資料庫磁碟機中的可用空間低於 1GB 時,會中斷所有傳遞至資料庫的傳輸。這是為了防止磁碟空間不足。磁碟空間不足時,無法裝載資料庫或進行除錯,也無法收回資料庫空間。這是唯有在您不回應監視基礎架構的空間問題警告時才會發生的自我保護機制。

磁碟空間超過 1.5GB 時,Exchange 儲存區就會允許繼續傳遞。下列效能計數器指示此行為:

  • MSExchangeIS Mailbox\ 封鎖傳遞:資料庫空間不足

  • MSExchangeIS Mailbox\ 封鎖傳遞:記錄空間不足

Exchange 儲存區也會將下列事件寫入伺服器:

  • 10014,表示記錄的磁碟空間不足

  • 10015,表示資料庫的磁碟空間不足

如果您遇到磁碟空間不足的問題,可執行下列動作來修正問題:

Exchange 2010 版本中的資料庫

Exchange 儲存區限制

在 Exchange 2010 中,Exchange 儲存區具有連線和使用限制,以防止單一應用程式或單一使用者使用 Exchange 儲存區的所有可用連線。如果單一使用者或應用程式使用所有連線,則其他使用者或應用程式將無法存取 Exchange 儲存區,進而導致停機。

如需詳細資訊,請參閱Exchange 儲存區限制

Exchange 2010 版本中的資料庫

 © 2010 Microsoft Corporation. 著作權所有,並保留一切權利。