我正在努力build立一个可行的发展模式。 我想知道是否有人有虚拟机软件的build议,以及要执行以下操作的过程:
这是一个梦想吗?
鉴于我的限制,我想我可以selectVMWare Workstation或VirtualBox 。 但我不认为他们会做我想要的东西。
作为一种折衷scheme – 我可以使用Hyper-V或ESX来创build虚拟机模板,创build许多模板的克隆 – 并以某种方式将这些克隆分配给各个工作站?
我对部署差异磁盘/快照的想法是,这是每周实用的 – 将更新部署到每个单独的开发人员VM,然后与基础映像合并。 然后,“金色图像”也会将差异合并 – 这样所有的虚拟机都可以匹配,而不必删除现有的克隆,并从更新的模板克隆。 你可以继续运行相同的虚拟磁盘 – 只是不断应用不同的磁盘/快照。
快照:首选方法
在你的机器上创build一个基础虚拟机。 出于您的目的,使用精简/精简磁盘映像文件将会非常好,因此请勿使用固定大小的磁盘映像文件。
closures您的基本VM的实例。 (暂停/hibernate是不够的。)
拍快照。
拍完快照后将其分发给开发人员。
到时候,启动基础虚拟机并进行更新。 您所做的任何更改都将被写入新的“增量”文件中,这些文件的大小与您拍摄快照后所做的累积更改一样大。 由于您拍摄了快照,该巨大的磁盘映像文件将保持100%不变。
closures您的基本VM的实例。 (暂停/hibernate是不够的。)
如果您进行了重大更改(例如,安装大型Service Pack),请考虑立即拍摄额外的快照,以便在进行下次更新时不必重新传输当前快照。
一夜之间,(a)或者重新启动每个开发者机器,或者在每个开发者机器上以编程方式终止pipe理程序进程(不,开发者不会记得closures它),然后(b)使用ROBOCOPY / MIR等拷贝改变的文件。
当然,为了达到这个目的,你需要传输所有与虚拟机相关的文件,除了快照/增量文件之外,还可以包含包含快照元数据的configuration文件。 您还需要确保在每台开发人员机器上,虚拟机存储在与您自己的机器完全相同的位置。
Rsync:替代方法
另一种方法是使用固定大小的虚拟磁盘, 不使用快照,像DeltaCopy这样的rsync客户端/服务器只复制已更改的部分。 这不是首选方法,因为:
这将需要在每台开发人员机器上安装rsync软件。
尽pipe没有更多的数据被传输,实际的复制过程将花费更长的时间,因为rsync需要分析整个虚拟磁盘文件文件,以确定哪些部分需要传输。
结论:你可以使用rsync来做这件事,但是如果你的系统pipe理程序支持快照的话,看起来好像过度了。
这听起来像你需要一个configurationpipe理工具。 这将是一个中央存储库,你可以安全的configuration和客户端(你的Windows虚拟机)可以得到新的configuration。
因为我使用Linux,我不知道这是如何顺利运行与Windows,但有支持Windows的解决scheme。 看看这个维基文章。 它有一个很好的总结。