Share via


如何解决DPM 2010中Hyper-V虚拟机无法被保护的问题

[本文作者为APGC System Center 支持组 工程师 Henry Zhu]

我们使用DPM 2010备份Hyper-V虚拟机;当我们创建保护组去添加这些虚拟机的时候,DPM弹出一个对话框显示一下信息。

One or more prerequisites for protecting this data source is missign.
Ensure that the following prerequiste software is installed on all the nodes in the cluster:
Windows Server 2008 with
Knowledge Base article 948465 (https://support.microsoft.com/kb/948465)
AND
Knowledge Base article 971394 (https://support.microsoft.com/kb/971394)
-OR-
Windows Server 2008 R2 with
Knowledge Base article 975921 (https://support.microsoft.com/kb/975961)
AND
Knowledge Base article 975354 (https://support.microsoft.com/kb/975354)
If you have already installed the required prerequisite, refresh the agent status in the management tab and try again
ID: 31314

但奇怪的是,在被保护的Hyper-V宿主机器上(Windows Server 2008 R2),KB 973921和KB 975354已经安装。这是我们按照下面的方法去排错。

1. 我们选择了一台机器升级了Hyper-V的Intergration Components并重启该虚拟机,但问题仍然存在。

2. 我们根据文档https://technet.microsoft.com/en-us/library/ff399140.aspx安装了如下补丁,但问题仍然存在。

975921  You may be unable to perform certain disk-related operations after an exception when a hardware provider tries to create a snapshot in Windows Server 2008 R2 or in Windows 7
https://support.microsoft.com/default.aspx?scid=kb;EN-US;975921 

3. 就目前的情况来看,我们已经为这台Hyper-V机器安装了所有必须的hotfix,但仍然无法创建保护。所以我们怀疑可能在安装某些hotfix的时候发生了一些问题。所以,我们安装了以下工具来查询Hyper-V机器上所有的hotfix

947821  Description of the System Update Readiness Tool for Windows Vista, for Windows Server 2008, for Windows 7, and for Windows Server 2008 R2
https://support.microsoft.com/default.aspx?scid=kb;EN-US;947821

4. 当运行完上面的工具后,我们在输出文件CheckSUR.log中发现下面的错误。

Checking System Update Readiness.
Binary Version 6.1.7600.20822
Package Version 10.0
2011-02-14 15:25

Checking Windows Servicing Packages
Checking Package Manifests and Catalogs
(f) CBS MUM Corrupt 0x00000000 servicing\Packages\Package_for_KB2416400_RTM~31bf3856ad364e35~amd64~~6.1.1.2.mum Expected file name Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7600.16385.mum does not match the actual file name
Checking Package Watchlist
Checking Component Watchlist
Checking Packages
Checking Component Store

Summary:
Seconds executed: 498
Found 1 errors
  CBS MUM Corrupt Total count: 1

Unavailable repair files:
                servicing\packages\Package_for_KB2416400_RTM~31bf3856ad364e35~amd64~~6.1.1.2.mum
                servicing\packages\Package_for_KB2416400_RTM~31bf3856ad364e35~amd64~~6.1.1.2.cat

从这个log来看,KB2416400安装确实出现问题,有两个文件发生了损坏。在这种情况下,我们可以按照下面的步骤去修复这两个文件。

5. 首先运行下面的命令来获得c:\Windows\Servicing\Packages上足够的权限

takeown /F c:\Windows\Servicing\Packages /D y /R
cacls c:\Windows\Servicing\Packages /E /T /C /G "UserName":F

注: 请将UserName替换成您的登录账号

6. 下载KB 2416400 (https://support.microsoft.com/default.aspx?scid=kb;en-US;2416400)。

7. 使用下面的命令解压缩这个文件

Expand -F:* Windows6.1-KB2416400-x64.msu C:\

这个命令运行成功后,你会在解压缩的目录中找到Windows6.1-KB2416400-x64.cab

Expand -F:* Windows6.1-KB2416400-x64.cab C:\

这个命令会解压缩大量的文件。

8. 在这些文件中找到update.mum和updateupdate.cat这两个文件,拷贝出来,将他们分别重命名为

Package_for_KB2416400_RTM~31bf3856ad364e35~amd64~~6.1.1.2.mum
Package_for_KB2416400_RTM~31bf3856ad364e35~amd64~~6.1.1.2.cat

并复制到c:\Windows\Servicing\Packages中

此时,我们就完成了整个hotfix修复的过程。当我们再次使用DPM 2010去备份这些Hyper-V的虚机时,保护组被成功创建出来,保护可以正常进行。

- Henry Zhu