我见过的最糟糕的映像结果是使用黄金映像(以及带有多包的 dd)安装 Solaris 系统的系统。他们的安装程序和补丁程序太慢了,这似乎是有道理的。不幸的是,它们使完全改变已安装系统的硬件变得非常重要。每种硬件类型都有自己的黄金映像。一个微不足道的构建更改将需要对数十个磁盘进行更改。与使用 Kickstart 的 Linux 组相比,第二差的是 Windows 组映像机器(由于安装程序不完善,这仍然是合理的)。Linux 小组可以在几分钟内部署对 DNS 配置的更改。(一分钟更改安装后,然后是测试构建,然后手动将配置推送到现有机器)。Windows 组必须启动每个黄金映像,进行更改,撤消由引导黄金映像引起的麻烦,然后进行测试构建。(他们还必须购买特殊工具来自动更改多台机器上的系统配置,以更改现有机器)。Windows 团队还可以选择重新安装黄金映像以进行更改,但由于这是手动安装操作系统和数十个应用程序,每次都会略有不同,需要数周的测试,并且生产系统的风险会减少与其他可能的相同。
请注意,在这两种情况下,使用黄金映像的 Windows 和 Solaris 设置都没有以最佳方式处理,相关管理员做出的一些选择掩盖了缺乏能力。但是从一个不合理的设计开始并没有帮助。
我不同意这里的一些答案。如果操作正确,您可以拍摄图像并将其加载到使用不同硬件的多个系统上。我个人见过支持多达 30 种不同系统的图像。
我对您的问题的回答是,如果您对图像的创建非常敏感,请使用这两种方法。创建自动安装,然后 sysprep 结果。这将导致可重复的、自我记录的图像。
此外,如果您可以在保存状态下写入磁盘映像,则可以通过包含可以在 sysprep 期间运行的脚本来扩展映像上的内容。或者,您可以在进行 sysprep 之前备份您的系统,然后扩展它并在之后进行 sysprep。
这两种方法我都做了,效果很好。
关于 SID 问题,您应该始终对新映像使用 Sysprep(尽管 NewSID 可以工作),这将解决任何 SID 问题,但是,还有其他将 GUID 写入注册表的应用程序需要清理。在我的脑海中,Altiris 和 WSUS 就是这样做的两个。
成像是一个失败的命题。完整的 CentOS kickstart 安装需要不到 10 分钟。如果您的安装速度明显较慢,那就是值得研究的问题。
映像的问题是您必须保留“黄金”副本并在对构建进行更改时对其进行更新。这意味着您仍然需要一种无人参与安装的机制,并且每次更改都需要进行这样的安装,更改映像(需要为您的环境自动定制的机制),并使该副本成为黄金副本。如果您要直接对您的黄金副本进行更改,那么经过多年的修补、升级等,您很快就会陷入混乱。
如果您必须对系统进行映像,那么您应该对操作系统的默认构建进行映像,并使您的安装后工作(本地定制)在每台新机器上单独进行。这样,对构建的细微更改将不需要重建黄金副本。
如果您的硬件并非完全相同,您可以利用安装程序的自动检测/配置。我在 RedHat/CentOS 3、4 和 5 以及各种硬件之间使用了几乎相同的 Kickstart 配置。
我见过的最糟糕的映像结果是使用黄金映像(以及带有多包的 dd)安装 Solaris 系统的系统。他们的安装程序和补丁程序太慢了,这似乎是有道理的。不幸的是,它们使完全改变已安装系统的硬件变得非常重要。每种硬件类型都有自己的黄金映像。一个微不足道的构建更改将需要对数十个磁盘进行更改。与使用 Kickstart 的 Linux 组相比,第二差的是 Windows 组映像机器(由于安装程序不完善,这仍然是合理的)。Linux 小组可以在几分钟内部署对 DNS 配置的更改。(一分钟更改安装后,然后是测试构建,然后手动将配置推送到现有机器)。Windows 组必须启动每个黄金映像,进行更改,撤消由引导黄金映像引起的麻烦,然后进行测试构建。(他们还必须购买特殊工具来自动更改多台机器上的系统配置,以更改现有机器)。Windows 团队还可以选择重新安装黄金映像以进行更改,但由于这是手动安装操作系统和数十个应用程序,每次都会略有不同,需要数周的测试,并且生产系统的风险会减少与其他可能的相同。
请注意,在这两种情况下,使用黄金映像的 Windows 和 Solaris 设置都没有以最佳方式处理,相关管理员做出的一些选择掩盖了缺乏能力。但是从一个不合理的设计开始并没有帮助。
Kickstart 运行得非常好,甚至没有理由考虑不这样做(我对此有很多小抱怨,但如果由成像机完成,情况会差一千倍)。如果你的安装程序是 Anaconda 以外的东西,并且它的自动安装不如 kickstart 有用,你应该考虑那个发行版是否真的是为企业使用而设计的。
驱动器成像速度更快,但您的硬件必须非常相似才能正常工作。自定义映像也更难,您需要一个用于 Web 服务器、电子邮件服务器等的基本映像。通过自动安装,您可以让所有机器从同一网络位置安装,但根据服务器类型使用不同的脚本您想要而不是需要存储和创建多个图像。
我无法真正评论 Linux 方面的事情,但对于 Windows,我想说在图像上使用自动化过程的专业人士并不多。
Microsoft 提供了很多指导,请点击此处。
证据就在布丁里。Microsoft 现在为 Vista、Windows 2008 和 Windows 7 使用基于映像的部署。使用上面链接中描述的新工具和流程,您可以将 Windows 部署到任何 HAL 类型(包括 XP),并提供完整的驱动程序支持,并且不需要大量工作.
Microsoft 完全支持通过映像部署 Windows,使用 Sysprep 在部署映像之前对其进行“工厂密封”。Sysprep 重置 SID 并实质上为新机器准备映像。
但是,出于一个简单的原因,强烈建议(除非您是一家小公司)也进行完全脚本化的安装。每次需要更新映像时,您有两种选择:
1) 不断修改现有镜像,每次都重新进行系统准备。当您一遍又一遍地修补、修改和系统准备相同的映像时,这最终会导致问题。
2)从头开始重新创建图像,这是非常可取的。但是,如果您没有脚本构建,那么您将面临在构建之间出现大量不一致的高风险。
所以,总结一下:
所有这一切的另一个问题是 Windows Vista、2008 和 7 都使用基于映像的安装,因此使用基于映像的安装与脚本安装的收益无论如何都消失了。
取决于您将安装哪些应用程序以及将图像保持多长时间不更新。
每个月都会有很多更新,所以即使在从图像恢复盒子之后,你也需要升级它。
关于 SID - 据我所知,如果您生成唯一的私钥 [用于 ssh、https、tls,例如用于 smtp/pop3 服务器等],这应该可以正常工作。唯一的主机名生成也会很好。这可能因发行版而异,我主要使用的是 debian,并且在使用该操作系统克隆虚拟机时没有任何问题。
看看这个非常相似的问题:
https://stackoverflow.com/questions/398410/windows-disk-cloning-vs-automatic-installation-of-servers
(我不久前在 stackoverflow.com 上问过它,当时 serverfault.com 不存在)。
特别是如果你有不同的硬件,我建议自动化。对于 windows 看无人值守。
http://unattended.sourceforge.net/