将VirtualBox VM移至另一台计算机的推荐方法是什么?


234

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

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

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

第二个方法可能是最简单的,但我不知道是简单地复制这些文件将工作或没有在目标机器上。在搜索此方法时,我发现有些人遇到了必须编辑VirtualBox.xml文件才能解决的问题!

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

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

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


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

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

Answers:


164

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

  1. (使用“导入/导出实用程序”)。这是最简单的,因为它将整个VM组合到一个文件中,并且每次都几乎没有问题地将其转移。但是,以我的经验,创建用于导出的OVA或OVF文件时,它会丢弃所有快照,如果操作不正确,可能会导致生成VMDK文件。重新导入VM时,您应该能够选择要创建的HDD文件类型,即VDI或VMDK。

  2. (复制包含.vdi.vbox文件的整个虚拟机文件夹)。这是我的首选,尽管我不得不编辑XML文件几次,但这是我自己的错。确保在复制VM时获得与之关联的所有文件。我遇到的问题是某些快照和辅助VDI文件位于错误的目录中并且没有正确复制时。如果复制所有文件(和权限),则应该没有任何问题。

  3. (使用“ Virtual Media Manager”克隆VDI,然后使用克隆的VDI作为硬盘在目标计算机上重新创建VM)。 这是不太理想的,因为那时您有2个VM副本,并且取决于克隆VDI文件的方式,它可能导致许可问题,网络问题等。

总而言之,我绝对会推荐选项2,只需确保将其移至所有所需文件即可。


谢谢回复。我将再等几天,看看是否还有其他观点。(+1)
赛义德·穆罕默德

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

只是选项1的附加参考,link,导入后,格式为VDMK,似乎已经确定并且不能更改。
simongcc 2014年

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

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

47

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

  1. 停止您的虚拟机
  2. 退出VirtualBox
  3. 将VM文件夹复制到新位置
  4. 重新启动VirtualBox,然后删除旧的VM。
  5. 进入机器菜单≥添加并浏览到您的旧文件夹。

而已!

ps:我在OSX 10.10上有VirtualBox 4.3.20

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


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

1
仅移动VDI文件(仅移动整个虚拟机)实际上并不起作用。
尘狼

1
@DustWolf对,但这就是操作者的问题所在。
大卫,

@DustWolf这是大卫说的。“将VM文件夹复制到新位置”。就我而言,此文件夹包含整个虚拟机。我想念什么吗?
Nikos

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

17

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

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

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

因此,如果这是在移动虚拟机并尝试在新设置中启动它后得到的消息:

无法打开硬盘。

无法注册硬盘,因为已经存在具有UUID的硬盘。

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

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

并运行以下命令为磁盘分配新的UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi

9

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

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

在旧的Win7主机上:

  1. 确保关闭所有虚拟机的电源。

在新的Win7主机上:

  1. 创建一个名为X:\ NewVMs \ VirtualBox VM的新文件夹(从New Win7计算机中确保权限确定)
  2. 将所有VM和相关文件夹内容从旧文件夹复制/粘贴(不要拖动)到该文件夹​​(使用新权限)
  3. 卸载VirtualBox(如果已安装)
  4. 删除.virtualbox文件夹和所有内容(如果存在)
  5. 重新启动以确认没有程序文件或注册表项剩余(如果卸载旧的VirtualBox)。
  6. 安装/重新安装VirtualBox(确保使用与在旧主机/计算机上创建VM的VirtualBox相同的版本(在我的情况下是4.3.12r93773版))
    重要:(不要选择打勾框来打开/在安装结束时运行VirtualBox)
  7. 从旧Win7主机(通常为C:\ Users [用户名] .VirtualBox)复制/粘贴(不要拖动).virtualbox文件夹和内容
  8. 现在打开VirtualBox
  9. 将新的默认VM创建文件夹的首选项设置为与新创建的VirtualBox VM文件夹相同的文件路径:X:\ NewVMs \ VirtualBox VM
  10. 虚拟机测试状态

祝好运。


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

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

2

对于特殊情况,其中:

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

如果是这种情况,那么事情很简单:

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

1

第四种方式

在VirtualBOX中:

  1. 关闭虚拟机电源
  2. 右键单击并删除VM(不要删除文件)
  3. 转到文件>虚拟媒体管理器并删除.vdi
  4. 转到“文件”>“首选项”>“常规”,然后将默认计算机文件夹设置为新位置。
  5. 使用专家模式创建新的VM,以创建没有硬盘驱动器的VM

在文件资源管理器中:

  1. 找到.vdi文件并将其复制
  2. 转到新的默认计算机文件夹,其中将有一个VM文件夹
  3. 将.vdi文件粘贴到新的VM文件夹中

返回VirtualBOX:

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

注意:如果方法2破坏了VirtualBOX的安装,请转到C:\ Users \ .VirtualBox并删除VirtualBox.xml,然后将VirtualBox.xml-prev重命名为VirtualBox.xml。


0

我也使用方法2来移动我的虚拟机,而不必在任何XML文件中进行任何更改,但是在USB和文件共享时会遇到一些错误,下面是我如何修复它们以及如何处理这些错误:

  1. 将虚拟机从旧计算机复制到新计算机。虚拟机文件与Oracle虚拟机本身不同。这些文件通常位于c:\ users \\ VirtualBox VMs \。我拿起了整个VirtualBox VMs \部分,并将其复制到新PC上的相似位置。这将复制我在原始PC上拥有的所有虚拟机。

  2. 现在,在新PC上,运行虚拟框并转到菜单>机器>添加,然后从复制的文件夹中选择.vbox文件。而已。

  3. 现在,当我在新PC上运行虚拟机时,启动时出现错误:

在此处输入图片说明

  1. 我不知道为什么USB控制器不起作用,因为相同的控制器在原始计算机上也起作用。我继续并安装了VirtualBox Extension Pack

  2. 此安装有点奇怪,因为安装下载不是可执行文件。我单击了Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack,然后选择“从已安装程序列表中选择一个程序”,然后选择了Oracel virtualbox,它安装了扩展名。这样就解决了问题,但是另一个不太理想的解决方案是您可以禁用USB。

  3. 如果原始VM中有共享文件夹,则它们可能会有所不同,并且会出现错误。查看设置>>共享文件夹中的内容,然后删除损坏的内容。错误消息看起来像

这个

就这样。


-1

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

另外,还要确保在两个主机上都使用相同版本的VirtualBOX,但不仅要是VirtualBOX版本,还要使用扩展包版本……或者至少新主机具有更高的版本,但绝不要在两个主机中都具有更低的版本。

最后,我很难学到它,在移动机器之前删除VirtualBOX上的SHARED文件夹配置,然后以正确的方式重新创建它...当主机是不同的操作系统(Windows / Linux主机)时,这非常重要。

顺便提一句...我一直都在为操作系统以及数据VDI始终使用不可变的硬盘VDI文件(这样一来,相同的DATA VDI可以用于来宾之外),特别是4GiB pagefile.sys的窍门

最后一部分,重复使用一个不变的VDI文件会使事情变得有些困难,VirtualBOX有一个大错误。

要查看实际的错误:

  • 创建一个不变的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的引用,而这些BDI却被信奉蜜蜂)。

现在,将所有文件的.VBOX文件与previos BackUp进行比较...请注意其中一个文件的修改错误吗?...是的,它是列表顶部的文件。

好吧,这个错误是几年前被告知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文件,以将所有此类磁盘引用放在第一台计算机(位于列表顶部)上的新主机上的新主机上。文件添加到列表中,因此在添加它们时,VirtualBOX会引用丢失的VDI(丢失是由大BUG引起的)。

发生这种情况是因为每次您连接另一台计算机上使用的VDI VirtualBOX时,都会更新两台计算机.VBOX文件(属于您正在使用的计算机)和列表中的第一台。

我不完全确定清单上会出现什么情况,第一个没有附加这样的通用VDI ...最好不要尝试,看看我所看到的。

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

失败:

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

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

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

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

所有艰苦的手工工作都是由Big BUG VirtualBox引起的:当您在多台计算机上附加使用不变VDI时,它会编辑/更改未修改的计算机,否则只需复制并粘贴.VBOX文件即可(修复共享文件夹路径等)。


-2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.