共用方式為


當您嘗試從叢集環境中執行的虛擬機取得完整記憶體傾印檔案時,損毀的記憶體轉儲檔案

本文提供當您嘗試從虛擬機取得完整記憶體傾印檔案時,產生損毀記憶體傾印檔案的問題的解決方案。

原始 KB 編號: 2913486

徵兆

您有在 Windows Server 2012 或 Windows Server 2008 R2 的叢集環境中執行的虛擬機。 當您嘗試從虛擬機取得完整記憶體傾印檔案時,會產生損毀的記憶體轉儲檔案。 當記憶體傾印檔案載入時,您可能會收到下列訊息:


此傾印檔案部分損毀。

KdDebuggerDataBlock 不存在或無法讀取。


GetContextState 失敗,0xD0000147

無法取得程式計數器

GetContextState 失敗,0xD0000147

無法取得目前的計算機內容 NTSTATUS 0xC0000147

此外,您可能會注意到寫入完整記憶體傾印檔案未完成,而且虛擬機會在叢集中的另一個節點上重新啟動。

原因

發生此問題的原因是 已針對虛擬機選取 [啟用虛擬機 的活動訊號監視] 選項。 此選項會在一分鐘后重設叢集虛擬機(預設值),而叢集虛擬機需要超過一分鐘的時間才能完成寫入記憶體轉儲。

注意

虛擬機與 Virtual Machine Manager 之間的活動訊號每隔幾秒鐘就會發生一次。 最多可能需要一分鐘才能偵測虛擬機已關閉,因為虛擬機資源會在其 isAlive 進入點函式中檢查 Virtual Machine Manager 的活動訊號狀態。 根據預設,isAlive 會每分鐘發生一次。 不過,活動訊號可能會在一分鐘間隔前停止 30 秒。 在此情況下,叢集可以在相同的伺服器上重新啟動虛擬機,或將其故障轉移至另一個節點。

解決方法

若要解決此問題,請停用 [啟用虛擬機 的活動訊號監視] 選項。

選項 1:從 GUI 變更設定

  1. 開啟 [容錯移轉叢集管理員]。
  2. 按兩下 [ 角色],然後尋找虛擬機資源。
  3. 在 [資源] 索引標籤上,以滑鼠右鍵按兩下虛擬機。
  4. 按兩下 [ 屬性],然後按兩下 [ 設定] 索引標籤。
  5. 在 [活動訊號設定] 中,按下即可清除 [啟用應用程式健康情況監視的自動復原] 複選框。
  6. 按兩下即可清除 [啟用虛擬機 的活動訊號監視] 複選框,然後按兩下 [ 確定]。

選項 2:使用 Windows PowerShell 變更設定

  1. 啟動 Windows PowerShell。

  2. 檢查虛擬機名稱。 若要這樣做,請輸入下列 Windows PowerShell 命令:

    PS C:\> Get-ClusterResource
    
  3. 檢查是否已 選取 [啟用虛擬機 的活動訊號監視] 和 [啟用應用程式健康情況監視 的自動復原] 選項。 若要這樣做,請輸入下列 Windows PowerShell 命令:

    PS C:\> Get-ClusterResource <VirtualMachineName> | Get-ClusterParameter CheckHeartbeat
    
  4. 當 CheckHeartbeat 值為 1 時,會選取這兩個選項。 若要取消這兩個選項,請將此值變更為 0。 若要這樣做,請輸入下列 Windows PowerShell 命令:

    PS C:\> Get-ClusterResource <VirtualMachineName> | Set-ClusterParameter CheckHeartbeat 0
    

    如果您想要只取消 [ 啟用應用程式健康情況監視 的自動復原] 選項,您應該執行下列 Windows PowerShell 命令:

    PS C:\> (Get-ClusterResource <Object>).EmbeddedFailureAction = 1
    

其他相關資訊

小型和核心記憶體傾印檔案已成功寫入。 這是因為寫入這些檔案所需的時間不會超過一分鐘的臨界值。