如何pipe理对克隆虚拟机集的更改?

我正在努力build立一个可行的发展模式。 我想知道是否有人有虚拟机软件的build议,以及要执行以下操作的过程:

  • 开发人员获取虚拟机的黄金映像的副本,并在自己的工作站上运行VM guest虚拟机。 (理想情况下,当开发人员工作站拥有所有闲置的function时,我不想为服务器硬件/软件集中托pipe虚拟机)
  • 虚拟机的黄金映像被更新 – 使用差异磁盘,快照或select的虚拟机供应商中的等价function – 每个复制的开发人员虚拟机都会根据新的更改进行更新(理想情况下,我不部署整个映像 -黄金形象)
  • 是免费的( 也许是一厢情愿的想法)
  • 如前所述 – 不是一个基于服务器的解决scheme(除了在networking上存储黄金映像和差异) – 我不想要更多的服务器和软件来pipe理
  • 必须支持64位客户端(Virtual PC和MS Virtual Server出…)

这是一个梦想吗?

鉴于我的限制,我想我可以selectVMWare WorkstationVirtualBox 。 但我不认为他们会做我想要的东西。

作为一种折衷scheme – 我可以使用Hyper-V或ESX来创build虚拟机模板,创build许多模板的克隆 – 并以某种方式将这些克隆分配给各个工作站?

我对部署差异磁盘/快照的想法是,这是每周实用的 – 将更新部署到每个单独的开发人员VM,然后与基础映像合并。 然后,“金色图像”也会将差异合并 – 这样所有的虚拟机都可以匹配,而不必删除现有的克隆,并从更新的模板克隆。 你可以继续运行相同的虚拟磁盘 – 只是不断应用不同的磁盘/快照。

快照:首选方法

  1. 在你的机器上创build一个基础虚拟机。 出于您的目的,使用精简/精简磁盘映像文件将会非常好,因此请勿使用固定大小的磁盘映像文件。

  2. closures您的基本VM的实例。 (暂停/hibernate是不够的。)

  3. 拍快照。

  4. 拍完快照后将其分发给开发人员。

  5. 到时候,启动基础虚拟机并进行更新。 您所做的任何更改都将被写入新的“增量”文件中,这些文件的大小与您拍摄快照后所做的累积更改一样大。 由于您拍摄了快照,该巨大的磁盘映像文件将保持100%不变。

  6. closures您的基本VM的实例。 (暂停/hibernate是不够的。)

  7. 如果您进行了重大更改(例如,安装大型Service Pack),请考虑立即拍摄额外的快照,以便在进行下次更新时不必重新传输当前快照。

  8. 一夜之间,(a)或者重新启动每个开发者机器,或者在每个开发者机器上以编程方式终止pipe理程序进程(不,开发者不会记得closures它),然后(b)使用ROBOCOPY / MIR等拷贝改变的文件。

当然,为了达到这个目的,你需要传输所有与虚拟机相关的文件,除了快照/增量文件之外,还可以包含包含快照元数据的configuration文件。 您还需要确保在每台开发人员机器上,虚拟机存储在与您自己的机器完全相同的位置。

Rsync:替代方法

另一种方法是使用固定大小的虚拟磁盘, 不使用快照,像DeltaCopy这样的rsync客户端/服务器只复制已更改的部分。 这不是首选方法,因为:

  1. 这将需要在每台开发人员机器上安装rsync软件。

  2. 尽pipe没有更多的数据被传输,实际的复制过程将花费更长的时间,因为rsync需要分析整个虚拟磁盘文件文件,以确定哪些部分需要传输。

结论:你可以使用rsync来做这件事,但是如果你的系统pipe理程序支持快照的话,看起来好像过度了。

这听起来像你需要一个configurationpipe理工具。 这将是一个中央存储库,你可以安全的configuration和客户端(你的Windows虚拟机)可以得到新的configuration。

因为我使用Linux,我不知道这是如何顺利运行与Windows,但有支持Windows的解决scheme。 看看这个维基文章。 它有一个很好的总结。