我们在 2008 R2 域中拥有两台运行 DFS-R(名为dfs01
和)的 Server 2008 R2 服务器。dfs02
今天我发现服务器上的文件dfs01
无法复制到dfs02
。所以我使用了命令
dfsrdiag backlog /rgname:<group> /rfname:<folder> /sendingmember:dfs01/receivingmember:dfs02
检查积压情况。执行命令后,出现以下错误:
无法执行 GetVersionVector 方法。错误:-2147217406 <0x80041002> 操作失败。
我该如何解决这个问题?
答案1
安装修补程序 2663685 后会出现这种情况http://support.microsoft.com/kb/2663685
它会改变 DFSR 异常关闭后的行为,以便不再自动重启,而是保持关闭状态,允许您执行可能需要的任何备份,然后您按照文章所述运行 WMI 命令来重新启动它。
警告 - 在群集上应用此修补程序意味着它实际上可用性不高,因为故障转移将导致接管节点上的 DFSR 停机。您可以通过注册表设置进行调整。就我个人而言,我即将撤消我们整个庄园的此修补程序,因为它带来的麻烦比它的价值更大,DFSR 崩溃了,直到我们周一到达时才恢复在线,积压问题只会越来越大
答案2
重新启动并运行的最简单方法是转到事件查看器,然后转到Applications and Services Log > DFS Replication
。查找事件 2213:
您需要运行的确切命令就在那里。
此外,要将 DFS-R 恢复为原始设置,运行这个:
wmic /namespace:\\root\microsoftdfs path dfsrmachineconfig set StopReplicationOnAutoRecovery=FALSE
答案3
我刚刚遇到了类似的问题,但修补程序 2663685 不是我的问题。就我而言,dfsrdiag 适用于部分复制文件夹,但不是全部。复制文件夹分布在不同的驱动器上。
长话短说,由于数据库损坏,DFSR 无法处理复制的文件夹。您可以使用此命令验证驱动器是否丢失。它应该列出您拥有 DFSR 文件夹的所有驱动器。
wmic /namespace:\\root\microsoftdfs path dfsrvolumeinfo get volumepath, VolumeGuid
我的缺少一个 DFSR 卷。它可能仍会列在配置中,因此如果您不确定是否缺少任何内容,可以使用此命令进行检查。
wmic /namespace:\\root\microsoftdfs\ path dfsrVolumeConfig get *
还请检查 C:\Windows\debug\dfsr*.log 中是否存在有关驱动器未准备好或无法读取序列号的其他消息。
为了解决这个问题,我不得不停止 DFSR 并删除/重命名数据库。然后它开始同步,重建一段时间后命令终于起作用了。
- 以系统身份打开 cmd 提示符(我不喜欢修改“系统卷信息”的权限,但你可以避免这种情况。谷歌一下如何操作。)
- 转到损坏数据库的驱动器,即“D:”
- cd“系统卷信息”
- 光盘“DFSR”
- 重命名 Config\Volume_.XML Config\Volume_.OLD
- 重命名 Config\Replica_.XML Config\Replica_.OLD
- 重命名数据库_数据库__OLD
- 网络启动 dfsr
- dfsrdiag pollad
此外,DFSR 日志非常详细,默认情况下限制为 1000 个日志文件。请将日志级别更改为合理的级别,因为一旦达到 1000 个,DFSR 就会停止。
wmic /namespace:\\root\microsoftdfs path dfsrmachineconfig set debuglogseverity=3
答案4
在我们的案例中,其中一台服务器上的一个卷磁盘空间不足。幸运的是,它是一台虚拟机,所以我只是扩展了它,重新启动了 DFS,一切就都好了。我读了这篇文章,在寻找简单的解决方案之前,我查阅了知识库文章和注册表黑客。奥卡姆剃刀再次获胜。