Mas*_*imo 6 hyper-v bsod boot windows-server-2012-r2 hyper-v-server-2012-r2
我有一个 Hyper-V 2012 R2 集群,4 个 Dell PowerEdge R620 服务器通过 FC 连接连接到一个 Dell PowerVault MD3600F 存储阵列;这一切都非常简单,所有服务器都运行 WS2012R2,集群是几个月前新构建的,所有驱动程序和固件都是最新的,Windows 更新到最新的可用补丁(即使是两天前发布的补丁)。还有一个 SCVMM 2012 R2 服务器管理整个事情,但这对于手头的问题似乎并不重要。
这个集群上运行着几个虚拟机;其中一些是运行 Windows Server 2008 R2 的第 1 代 VM,而大多数是运行 Windows Server 2012 R2 的第 2 代 VM;这些也包括最新的可用更新;它们实际上是从集群之后不久构建的模板中部署的,并且会在 Microsoft 发布新补丁时定期更新。
一切都运行良好,但有时(即没有明显的原因或原因)虚拟机将无法启动,出现可怕的INACCESSIBLE_BOOT_DEVICE错误代码而崩溃;这仅在启动(或重新启动)时发生:运行时没有 VM 崩溃。
每当这种情况发生时,就无法让故障虚拟机再次启动;这是两周前第一次发生在虚拟机上,该虚拟机还没有运行任何生产工作负载(它是新部署的);我们非常急于让它工作,因此我们只是刮伤它并部署了一个新的;但是没有找到问题的根本原因。
然后两天前又发生了,当时我们在修补了几个虚拟机后重新启动了它们;其中三个没有重新启动,而其他一些启动没有任何问题。
即使在安全模式下,故障虚拟机也无法启动;但是,当启动到 Windows 恢复环境时(从系统本身,因此从本地(虚拟)磁盘,而不是从 Windows DVD;这意味着确实可以访问虚拟磁盘),一切似乎都正常:启动管理器正确列出在要启动的系统(的输出bcdedit /enum all /v实际上与工作 VM的输出相同),所有卷都可以访问,甚至chkdsk根本没有显示任何错误。唯一的异常是,当运行bootrec /scanos或 时bootrec /rebuildbcd,该工具说它无法找到任何 Windows 安装(尽管 C: 卷在那里并且完全可读)。
这仅发生在 WS2012R2 第 2 代 VM 上(至少到目前为止),因此我假设它是由 EFI 仿真和/或 EFI 引导加载程序中的某些问题引起的;然而,这只是我的一个假设。
我提到更新的原因是因为我知道这之前发生过,KB2919355对此负责;此外,微软最近发布了另一个大型更新KB3000850,这也适用于主机、虚拟机和 WS2012R2 模板。
(巧合的是,在此更新发布后的第二天,Microsoft 经历了整个 Azure 云平台的全球崩溃,这与我们的集群发生的事情有着惊人的相似之处;但我只是在这里猜测)。
我已经与 Microsoft 建立了一个支持案例,但我也在此处发帖,也许有人可以提供帮助;当然,如果微软提供了解决方案,我会在虚拟机重新上线后立即发布。
事件发生近十年后,我觉得有必要承认:罪魁祸首是我。
有关技术细节,请参阅我的其他答案,但我必须将其解决,因此我发布了一个新答案并将其标记为已接受。
是我的错。
为了在已经拥有最新 Hyper-V 驱动程序的黄金映像上获取最新的 Hyper-V 驱动程序,我进行了一次错误的尝试,使用以下命令强行注入它们:DISM.
这首先就是导致问题的原因。
当时我羞于承认这一点,所以我将其归咎于任何事情,但实际上这是我的错。