我们是一家开发商店,因此我们大量使用虚拟机和快照进行测试。这在大多数情况下都很有效,但偶尔我会发现 VM 中的某些设置需要在我的所有快照中进行更改。
例如,我最近创建了一个 Vista VM,只给了它 512MB 的 RAM。VM 已经有大约 18 个快照,我非常非常希望尽可能避免重新创建所有快照。
有没有一种快速的方法可以在所有 VM 的快照中传播这样的 VMWare 级别的更改?
我正在使用 ESX 3.5,但欢迎来自任何其他版本(尤其是 Workstation)的建议。
我们是一家开发商店,因此我们大量使用虚拟机和快照进行测试。这在大多数情况下都很有效,但偶尔我会发现 VM 中的某些设置需要在我的所有快照中进行更改。
例如,我最近创建了一个 Vista VM,只给了它 512MB 的 RAM。VM 已经有大约 18 个快照,我非常非常希望尽可能避免重新创建所有快照。
有没有一种快速的方法可以在所有 VM 的快照中传播这样的 VMWare 级别的更改?
我正在使用 ESX 3.5,但欢迎来自任何其他版本(尤其是 Workstation)的建议。
这些快照存在多久了?通常,您不希望快照超过几天,否则您可能会遇到问题。我可以推荐的最好的事情是提交这些快照(如果它们很大/已经运行了一段时间,可能需要一段时间。Virtual Center 可能会超时,但如果它真的很大,它仍然会在 ESX 中删除)。快照只是特定虚拟机的增量文件,因此无法在多个虚拟机之间应用系统范围的更改。
更新:
为什么快照可以长时间停止机器:http: //kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId= 1002836
VMware 管理员指南 (PDF): http: //www.vmware.com/pdf/vi3_301_201_admin_guide.pdf
如果您决定提交,那么“长快照”的恐怖故事对你们来说应该是相当痛苦的:http: //www.vmwarez.com/2006/11/beware-long-snapshot.html
我使用 perl 搜索/替换来修改 .vmsn 文件。如果您查看此文件的第一部分,您将看到 .vmx 文件。
我正在为我的所有快照修改虚拟端口组,因为网络更改使这成为必要。恢复的快照使用新的端口组就好了。
唯一的问题是 .vmsn 文件非常大(很多 GB),因为 perl 在更改时会将整个文件加载到内存中。我相信您可以更有效地执行此操作,但它在 100 个快照上对我们有用。