我在Ubuntu机器上使用VirtualBox 4.1.x,并设置了多个虚拟机。由于可以通过多种方式将VirtualBox中的虚拟机移动到另一台计算机,因此我想知道哪种方式是推荐的方式:


使用“导入/导出实用程序”。 />复制整个虚拟机文件夹,其中包含.vdi.vbox文件。
使用“ Virtual Media Manager”克隆VDI,然后在目标计算机上重新创建VM,但使用克隆的VDI作为硬盘。

我已经成功地使用了第一种方法,并且一直有效。问题在于,在导出和导入后,磁盘映像将转换为VMDK,而不再转换为VDI!

第二种方法可能是最简单的,但是我不确定简单地复制文件还是可以的不在目标计算机上。在搜索这种方法时,我发现有些人遇到了必须编辑VirtualBox.xml文件才能解决的问题!

最后是第3种方法,但是它需要额外的工作创建与原始VM配置类似的VM,这是不希望的。

从上面的解释中可以明显看出,我想要的方法是第二种方法,但是如果可行,我需要有关此方法的专家建议。我不想进行任何XML编辑!

使用VirtualBox将虚拟机安全转移到另一台计算机的最佳方法是什么?

评论

只需传输文件,然后将它们放在相同的位置即可。

@seyed 1.具有高成功率/可重复性的故障安全解决方案可能并不总是建议的和/或最佳的解决方案,反之亦然。但是,由于您询问了推荐的解决方案,因此列表中的选项(2)(尽管容易出错)将是最快的,因此值得推荐!选项(1)和(3)属于故障安全类别,因为它们在大多数情况下都可以使用。附言:导出后,可以更改某些(大多数?)配置设置(如果使用选项1/3)!希望对您有所帮助。

#1 楼

做得好,做您的研究。我经常使用这三个选项。


(使用“导入/导出实用程序”)。这是最简单的方法,因为它将整个VM合并到一个文件中,并且几乎每次都可以毫无问题地进行传输。但是,以我的经验,在创建要导出的OVA或OVF文件时,它会丢弃所有快照,如果操作不正确,可能会导致生成VMDK文件。重新导入VM时,您应该能够选择要创建哪种类型的HDD文件(VDI或VMDK)。
(复制整个虚拟机文件夹,其中包含.vdi.vbox文件)。这是我的首选,尽管我不得不编辑XML文件几次,但这是我自己的错。确保在复制VM时获得与之关联的所有文件。我遇到的问题是某些快照和辅助VDI文件位于错误的目录中并且没有正确复制时。如果复制所有文件(和权限),则应该不会有任何问题。
(使用“ Virtual Media Manager”克隆VDI,然后使用克隆的VDI作为硬盘在目标计算机上重新创建VM)。这是不太理想的,因为那时您有2个VM副本,并且这可能会导致许可问题,网络问题等,具体取决于您克隆VDI文件的方式。选项2,只需确保将其移至所有位置即可。

评论


谢谢回复。我将再等几天,看看是否还有其他观点。 (+1)

–穆罕默德(Seyed Mohammad)
13年8月19日在8:08

似乎没有人要添加任何东西...所以我将其标记为答案。

–穆罕默德(Seyed Mohammad)
13年8月27日在7:09

@tbenz如何避免导出时获取VMDK?

– Don Rhummy
15年11月10日在22:40

刚刚完成:如果执行选项2,请在目标计算机上执行以下操作:Virtualbox> Machine> Add> [导航到所有VM文件所在的文件夹]。将新的VM文件放在存储所有其他VM的同一文件夹中可能是一个好主意。

–唐·李(Donn Lee)
16年4月15日在18:20

什么是“所有需要的文件”?

– devman
20年6月24日在11:28

#2 楼

方法2现在运行良好(在VirtualBox 4.0及更高版本上),无需进行任何XML修改:


停止虚拟机
退出VirtualBox
将VM文件夹复制到新位置
重新启动VirtualBox,并删除旧的VM。
转到“计算机”菜单≥添加并浏览到新位置。

就这样!

ps:我在OSX 10.10上有VirtualBox 4.3.20。

有关更多详细信息,请参见VirtualBox论坛帖子。

评论


不能相信投票没有达到应有的水平!在同一操作系统内移动虚拟机时,这是最简单的方法(太简单了!)。将两个VM从驱动器C成功移动到驱动器D。Mine是带有Virtualbox 5.x的Win7 64位

–叶德文
16年6月4日在12:37

@RestlessCobra是的,新文件夹包含整个VM。

–大卫
17年2月16日在21:15

使用virtualbox 5.1.8时,我只看到一个.vdi文件,没有xml文件或任何其他文件。

–王E
17年3月21日在2:56

vdi是您要移动的大文件。 XML文件位于其他文件夹中。

–大卫
17 Mar 22 '17 at 1:25

可以在其他计算机上使用吗?

– Colddie
20-5-14在22:57



#3 楼

我的首选选项也是选项2:



复制整个VM文件夹,其中包含.vdi和.vbox文件。



,但有时会发生UUID不匹配的情况。如果仅将一台计算机的VDI磁盘映像复制到另一台计算机上,但经常发生在直接复制完整目录的过程中,通常会发生这种情况。

所以,如果这是您收到的消息移动虚拟机并尝试在新设置中启动它:


无法打开硬盘。

由于硬盘太硬,无法注册硬盘具有UUID的磁盘
已经存在。


只需进入虚拟机的目录即可;当然,请更改实际路径以匹配您要进入的实际路径:

cd /full/path/to/virtualbox/virtualmachine/Sandbox


,然后运行以下命令为磁盘分配新的UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi


#4 楼

万一其他人正在寻找答案,我可以将5个Virtual Box VM成功迁移到同一台计算机上新硬盘驱动器上的另一个Win7安装中(实际上是从一个来宾操作系统迁移到同一台PC上的另一个操作系统)。我意识到,全新机器上的驱动程序可能会有所不同,并且可能会对移动产生负面影响,但是我记录了以下过程,希望对某些人有所帮助。


无需克隆虚拟机或更改xml文件。 VB版本相当最新:4.3.12r93773。
在新的文件夹/共享驱动器中创建了VM的新副本,以完整保留现有/旧的VM。我仍然可以从为冗余/问题解决而保留的旧硬盘启动,直到对新设置感到满意为止。因此我可以在必要时访问以前状态的旧VM。
驱动器号会有所不同/可能不需要,具体取决于您的设置。

在旧Win7主机上:


确保所有VM都已关闭电源。

在新的Win7主机上:


创建名为X:\ NewVMs \ VirtualBox VM的新文件夹(从新Win7计算机上,确保权限确定)
将所有VM和相关文件夹内容从旧文件夹复制/粘贴(不要拖动)到该文件夹​​(使用新权限)
卸载VirtualBox(如果已安装) )
删除.virtualbox文件夹和所有内容(如果存在)
重新启动以确认没有程序文件或注册表项(如果卸载旧的VirtualBox)。
安装/重新安装VirtualBox(请确保使用与在旧主机/计算机上创建VM的VirtualBox相同的版本(在我的情况下是4.3.12r93773版))重要信息:(不要选择复选框以在安装结束时打开/运行VirtualBox)

复制/粘贴(不要拖动).virtualbox文件夹并来自旧Win7主机的主机(通常为C:\ Users [用户名]。VirtualBox
现在打开VirtualBox
将新的默认VM创建文件夹的首选项设置为与新创建的VirtualBox VM文件夹相同的文件路径:X:\ NewVMs \ VirtualBox VMs
VM的测试状态

祝你好运。

评论


虽然这是一个有用的答案,但它与所询问的内容无关。另一个问题可能是您的答案更合适的位置。

–akTed
15年3月28日在19:34

@Steven,“ ...本质上是从一个主机操作系统迁移到另一个...”?

–pythonlarry
17年3月18日在20:11

@pythonlarry这也是我的理解。

–lmat-恢复莫妮卡
20-2-29在13:06

#5 楼

对于以下特殊情况:


您只有一个VM(或要移动所有VM),
且主机是具有相同OS版本的相同硬件(或者将相同的操作系统重新安装到同一台计算机上)

如果这样的话,事情很容易:


关闭两个主机上的VirtualBox。
从源主机复制.config/VirtualBoxVirtualBox VMs文件夹。
将这些文件夹复制到目标主机。
在目标主机上启动VirtualBox


#6 楼

第四种方法

在VirtualBOX中:


关闭虚拟机电源
右键单击并删除虚拟机(不要删除文件)
转到文件> Virtual Media Manager并删除.vdi
转到文件>首选项>常规,并将默认计算机文件夹设置为新位置
使用专家模式创建新的VM来创建VM,而无需硬盘驱动器

在文件资源管理器中:


找到.vdi文件并将其复制
转到新的默认计算机文件夹,将出现一个内部的VM文件夹
.vdi文件粘贴到新的VM文件夹中

返回VirtualBOX:


右键单击VM并打开设置
转到“存储”>“控制器:SATA”并添加硬盘,单击选择现有磁盘
11.在新的VM文件夹中选择.vdi文件

注意:如果方法2破坏了您的磁盘安装VirtualBOX到C:\ Users \ .VirtualBox并删除VirtualBox.xml并将VirtualBox.xml-prev重命名为VirtualBox.xml

#7 楼

我也使用方法2来移动虚拟机,而不必在任何XML文件中进行任何更改,但是在USB和文件共享时遇到了一些错误,下面是我如何将它们与过程固定在一起的方法:


将虚拟机从旧计算机复制到新计算机。虚拟机文件与Oracle虚拟机本身不同。这些文件通常位于c:\ users \\ VirtualBox VMs \。我拿起了整个VirtualBox VMs \部分,并将其复制到新PC上的相似位置。这将复制我在原始PC上拥有的所有虚拟机。
现在在新PC上,运行virtual box并转到“菜单”>“计算机”>“添加”,然后从复制的文件夹中选择.vbox文件。就是这样。
现在,当我在新PC上运行虚拟机时,启动时出现错误:




我不知道不知道为什么USB控制器无法工作,因为USB控制器在原始计算机上也能工作。我继续并安装了VirtualBox Extension Pack
,此安装有点奇怪,因为安装下载不是可执行文件。我单击了Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack,然后选择“从已安装程序列表中选择一个程序”,然后选择了Oracel virtualbox,它安装了扩展名。这解决了问题,但是另一个不太理想的解决方案是您可以禁用USB。
如果原始VM中有共享文件夹,它们可能会有所不同,并且会出现错误。查看设置>>共享文件夹中的内容,然后删除损坏的内容。错误消息看起来像



就这样。

#8 楼

zar,首先要做的是...永远不要移动处于保存状态的计算机,在移动之前,您必须关闭guest虚拟机,而不仅仅是保存状态。

还要确保您使用相同的版本在两个主机上都安装了VirtualBOX,但不仅是VirtualBOX版本,还包括扩展包版本……或者至少新主机具有更高的版本,但从来没有在这两个版本中具有更低的版本。

最后,我学到了很难的方法,先删除VirtualBOX上的SHARED文件夹配置,然后再移动机器,然后以正确的方式重新创建它……当主机是不同的操作系统(Windows / Linux主机)时,这非常重要。 br />
作为一个补充说明...我一直都在为操作系统以及数据VDI使用不可变的硬盘VDI文件(这样,相同的DATA VDI可以用于来宾以外的用途),对于4GiB pagefile.sys的特殊技巧,最后一部分,重复使用不变的VDI文件会使事情变得有些困难,VirtualBOX的BUG很大。
运行中的错误:


创建一个不变的VDI(就像我用于pagefile.sys的那样)。
在VirtualBOX上创建两个或三个VM。
将其中一个移动到列表顶部(只是为了避免损坏您的任何一个)
备份您创建的每台thoose计算机的.vbox文件(以便在发生BUG之后进行比较)
将不可变的VDI附加到其中一台以上的计算机上(列表顶部的除外)。
现在看到列表顶部的计算机的.vbox

该计算机已被编辑,它引用了其他计算机不可变的VDI。

因此,BUG是:编辑一台计算机,添加一个不可变的VDI,该VDI被另一台计算机使用,这会影响列表顶部的计算机。

为什么在所有Windows计算机上都重复使用相同的4GiB VDI?容易,这是一个带有FAT32分区的MBR磁盘,我在其中放置了pagefile.sys,因为它是不可变的,所有虚拟机都会在其快照文件夹中创建一个文件,用于存储更改,并且在下次启动时会丢失,所以我这样做不需要为存储在主机磁盘上的每个来宾提供4GiB,仅需一个...这样,我节省了很多GiB,因为我有20多个不同的窗口用于测试应用程序,这些窗口是我为自己开发的(XP,Vista的所有组合) ,7、8、8.1、10)*(32Bits,64Bits)*(就像在第一次安装时一样,在每个ServicePack之后,在完整的Windows更新之后),我得到了很多很多客人...等等我为虚拟RAM(pagefile.sys)共享了不变的4GiB VDI。

如果让BUG走得更远,请尝试将其中一台迁移到另一台VirtualBOX主机的主机(记住它们只是虚拟的)机器上有配置但尚未安装客户机),您会看到VirtualBox不允许您添加它们,因为缺少某些VDI(它是FALSE和TRUE,这是因为在第一台计算机上,保存了在正确的计算机上对这种VDI的引用(请注意在正确的计算机上)。 ..是的,它是列表中的第一名。

好几年前,这个BUG被告知VirtualBOX,他们仍然无法解决它……这引起了很多,还有很多问题。

此外,如果将虚拟机的顶部移动到较低的位置,请关闭VirtualBox并重新启动它……这将告诉您某些计算机已损坏,并且可以不能开始...是的,如果您不想遇到很多麻烦,必须以其他形式对待列表中的第一个。

这是一个非常糟糕的错误,它使我发现很多天(几年前),我很难学它!

我通过拥有一台名为以下设备的机器克服了它:


Common Inmutable Disks

它的配置为空,只有一个VDI,是的,您是对的,您猜对了,我为所有其余虚拟机共享不变的VDI。

当我打开.VBOX文件时,在<MediaRegistry> <HardDisks>部分中看到很多行,每台机器使用不可变VDI的每一行...就像一个示例(我删除私有数据):

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="...UUID..." location="D:\VDIs\_Virtual_Memory_.vdi" format="VDI" type="Immutable">
      <HardDisk uuid="{...UUID...}" location="Snapshots\{...UUID...}.vdi" format="VDI" autoReset="true"/>
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows001 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows002 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows003 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows004 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows005 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows006 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows007 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows008 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows009 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows010 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows011 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows012 ... // This belongs to other virtual Machine
      <HardDisk uuid="{...UUID...}" location="D:\VMs\Windows013 ... // This belongs to other virtual Machine
      ... and so on ...  // This belongs to other virtual Machine
    </HardDisk>
  </HardDisks>
</MediaRegistry>


相当大的错误,多年来没有解决。

好,要移动这样的机器...,您必须手动编辑.VBOX文件,以便将所有这样的磁盘引用放在新的主机上。将.VBOX文件添加到列表之前的第一台计算机(位于列表顶部的计算机),因此在添加它们时,VirtualBOX会引用丢失的VDI(由于大的BUG导致丢失)。

之所以会发生这种情况,是因为每次您连接另一台计算机上使用的VDI VirtualBOX时,都会更新两台计算机.VBOX文件(属于您所使用的计算机)和列表中的第一台计算机。 />
我不完全确定清单上会出现什么情况,第一个没有附加这样的通用VDI ...最好不要尝试,看看我看到的是什么。

所以迁移到另一个HOST比看起来要复杂得多,这似乎是因为.VBOX文件内部结构的实现很差,并且由于VirtualBOX编辑它们时存在很大的错误。

失败:


内部结构(XML)取决于主机(Windows或Linux)
编辑一台机器可以更改另一台机器,不仅是一台经过编辑的机器
...还有更多?

需要更多...我总是迁移执行此操作的计算机(而且从来没有问题,从来没有):


记下所有计算机的列表(顺序,分组等)
请注意列表中的第一个(所有配置)
请注意我要移至另一台主机的计算机的所有属性
将.vbox文件复制为.txt文件(列表顶部的一台+我要迁移的所有计算机)
在新的VirtualBox内重新创建所有计算机(列表顶部有一个特殊的计算机)主机
关闭新主机上的VirtualBox
将旧的.txt文件与新的.vbox文件进行比较,然后以人工方式从.txt文件复制到.vbox的某些部分,而不仅仅是复制并粘贴
打开VirtualBox和以正确的顺序附加所有VDI
再次在新主机上关闭VirtualBox
比较旧的.txt与新的.vbox文件,然后以人工方式将.txt中的.txt固定为.vbox的某些部分,而不仅仅是复制并粘贴

其余所有内容(快照文件夹和VDI文件)我都以正常方式(文件系统复制和粘贴)进行复制。

所有辛苦的手动工作都是由Big造成的BUG VirtualBox:当您在多台机器上附加使用不变的VDI时,它会编辑/更改未修改的机器,否则,简单地复制并粘贴.VBOX文件就足够了(修复共享文件夹路径等之后)。 br />

#9 楼

将包含机器的文件夹复制到目标,然后从菜单:“计算机” --->“添加”,然后选择vbox文件,而不是vdi文件。对我来说,这完美无瑕。不知道我是否幸运,或者是否应该以这种方式工作。