从不同的 VHD 文件(但为旧文件的副本)重新启动虚拟机

从不同的 VHD 文件(但为旧文件的副本)重新启动虚拟机

我想知道是否有其他人这样做过并且随后遇到了任何问题,或者根据我的描述,是否有人可以建议我可能遇到的问题类型:

我有 Windows 2008 R2 Datacenter 作为我的 Hyper-v 主机,并在其上运行 Windows 2008 R2 Ent 客户 VM。

在进行重大更新之前,我保存了客户机 VHD 文件的副本(这是客户机虚拟机上的 C: 驱动器)。这不是快照,只是 VHD 文件的复制/粘贴。

在升级 SQL Server 2012 时遇到一些困难和挫折,我决定放弃故障排除(我有一个短暂的维护窗口) - 而是停止了 VM。然后将 VHD 文件更改为我之前保存的上一个副本。

VM 已启动,但域控制器无法识别。我将其从域中删除并重新添加,之后没有出现重大问题。我完成了升级,之前没有出现问题,并且安装了 Windows 更新,也没有出现问题。

这被认为是不好的做法吗?我可以保持此虚拟机原样吗,还是需要从头开始重建以避免操作系统出现异常?如果您是首席系统管理员并且这是生产机箱,您会允许这样做吗?谢谢

答案1

首先,您需要了解(可能已经知道也可能不知道)有关 Windows 机器/域的一些基本概念:

  1. 计算机和用户一样都是安全主体

  2. 名称只是对底层 SID 的人性化引用

  3. 计算机在启动时向域进行身份验证

  4. 计算机账户也有密码(默认每 30 天更改一次)

基本上,当您将旧 VHD 插入计算机时发生的事情是(我敢打赌),计算机帐户的本地密码与 DC 的计算机帐户密码不匹配,因为密码在您执行备份和恢复之间的某个时间发生了更改。因此,域控制器不会让计算机进行身份验证,您看到的错误是信任关系失败。

这依赖于一两个假设,最值得注意的是您的备份和发生故障的计算机没有不同的 SID,这也会破坏域信任。这通常发生在您重命名计算机或将计算机加入与现有帐户同名的域时。新重命名的计算机将尝试使用其新 SID 进行身份验证,但名称映射到旧 SID,因此当 AD 检查时,SID 不匹配并且身份验证失败。

因此,无论哪种方式,当您“恢复”旧备份时,您基本上就破坏了虚拟机与域之间的身份验证。我相信您能明白为什么这很糟糕。(如果只是机器密码,而不是不同的 SID,那就没那么糟糕了,值得一提。)

为什么像你那样做是“不好的做法”是主观的,不同的管理员会给出不同的答案(或不同的具体顾虑),但我的答案基本上是,这是不好的做法,因为有更好的方法可以做到这一点,既不会破坏域身份验证,也不会增加复杂性和未知数。(备份有多久了?从那时到现在,系统上发生了什么变化?什么依赖于这些变化,这些变化可能会破坏或导致极难解决问题?等等。)这也是不好的做法,因为听起来你没有实际有效的备份,或者在需要时没有快速从[真实]备份中恢复的过程。这非常糟糕,出于某些原因,我希望你不需要澄清。

话虽如此,听起来你还是比较安全的。(当然,假设旧备份没有丢失大量 SQL 数据,或者安装了旧版本的东西,或者任何类似的基本功能。)不同的计算机帐户密码不会在任何地方被引用,而且通常你的计算机的完整 SID 也不会在 AD 之外被引用,因此更改它不应该会引起问题。(但就像任何经历过一两次的管理员一样,我也见过一些让你毛骨悚然的东西,并导致我认可那些本来是绝对的陈述。)

希望这有帮助。

答案2

域成员定期同步域成员身份凭证。当系统长时间处于离线状态时,域将不再识别系统凭证。只要您不重命名系统,您就可以重新加入域而不会出现问题。请注意,您也可以尝试重新NLTEST /SC_RESET:domain_name\DC_name加入域而不是重新加入域

答案3

问题在于使用域控制器执行此操作。它有一个包含唯一编号的数据库,这些编号与其他域控制器共享并保持同步。突然将其中一个恢复为旧的不同步编号是一个坏主意。

编辑:我可能说得太简短了。让我再补充三点:

  1. 因为唯一需要从备份映像还原域控制器的情况当所有域控制器都丢失时,应该不需要权威恢复。来源:微软技术网
  2. 数据库通常有特定需求。如果数据库使用率很高,那么您需要调整整个服务器以适应它。这包括 CPU、RAM(RAM 大小与活跃使用的数据集)和驱动器。(请参阅 SF 中关于 RAID 的典型答案“哪些是广泛使用的 RAID 级别以及我何时应该考虑它们?”的最后一部分。我最近似乎经常引用这个)。
  3. 域控制器不需要太多,但您希望它反应灵敏。您目前购买的最慢的新服务器就足够了,但请尝试在服务器上将其作为唯一任务运行。即使您需要为此购买新服务器。其他服务器可能会重新启动或关闭,但在 ms 网络中,您需要至少一个具有快速响应资源的 DC。

相关内容