如何将虚拟机从VMWare工作站8导出到另一台具有VMWare工作站8的物理计算机?例如,如何在VMWare工作站8的不同实例之间移动快照?
虚拟机主机的是Linux CentOS。
假设安装了WMWare的源计算机和目标计算机都运行在Windows上。
谢谢。
发布于 2012-09-25 08:59:29
好的,谢谢你的澄清,问题是你对快照的理解--这不是你想的那样。假设您有一个没有快照的磁盘,当您创建一个快照时,所发生的一切都是由虚拟机管理程序创建的,其中只包含自快照以来对基本磁盘所做的更改,然后管理程序只从基本磁盘(如果该磁盘的该位自快照以来没有更改)或快照文件中的数据(只有在创建快照后更改了该位数据)向来宾操作系统发送正确的数据。因此,仅仅发送快照文件将只包含已更改的数据,它本身几乎没有什么用处--可以吗?
也就是说,您实际上想要实现的非常简单,只需关闭VM并从File菜单中选择“save to OVF”,这将允许您以一个名为OVF的虚拟机管理程序无关的格式保存VM,然后您可以将它传输给任何您喜欢的人。然后,他们可以将该OVF文件导入到他们所拥有的任何管理程序中(也就是说,它不必是VMWare工作站)。这个文件将包含在关机时保存的VM,如果需要的话,您可以根据需要在自己的机器上删除快照并继续工作。
这是我刚创建的一个(相当差的)图表;

在这个例子中,我们只有四个数据‘块’/位置-编号为1到4。如您所见,每个‘块’包含一些数据(在本例中为一个数字)。然后,我们创建快照号1,并在'blocks‘1和3中更改数据(在本例中为101和75 )。此时,如果OS读取“块”1,则来自管理程序的响应为101,而不是100,而对于“块”3,则为75而不是50,但是对于‘块’2和‘4’的响应仍然是200和25。如果删除快照1,那么所有内容都返回到黄色的值。如果我们创建第二个快照并将数字102写入‘块1’,那么该‘块’只在第二个快照文件中更新,如果我们读取' block‘3,它引用第一个快照文件来获取该数据,如果我们想读取’块‘2和’块‘4,则引用基本文件。如果我们在'Snap 2’点保存/导出VM,那么它将创建一个带有在该点写入的块的单一文件(即102、200、75、25)。
现在,很明显,在VM快照的任何情况下,磁盘IO都可能受到性能影响,因为可以对磁盘进行多次读和写,以实现这种快照机制。事实上,快照越多,每个快照的变化越多,性能命中的影响就越大。这就是说,如果在当前快照中写入了大量磁盘,性能命中就会减少,因为几乎所有IO都会转到snap文件,但如果可以的话,应该避免这种情况。实际上,当删除VM快照所花费的时间(实际上是将更改写回基本文件或中间快照文件)变得更长时,VM快照是个坏主意,因为从snap开始发生的更改越多。作为一项规则,我不喜欢快照存在超过24/48小时,但在桌面环境中,可以伸展一点。
顺便说一句,这种机制基本上是所有快照方法的工作方式(在NetApp的WAFL文件系统和ZFS中可能有点不同,但至少在所有虚拟机监控程序中是一个很好的基本理解)。
明白了吗?如果不是,也许看一下手册,它们是相当清晰的。
发布于 2013-07-09 10:38:36
其实你能做到的。只需关闭VM并在快照菜单中复制要导出的快照。在克隆向导中,一定要使用该选项来创建一个独立的克隆--这将允许移动机器。
关于快照的Chopper3是正确的,但是VMware能够合并磁盘并从其他快照中删除更改。这就是为什么手动删除不再需要的快照并最终释放一些磁盘空间的原因。
请记住,合并和删除操作一开始可能占用大量磁盘空间,可能需要相当长的时间。
https://serverfault.com/questions/431675
复制相似问题