磁碟區陰影複製服務的疑難排解

 

上次修改主題的時間: 2011-10-05

Microsoft Exchange 感知的磁碟區陰影複製服務 (VSS) 備份可同時支援主動儲存群組與資料庫及被動儲存群組與資料庫。Microsoft 所提供的被動副本備份解決方案是一種僅限 VSS 的解決方案。此解決方案是由複寫服務中的 Exchange 複本 VSS 編寫器來實作。資料流備份只能從主動儲存群組來支援。您無法使用資料流備份 API 來備份複本資料庫。VSS 備份程式必須與 Exchange 編寫器的 VSS 要求者一起使用。

在 Microsoft Exchange Server 2003 中,您可以使用資料流備份,同時對兩個不同的儲存群組執行兩個備份。不過,您無法使用 VSS 來執行此作業。例如,您無法藉由在 Exchange 2003 中使用 VSS,於完成第一個儲存群組備份之前備份第二個儲存群組。

藉由使用 Microsoft Exchange Server 2007,您可以對同一部 Exchange 伺服器執行兩個不同的 VSS 備份工作。此外,Exchange 2007 編寫器還可讓您將 Exchange 資料還原至其他位置。Exchange 2003 編寫器不允許您將 VSS 還原作業的目標設為原始路徑以外的位置。

使用 Exchange 編寫器無法將 VSS 備份還原至複本位置。但是,可以還原至其他位置 (如複本副本目錄)。

在 Exchange 2007 中,Store.exe VSS 編寫器能夠在進行還原作業時將資料還原至任何儲存群組。這包括復原儲存群組 (RSG)。Store.exe VSS 編寫器也可讓您將資料庫還原至與儲存群組無關的資料夾位置。如果這麼做,您可以使用 JET 資枓庫引擎,將還原的交易記錄檔重新顯示到資料庫中,讓資料庫進入一致又可裝載的狀態。接著,您即可將資料庫移到其他位置。

磁碟區陰影複製服務的疑難排解

VSS 預設會安裝在 Windows Server 2003 伺服器上。該服務已設為手動啟動,且如果要求者 (備份程式) 可以在系統中使用編寫器即可執行。 Windows Server 2003 Service Pack 2 (SP2) 解決了某些會影響 VSS 效能的問題。

如需在 Windows Server 2003 SP2 中修正的問題清單,請參閱 Microsoft 知識庫文章 914962 Windows Server 2003 Service Pack 2 更新的清單

雖然您可以只安裝 VSS 的更新,但是建議您安裝整個 Service Pack。此外,相關更新彙總套件的 Microsoft 知識庫文章可以協助解決 Windows Server 2003 中的一些 VSS 快照集問題。

如需相關資訊,請參閱知識庫文章 940349 有 Windows Server 2003 的磁碟區陰影複製服務 (VSS) 更新彙總套件可用來解決一些 VSS 快照集問題

有下列 Hotfix 可用來解決您可能遇到的 VSS 問題。

KBID 編號 標題

833167

有磁碟區陰影複製服務 (VSS) 更新套件可用於 Windows Server 2003

915331

備份程序可能會失敗,而且磁碟區陰影複製服務編寫器可能會發生逾時錯誤

930800

VSS 備份作業在 Exchange 2007 或 Exchange 2003 中失敗時會記錄事件識別碼 9840 或 9607

910250

Exchange Server 2003 資料庫的快照集備份失敗,並且記錄事件識別碼 9607

923628

當您在 Windows Server 2003 with SP1 中執行使用磁碟區快照集的備份時,備份應用程式會停止回應

933779

儲存群組的快照集複製備份失敗,並且會在 Exchange Server 2003 的應用程式記錄檔中記錄事件識別碼

在備份作業執行之前,Exchange 編寫器必須處於穩定狀態,而且必須毫無錯誤。您可以執行下列命令,以判定 Exchange 編寫器的狀態:

VSSadmin list writers

此命令的輸出會列出所有使用 VSS 登錄的編寫器。在命令結果中,檢查編寫器的 [狀態] 欄位。請注意,[狀態] 欄位是否顯示 [穩定] 以外的狀態。下列範例輸出顯示 Exchange 編寫器處於失敗狀態。

編寫器名稱:'Microsoft Exchange 編寫器'

編寫器識別碼:{GUID}

編寫器執行個體識別碼:{GUD}

狀態:[14] 失敗

上個錯誤:可再嘗試的錯誤

如果 Exchange 編寫器處於失敗狀態,請重新啟動 Microsoft Exchange Information Store 服務,然後執行 VSSadmin list writers 命令來判定編寫器狀態是否回到穩定狀態。下列範例輸出顯示 Exchange 編寫器處於穩定狀態。

編寫器名稱:'Microsoft Exchange 編寫器'

編寫器識別碼:{GUID}

編寫器執行個體識別碼:{GUD}

狀態:[1] 穩定

上個錯誤:沒有錯誤

如果 VSSadmin list writers 命令的輸出空白,則可能是發生登錄錯誤,以致作業系統無法偵測及顯示適當的編寫器資訊。如需如何修正此問題及如何重新建立 VSS 編寫器清單的相關資訊,請參閱 Microsoft 知識庫文章 940184 當您在 Windows Server 2003 電腦上執行 "vssadmin list writers" 命令時出現錯誤訊息:"錯誤︰0x8000FFFF"

VSSadmin list providers 命令會列出電腦上已登錄的磁碟區陰影複製提供者。當您執行此命令時,通常會將 "Microsoft Software Shadow Copy provider 1.0" 列為其中一個提供者或唯一的提供者。其他協力廠商備份程式可以使用自己的提供者。下列範例輸出顯示 VSSadmin list providers 命令所產生的結果。

vssadmin 1.1 - 磁碟區陰影複製服務管理命令列工具

(C) Copyright 2001 Microsoft Corp.

提供者名稱:'Microsoft 軟體陰影複製提供者 1.0'

提供者類型:系統

提供者識別碼:{GUID}

版本: 1.0.0.7

為了備份成功,請確保列出提供者且 Exchange 編寫器處於穩定狀態。如需您可執行之其他測試的相關資訊,請在命令提示字元中輸入 VSSadmin /?

追蹤磁碟區陰影複製服務

如果仍然遇到備份問題,您應該啟用 VSS 追蹤功能。如需如何啟用追蹤功能的相關資訊,請參閱 Microsoft 知識庫文章 887013 如何在 Microsoft Windows Server 2003 中啟用磁碟區陰影複製服務的偵錯追蹤功能

您可以建立批次檔以設定文章 887013 中描述的登錄項目。若要這麼做,請將下列文字輸入或複製到文字檔中。然後,將檔案儲存為 "EnableVSSTracing.bat"。這個批次檔會將追蹤資訊儲存在名為 C:\trace.txt 的檔案中。

net stop swprv 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceFile /t REG_SZ /d C:\trace.txt /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceLevel /t REG_DWORD /d 0xffffffff /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceEnterExit /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceToFile /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceToDebugger /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceFileLineInfo /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceForceFlush /t REG_DWORD /d 0 /f

若要追蹤 VSS,請遵循下列步驟:

  1. 修改 Windows 登錄以啟用追蹤功能。若要這麼做,請遵循文章 887013 中的步驟,或執行您先前建立的 EnableVSSTracing.bat 檔。

  2. 重現您所遇到的 VSS 問題。

  3. 在您收到對應於您要疑難排解之問題的 VSS 錯誤之後,請停止 VSS 服務。若要這樣做,請執行下列命令:

    net stop VSS
    net stop SWPRV
    
  4. 停用 VSS 追蹤功能。若要這樣做,請執行下列命令:

    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /f
    
  5. 檢閱所產生的追蹤檔。

追蹤 Exchange 編寫器

Exchange 編寫器是與 Microsoft Exchange Information Store 一起提供的內建 VSS 編寫器。此編寫器會在 Store.exe 處理程序中執行。當 VSS 要求者 (VSS 備份程式) 要求來自主動資料庫的 VSS 備份時,便會使用 Exchange 編寫器。就像 Exchange Server 2007 中的所有其他元件一樣,追蹤是以事件追蹤記錄 (ETL) 檔的形式產生。

資訊儲存庫會提供下列適用於 Exchange 編寫器的標記。

標記 描述

TagVSS

在 Exchange Server 2007 中,Exchange 編寫器可用的唯一標記是 TagVSS。這個標記結合了在 Exchange 2003 中提供的所有 VSS 標記,其中包含下列項目:

  • Exchange VSS Snapshot Initialize

  • Exchange VSS Snapshot OnIdentify

  • Exchange VSS Snapshot OnPrepareBackup

  • Exchange VSS Snapshot OnThaw

  • Exchange VSS Snapshot OnPostSnapshot

  • Exchange VSS Snapshot OnBackupComplete

  • Exchange VSS Snapshot OnPreRestore

  • Exchange VSS Snapshot EcAddComponents

  • Exchange VSS EcPrepareJetInitBackup

  • Exchange VSS Snapshot EcBuildSGArrayFromWriteComp

note附註:
Exchange 編寫器的預設凍結逾時值為 20 秒。

追蹤複本編寫器

Exchange 叢集複本編寫器是與複寫服務一起提供的內建 VSS 編寫器。此編寫器會在 M.E.Cluster.Replay.exe 處理程序中執行。當 VSS 要求者 (VSS 備份程式) 要求來自複製資料庫的 VSS 備份時,便會使用 Exchange 叢集複本編寫器。就像 Exchange Server 2007 中的其他元件一樣,追蹤是以 ETL 格式產生。

複寫服務會提供下列適用於 Exchange 叢集複本編寫器的標記。

標記 描述

ReplicaVssWriterInterop

  • 此追蹤提供 VSS 編寫器與複寫服務之間的互動。

使用 Extra.exe 追蹤複本編寫器

您也可以使用 Microsoft Exchange 疑難排解助理員 (Extra.exe) 來追蹤 Exchange VSS 編寫器。若要這樣做,請遵循下列步驟:

  1. 從 Exchange 管理命令介面中執行下列命令:

    Set-EventLogLevel "MSExchange Repl\Exchange VSS Writer" -level expert
    
  2. 依序按一下 [開始] 及 [執行],並輸入 extra.exe,然後按一下 [確定]。

  3. 按一下 [移至歡迎使用畫面],然後按一下 [選取工作]。

  4. 按一下 [追蹤控制],如果您收到的訊息表示 Exchange 沒有可解譯追蹤的模組,則按一下 [確定]。

  5. 指定用來儲存追蹤檔的位置,然後將追蹤檔大小設為 200 MB。

  6. 按一下 [設定手動追蹤標記],然後再按一下以選取下列追蹤類型核取方塊:

    • PFD

    • 嚴重

    • 錯誤

    • 警告

    • 資訊

    • 偵錯

  7. 在 [要追蹤的元件] 清單中,按一下以選取 [Cluster.Replay] 核取方塊。

    note附註:
    此核取方塊僅適用於叢集的 Exchange 環境。
  8. 在 [追蹤標記] 清單中,按一下以選取下列核取方塊:

    • ReplicaInstance

    • ReplicaVssWriterInterop

  9. 在 [要追蹤的元件] 清單中,按一下以選取 [儲存區] 核取方塊。

  10. 在 [追蹤標記] 清單中,按一下以選取下列核取方塊:

    • tagVSS

    • tagMostError

  11. 按一下 [開始追蹤]。

  12. 啟動 Exchange VSS 備份。如果備份失敗,請在 Exchange 疑難排解助理員中按一下 [立即停止追蹤]。

執行 BETest 工具

BETest 是可測試進階備份與還原作業的 VSS 要求者。這個工具可用來測試應用程式使用複雜 VSS 功能的情形,例如下列功能:

  • 增量及差異備份

  • 複雜還原選項,如權威復原

  • 向前復原選項

您可以利用 BETest 工具來取得 Exchange 儲存群組的 VSS 備份,然後測試 Exchange VSS 編寫器。BETest 可以執行 VSS 要求者可執行的大多數作業。您也可以在 Exchange 2007 伺服器上使用 BETest,以取得主動與複本資料庫的 VSS 快照集。

VSS SDK 7.2 有 BETest 可以使用。若要取得此 SDK,請參閱 Microsoft 下載中心文章:磁碟區陰影複製服務 SDK 7.2 (英文)。

SDK 中可用的 BETest 版本會使用文字版的 Components 檔案 (Components.txt)。Windows SDK 中有使用 XML 版 Components.txt 檔的 BETest 版本可以使用。如需如何取得及使用 Windows SDK 版 BETest 的相關資訊,請參閱 BETest 工具 (英文)。

note附註:
本主題中的步驟在 BETest 中使用文字版的 Components 檔案。

若要使用 BETest 工具,請遵循下列步驟:

  1. 取得及安裝 BETest 工具。根據預設,此工具的 i386 版本會安裝於下列資料夾中:

    C:\Program Files (x86)\Microsoft\VSSSDK72\TestApps\betest\obj\i386

    note附註:
    BETest 也有 AMD64 版本可以使用。在執行 BETest 之前,一律要變更至適當作業系統版本的目錄。
  2. 執行下列命令以取得可用編寫器的清單:

    betest.exe > AvailableWriters.txt
    
  3. 建立 Components.txt 檔案,以指定 BETest 的 VSS 元件。Components 檔案會使用下列格式指定選項:

    "<WriterId>": "<component-logical-path>" {"target" # "new target", ...}, ..."<component-logical-path>" : '"<subcomponent-logical-path>,...";
    
  4. 取得 WriterId 項目的值,以便用於 Components.txt 檔案。若要這樣做,請遵循下列步驟:

    1. 使用文字編輯器 (例如記事本) 開啟 AvailableWriters.txt。

    2. 搜尋下列文字:

      Microsoft Exchange 編寫器

    3. 請記下 [WriterId] 欄位的值。例如,76fe1ac4-15f7-4bcd-987e-8e1acb462fb7

  5. 決定 Components.txt 檔案中的 <component-logical-path> 預留位置的路徑。此路徑可以用下列其中一種格式指定:

    • <logical-path>

    • <logical-path>\<component-name>

    • <component-name> (如果沒有邏輯路徑的話)

    例如,Microsoft Exchange Server\Microsoft Information Store\<ServerName>\<StorageGroupGUID>

  6. 將這些值加入至 Components.txt 檔案,然後儲存檔案的變更。下列是 Components.txt 檔案的內容範例。

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\<Server Name>\68e5b198-468e-4328-8e8d-8d5276b8e355 ";

    在此範例中,第一個 GUID 代表 Exchange 編寫器。第二個 GUID 代表特定的儲存群組。如果有多個儲存群組,您可以選擇只對一個儲存群組執行 BETest 工具。若要取得特定儲存群組的 GUID,您可以使用 LDP.exe 工具或 Get-StorageGroup 指令程式。如果您使用 LDP 工具,請找出下列物件,然後記下詳細資料窗格中的 objectGUID 值。

    CN=First Storage Group,CN=InformationStore,CN=<ServerName>,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=First Organization,CN=Organizations,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=fourthcoffee,DC=com

    note附註:
    此路徑使用組織與系統管理群組的預設名稱。請針對您的組織適當地修改此路徑。

    若要經由命令列取得儲存群組 GUID,請在 Exchange 管理命令介面執行下列命令:

    Get-StorageGroup  <SG name> |fl Guid
    

    資料流備份只能從主動儲存群組來支援。如果想要備份被動資料庫副本,您必須使用 VSS 備份。如果此資料庫是叢集連續複寫資料庫,或您使用本機連續複寫,則 Components.txt 檔案會類似於下列其中一項。

    若為 CCR 複本副本

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\Replica\<ClusteredMailboxServerName>\<StorageGroupGUID> ";

    若為 LCR 複本副本

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\Replica\<Server Name>\68e5b198-468e-4328-8e8d-8d5276b8e355 ";

    note附註:
    資料流備份的成功與否並不表示 Exchange VSS 編寫器的健全狀態。
  7. 儲存 Components.txt 檔案之後,請執行下列命令來啟動 BETest:

    BETEST.exe /B /E /T 1 /S output.XML /C components.txt /D c:\betest > Output.txt
    

    此命令會在 C:\BETest 目錄中建立備份。

    note附註:
    您在執行此命令時也可以不使用 /E 選項。
  8. 如果備份不成功,請檢查 Output.txt 檔案的內容,以檢閱已記錄的任何錯誤訊息。

相關資訊

Exchange Server 2007 Service Pack 1 (SP1) 與數個 Exchange 更新彙總套件都包含 VSS 問題的修正程式。建議您同時安裝最新的 Exchange 2007 Service Pack 與 Exchange 的最新更新彙總套件。如需相關資訊,請參閱如何取得 Exchange 2007 的最新 Service Pack 或更新彙總套件