2013-08-18 19:45:47 +0000 2013-08-18 19:45:47 +0000
252
252

将VirtualBox虚拟机移动到另一台电脑上有什么推荐的方法?

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

  1. 使用 “导入/导出工具。”
  2. 复制整个虚拟机文件夹,包含.vdi.vbox文件。
  3. 使用 “虚拟媒体管理器 "克隆VDI,然后在目标机上重新创建一个虚拟机,但使用克隆后的VDI作为硬盘。

我已经成功地使用了1种方法几次,每次都能成功。问题是导出和导入后,磁盘镜像被转化成了VMDK,而不是VDI了!

第2种方法**可能是最简单的方法,但我不确定在目标机上简单复制文件是否能成功。在搜索这个方法的时候,我发现有些人遇到了一些问题,他们必须编辑VirtualBox.xml文件才能解决!

最后,终于有了第三种方法,但它需要创建一个类似于原始VM配置的VM,这并不可取。我不希望任何XML编辑妨碍我的工作!

有什么最好的方法可以用VirtualBox将我的VM安全地转移到另一台电脑上?

答案 (9)

177
177
177
2013-08-18 20:53:14 +0000

做好研究工作。我经常使用这三个选项。

  1. (使用 “导入/导出工具”)。这是最简单的,因为它可以将整个虚拟机合并成一个文件,并且每次传输过来都没有问题。然而,根据我的经验,当创建 OVA 或 OVF 文件导出时,它会扔掉所有的快照,如果操作不正确,可能会导致一个 VMDK 文件。当你重新导入虚拟机时,你应该可以选择你想要创建的HDD文件类型,VDI或VDDK。(复制整个虚拟机文件夹,包含.vdi.vbox文件)。这是我的首选选项,虽然我有几次不得不编辑XML文件,但都是我自己弄乱了一些东西。确保当你复制VM时,你会得到所有与之相关的文件。我遇到的问题是当某些快照和二级VDI文件在错误的目录中,没有正确地复制。如果你复制了所有的文件(和权限),你应该不会有任何问题。(使用 “虚拟媒体管理器 "克隆VDI,然后在目标机上重新创建一个虚拟机,但使用克隆的VDI作为硬盘)。
54
54
54
2015-09-24 19:35:02 +0000

方法2现在很好用(VirtualBox 4.0及以上版本),不需要任何XML修改:

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

就这样!

ps: 我在OSX 10.10上使用VirtualBox 4.3.20

_更多详情请看这个VirtualBox论坛的帖子

21
21
21
2015-09-25 17:14:10 +0000

我的首选方案二也是方案二:

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

但有时会出现UUID不匹配的情况。通常情况下,如果你只是将一台机器的VDI磁盘镜像复制到另一台机器上,这种情况就会发生,但我也曾在直接复制完整目录的过程中遇到过这种情况。

Cannot register the hard disk because a hard disk with UUID already exist.

只需进入虚拟机的目录,当然,把实际路径改成与你要进入的实际路径相匹配:

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

然后运行这个命令给硬盘分配一个新的UUUID:

VBoxManage internalcommands sethduuid Sandbox.vdi
9
9
9
2014-08-16 12:21:03 +0000

如果有人想知道这个问题的答案,我在同一台机器上的一个新硬盘上成功地将5个Virtual Box VM移动到了另一个Win7安装(本质上是在同一台电脑上从一个客制化的操作系统移动到另一个)。我意识到,在一个全新的机器上的驱动程序可能会有所不同,并有可能对移动的负面影响,但我已经记录了下面的过程,希望它可能会帮助到某人。 - 在一个新的文件夹/共享驱动器中创建了新的虚拟机副本,以保留现有的/旧的虚拟机。我仍然可以从我保留的旧硬盘启动,在我对新的设置满意之前,我仍然可以从旧的硬盘启动,因为我保留了这个硬盘是为了冗余/问题解决,所以我可以在必要时访问旧的虚拟机。确保所有的虚拟机都关闭了电源。创建一个新的文件夹,名为X:\NewVMs\VirtualBox VMs(从新的Win7机器中确保权限确定) 2. 复制/粘贴 (不要拖动) 所有的虚拟机和相关文件夹内容从旧文件夹中复制到这个文件夹 (使用新的权限) 3. Uninstall VirtualBox (如果安装了的话) 4. 删除 .virtualbox 文件夹和所有内容 (如果有的话) 5.重新启动确认没有剩余的程序文件或注册表项 (如果卸载旧的 VirtualBox)。 现在打开VirtualBox 9. 将新的默认虚拟机创建文件夹的首选项设置为与新创建的VirtualBox虚拟机文件夹相同的文件路径。X:\NewVMs\VirtualBox VMs 10.测试VMs的状态 好运。

2
2
2
2016-03-22 03:42:08 +0000

对于以下特殊情况:

  • 你只有一个个虚拟机 (或者想移动所有的虚拟机),
  • 主机是相同的硬件和相同的操作系统版本 (或者重新安装相同的操作系统到同一台机器上)

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

  1. 关闭两台主机上的VirtualBox
  2. 从源主机上复制.config/VirtualBoxVirtualBox VMs文件夹
  3. 將這些資料夾複製到目標主機上。在目标主机上启动VirtualBox。
1
1
1
2018-06-28 21:44:12 +0000

The 4th Way

在VirtualBOX中:

  1. 关闭虚拟机的电源
  2. 右击并删除虚拟机(不要删除文件)
  3. 转到文件>虚拟媒体管理器并删除.VDI
  4. 转到文件>偏好设置>一般,将默认的机器文件夹设置为新的位置 5.创建一个新的虚拟机,使用专家模式创建一个没有硬盘的虚拟机

在文件资源管理器中:

  1. 找到 .vdi 文件并复制它
  2. 转到新的默认机器文件夹,里面会有一个虚拟机文件夹
  3. 将 .vdi 文件粘贴到新的 VM 文件夹中

返回 VirtualBOX:

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

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

0
0
0
2016-09-12 21:36:17 +0000

我也用了方法2来移动我的虚拟机,而且我没有在任何XML文件中做任何改变,但在USB和文件共享方面出现了一些错误,下面是我如何修复这些错误的过程:

  1. 将虚拟机从旧电脑上复制到新电脑上。虚拟机的文件与Oracle虚拟机本身不同。这些文件一般在c:users\VirtualBox VMs。我拿起了整个VirtualBox VMs的部分,并将其复制到新电脑上的类似位置。这就复制了我在原电脑上的所有虚拟机。现在在新的电脑上运行虚拟机,运行虚拟机,进入菜单>机器>添加,从复制的文件夹中选择.vbox文件。就这样,

  2. 现在当我在新电脑上运行虚拟机时,开机时出现错误:

1.我不知道为什么USB控制器不工作,因为在原来的电脑上也是这样。我继续安装了【VirtualBox扩展包】(https://www.virtualbox.org/wiki/Downloads)

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

  2. 如果你在原来的虚拟机里有共享文件夹,它们可能会有不同,你会得到错误。在设置>>>共享文件夹中查看,然后删除那些被破坏的文件夹。错误信息会显示为

.

-1
-1
-1
2017-01-03 15:03:14 +0000

zar, 首先…..永远不要移动处于保存状态的机器,在移动之前,你必须先关闭访客,而不是只保存状态。

最后,我也学到了一个很重要的方法,在移动机器之前,先删除VirtualBOX上的SHARED文件夹配置,然后用正确的方法重新创建………..当主机是不同的操作系统(Windows/Linux主机)时,这一点非常重要。 sys

最后一部分,重新使用不可篡改的VDI文件会让事情变得更加困难,VirtualBOX有一个很大的BUG。 vbox文件(用于BUG发生后的比较) - 将不可篡改的VDI附加到多个机器上(除了列表上的那台机器) - 现在看到列表上的机器的.vbox

那台机器已经被编辑了,它有对其他机器不可篡改的VDI的引用。编辑一台机器,添加一个被另一台机器使用的inmutable VDI会影响到列表顶部的机器。很简单,它是一个MBR磁盘,有一个FAT32分区,我把pagefile.sys放在那里,因为它是不可更改的,所有的虚拟机都会在他们的快照文件夹中创建一个文件,在那里存储变化,在下一次启动时就会丢失,所以我不需要4GiB的主机磁盘上存储的每个客机都有4GiB,只需要一个….. 这样一来,我可以节省很多GiB,因为我有20多个不同的窗口来测试我自己开发的应用程序,所有的组合(XP, Vista, 7, 7, 8, 8, 8.1, 10)(32位, 64位) (就像第一次安装时一样,每次ServicePack之后,在windows更新后,我就会得到很多,很多的访客………..所以在所有的这些窗口上,我都会共享不可更改的4GiB的VDI来做为虚拟内存(pagefile.sys)。

如果你让这个BUG继续下去,试着把这些机器中的一个移到另一个VirtualBOX主机上(记住,它们只是有配置的虚拟机,还没有安装客机),你会发现VirtualBox不允许你添加它们,因为有些VDIs不见了(这是FALSE和TRUE,是这样的,是这样的第一台机器拥有这些VDIs的引用,而不是在正确的机器上)。 VBOX文件和之前的BackUp…..注意到有一个是怎么被修改错的吗? 是的,就是列表上的那个。

还有,如果你把虚拟机上最上面的那一个移到较低的位置,关闭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>

&001

很大的BUG,多年来一直没有解决。 VBOX文件,在将.VBOX文件添加到列表中之前,将所有的磁盘引用放在第一台机器上的新主机上(列表中最上面的那台),所以在添加时,VirtualBOX会有丢失的VDI的引用(由于大BUG导致的丢失)。

我不完全确定在列表中会发生什么事情,第一台机器上没有这样的VDI………..最好不要尝试,我看到了。

  • 内部结构(XML)取决于主机(Windows或Linux)
  • 编辑一台机器可以改变另一台机器,而不仅仅是被编辑的机器
  • ….. …还有什么?注意到所有机器的列表(顺序,分组等)
  • 记下列表中的第一个机器(所有配置)
  • 记下我想转移到另一台主机上的所有机器的属性
  • 将 .vbox 文件复制为 .txt 文件 (列表中最上面的那台机器+我想迁移的所有机器) 5.在新主机上的 VirtualBox 中重新创建所有机器 (并且在列表的最上面有一个特殊的机器) 6.在新主机上关闭 VirtualBox 关闭新主机上的VirtualBox
  • 打开VirtualBox,将所有的VDI按照正确的顺序连接到新主机上
  • 再次在新主机上关闭VirtualBox 10.将旧的.txt文件与新的.vbox文件进行比较,并将.txt文件从.txt复制到.vbox的某些部分用人的方式 “修复",而不仅仅是Copy&Paste

其余的(快照文件夹和VDI文件)我都用正常的方式复制(文件系统复制&粘贴)。它编辑/修改一个机器没有被修改的机器,当你附加一个不可移动的VDI,在多个机器上使用,否则一个简单的Copy&Paste的.VBOX文件就足够了(修复共享文件夹路径等)。

-2
-2
-2
2017-04-27 23:51:57 +0000

将包含机器的文件夹复制到目的地,然后从菜单中选择 “机器”—–>“添加",然后选择vbox文件,而不是vdi文件。"Machine” —-> “Add",然后选择vbox文件,而不是vdi文件。对我来说,这个过程很顺利。不知道是我运气好,还是应该是这样的。