如何移动VirtualBox文件?


165

默认情况下,VirtualBox将所有数据存储在主目录下的目录中。我知道如何更改它,但是如何更改现有图像的位置(无需手动编辑VirtualBox.xml)?

我在Windows上工作,不想尝试使用任何NTFS链接


4
噢,我打算建议符号链接(它们解决了Everything™),但是您已经屏蔽了这个想法... :(
DMA57361 2011年

2
我根本不信任Windows上的链接。尽管NTFS可以胜任,但Windows XP对此一无所知,并且已经存在很多问题。我可能会变得胆怯……
maaartinus 2011年

嗯,是的,我不会在XP上接触它们。但是对7的支持非常扎实-您仍然必须从cmd行构建它们,但这并不是一件很麻烦的事情。我不确定Vista ...
DMA57361,2011年

更糟糕的是,XP版本的NTFS确实支持硬链接,但这些硬链接不能跨越卷。显然,我想将数据移动到另一个分区。
maaartinus 2011年

硬链接不能永远跨越卷,只有符号链接可以(而且可以用于这样的事情,我的用户文件夹都被符号链接到我的第二个硬盘驱动器,例如)。但是,就我个人而言,我仍然会避免在XP中使用硬链接(即使它们是可选的)。
DMA57361 2011年

Answers:


137

如果您打算将所有VM移动到一个全新的位置,则应遵循以下两个答复:

在此处复制帖子:

  1. 关闭VirtualBox,备份.VirtualBox \ VirtualBox.xml文件。
  2. 找到您现有的“ Virtualbox VMs”文件夹,然后将包含内容的整个文件夹复制(而不移动)到新驱动器E:
  3. 运行VirtualBox,然后依次为每个VM运行:

    3.1右键单击虚拟机名称,然后从弹出菜单中选择“删除”。对“是否物理删除文件?”回答“否”。题。

    从用户界面中删除VM后的3.1b,您必须关闭VirtualBox,并将其关闭足够长时间,以使后台VBoxSVC任务超时并终止。然后,您可以再次启动VirtualBox应用程序,并使用Machine | Add重新添加上一步中删除的VM。

    3.2选择Machine | Add ..菜单项,导航到驱动器E:上VM的新位置,然后选择.vbox文件。

    3.3。对所有剩余的VM重复上述步骤。

  4. 在“文件|首选项”中,将默认计算机路径设置为“ E:\ VirtualBox VMs”
  5. 测试每个虚拟机。只有在确定它们都能正常工作之后,才删除包含文件夹的旧VM,即删除“ C:\ VirtualBox VM”。

当我对链接克隆计算机执行此操作时,它们无法启动
Nam G VU 2012年

1
这对我有用,尽管我还需要通过编辑.VirtualBox\VirtualBox.xml文件并执行查找/替换来更新每个硬盘和快照映像的路径。另外,我只移动了MachinesHardDisk文件夹,而不移动了之下的所有文件.VirtualBox,因为这是所有全局配置和日志记录等。
戴夫·安徒生2012年

4
对于Mac OS X用户,VirtualBox.xml位于~/Library/VirtualBox/VirtualBox.xml。VM位于中~/VirtualBox VMs
小清庞-明日香贤治

2
Virtual Box 4.3.0+解决了“最后一件重要的事情”,我什至不需要关闭它- 说明
PCaetano 2014年

也许您也可以添加命令行“版本”。1)通过列出现有的VM VBoxManage list vms。2)在VM的名称旁边,大括号内,引用了它们的UUID。复制感兴趣的一个。可以通过检索有关它的详细信息VBoxManage showvminfo UUID。3)通过取消注册目标VM VBoxManage unregistervm UUID。4)移动目标VM的目录。5)最后,通过VBoxManage register NameOfVM.vbox-显然地注册机器,其中NameOfVM表示.vbox要注册的VM 文件的实际名称。
Nikos Alexandris

58

我只有几个VM,发现我可以更改VirtualBox的默认存储位置,然后克隆我的VM。在我想要它们的新HD的新位置中创建了这些克隆。一切完好无损,快照,无需重新映射虚拟HD的位置。


3
+1我认为这是最好的方法。VirtualBox会为您整理整洁的小包装。
戴夫·安德森

3
这是最好的方法,不需要手动进行cfg编辑
Bojan Bjelic

你怎么做到这一点???
FlipFloop

这确实是应该接受的答案
TheV0ID

1
警告:克隆不会产生完美的副本,并且可能会随着计算机/磁盘ID的更改而触发更新已安装软件的许可证的需求。将VM上的Quicken的旧副本移动到新磁盘时遇到此问题。
MZB

36

最简单的方法不需要删除虚拟机并修改其设置。

  1. 将您的Virtualbox VMs文件夹复制到新驱动器。

  2. 运行Virtual Box Machine Manager。运行媒体管理器文件->虚拟媒体管理器

    2a。选择要为其移动存储的VM。单击释放按钮,然后单击删除按钮。在下一个对话框中,您可以删除或保留虚拟驱动器。关闭管理器,将您留在Virtualbox Machine Manager中。

  3. 选择您刚刚删除了介质的VM,依次单击“ 设置”按钮和“ 存储”部分。添加用于介质的控制器(通常为SATA),然后添加硬盘驱动器并选择现有磁盘,然后在新位置选择VD。

  4. 对要移动的每台机器重复上述步骤

在新位置启动虚拟机进行检查。下次访问Virtual Media Manager时,将鼠标悬停在VM条目上将向您显示VD的存储位置。

如果使用快照,请确保将快照文件夹更改为指向新驱动器。每台计算机都有一个快照文件夹设置,VM Manager 在“ 文件”->“设置”中也有一个“ 默认计算机”文件夹设置,也需要更改。

另外,我还必须修改xml文件中的路径。之后,它可以完美地工作。

注意:自编写以来,情况有所改变,请参阅Rob的答案。现在非常简单。


2
我认为这是到目前为止最简单的方法。
PeterPerháč16年

17

更简单。1)移至新位置2)右键单击从virtualbox菜单中删除3)从计算机菜单中选择“添加” 4)找到类型为“ virtualbox计算机定义”的8kb蓝色图标。选择它,它将添加到您的virtualbox列表中。双击虚拟机即可。


要将虚拟机添加回VirtualBox时,比这更简单,只需单击*.vbox其文件夹中的文件即可。
乔尔·梅隆

2
三年后情况如何变化...那时真希望如此轻松。在我的答案中添加了注释,以使他们能够看到这一点。
Fiasco Labs 2015年

1
这确实应该更高。我无所事事,无法正常工作。只需删除UI中的“无法访问的”文件,然后双击.vbox文件,即可使用新位置重新添加该文件。
wenbert

在Linux主机上不起作用。收到此错误:在尝试打开虚拟机会话之前,已将其关闭。结果代码:NS_ERROR_FAILURE(0x80004005)组件:SessionMachine接口:ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7}
Max N

1
此方法的“删除”部分感觉很糟糕,可能会导致设置丢失,但事实并非如此。此方法维护您的所有设置,并且是我尝试过的所有方法中最简单的方法。它可以在Windows 10主机上使用Windows 7和Windows Sever 2016来宾。
夜间猫头鹰

13

在Mac上,编辑此文件中的路径:

/Users/pleddy/Library//VirtualBox/VirtualBox.xml

那很容易,事前!


3
他正在使用Windows,也不想编辑VirtualBox.xml。
克里斯尼

4
不过,这对我很有帮助,因为如果您使用的是Mac,这个问题仍然可以解决。
NReilingh

我是mac用户,google登陆了我,这个解决方案是最简单的,很有意义,并且为我工作过:)
Mohit Singh

我在linux上,并且喜欢这个答案的声音,但是由于文件顶部的警告而被推迟。您是否仍建议直接编辑XML?警告说:**请勿编辑此文件。如果您在运行与VirtualBox相关的任何应用程序时对此文件进行更改,则所做的更改将在以后覆盖,并且不会生效。使用VBoxManage或VirtualBox Manager GUI进行更改。**
craq

11

经过一整天的时间(在Arch Linux上使用Virtualbox 5.0.12),我终于以thomthom的答案所建议的方式解决了它。对于不确定确切过程的用户,克隆整个计算机(包括快照)的命令为:

VBoxManage clonevm --mode all --basefolder </new/path/> --register <VM_to_clone>

通过以下方式获取虚拟机名称

VBoxManage list vms

如有必要,请引用路径和名称。

最后,检查是否一切正常,然后取出原稿。

仅此而已。无需理会xml文件或十六进制编辑器。也不需要使用GUI。

http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm


这是唯一对我有用的答案。应该更高。
Max N

2
VM_to_clone是VM的UUID或名称。使用给定的命令(使用UUID),在创建了目录/new/path/_<UUID>_ Clone,并且包含文件也用作_<UUID>_ Clone名称。要明确使用更好的名称,请使用该--name "Your preferred name here"标志。
罗布W

...并通过CLI删除原始VM VBoxManage unregistervm UUID((通过获取的VM的UUID VBoxManage list vms,请不要使用VM名称,因为如果--name用于保留原始名称,那么您将拥有多个具有相同名称的VM))
Rob W

警告:克隆不会产生完美的副本,并且可能会随着计算机/磁盘ID的更改而触发更新已安装软件的许可证的需求。将VM上的Quicken的旧副本移动到新磁盘时遇到此问题。
MZB

无论如何,现在似乎有一个专用命令:virtualbox.org/manual/ch08.html#vboxmanage-movevm
Michael P

4

要做到一样卢卡斯Pottersky 答案,而是通过命令行(在Windows替换vboxmanageVBoxManage.exe):

  1. 列出所有虚拟机:

    vboxmanage list vms
    

    或仅运行:

    vboxmanage list runningvms
    

    每台机器的输出名称和UUID。

    对将要移动的每台机器执行以下步骤。

  2. 正常关闭它:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. 取消注册:

    vboxmanage unregistervm UUID
    
  4. 将虚拟机文件夹移动到新位置。

  5. 通过提供.vbox文件路径将其重新注册:

    vboxmanage registervm /path/to/machine.vbox
    

2

这也适用于MacOS版本的VirtualBox(版本4.1.12)。我等待了5到10秒钟让VirtualBox退出,然后重新启动。我查看了活动监视器,以确保VBoxSVC已正确退出。

如果不执行此操作,将收到类似于以下内容的错误(我正在复制并粘贴来自Windows的其他人的错误消息)。如果收到此错误,则仅仅是因为您没有退出VirtualBox或等待了足够长的时间才能退出VBoxSVC。

Failed to open virtual machine located in E:/<path>/<machine_name>/<machine_name>.vbox.

Cannot register the hard disk 'E:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' {0ece4bff-9185-4cff-9069-b3d1f4536394} 
because a hard disk 'C:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' with UUID {0ece4bff-9185-4cff-9069-b3d1f4536394} already exists.

Result Code: E_INVALIDARG (0x80070057)
Component: VirtualBox
Interface: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

2

在带有VirtualBox v4.3.14的OS X中,我要做的就是.vbox从新位置双击文件,然后打开VirtualBox并将其添加到可用VM列表中。


请不要添加“谢谢”作为答案。相反,请对您认为有帮助的答案进行投票。
斯科特

我的回答不是“谢谢”。我对措辞进行了编辑,以使其更加明显。谢谢。
泰森·菲尔普

2

VirtualBox下的设置中有一个默认存储位置: http://mattvelic.com/default-vm-location/

现在死了 Wayback机具有的内容:

http://web.archive.org/web/20131116130725/http://mattvelic.com/default-vm-location

...查看“文件”菜单中的“首选项”。看哪!常规选项卡中的第一项是默认计算机文件夹。 http://web.archive.org/web/20131116130725im_/http://54.225.211.105/wp-content/uploads/2012/11/VB_Preferences.png 我编辑了指向存储驱动器的位置,并快速重新制作了虚拟机。这次VirtualBox在正确的位置创建了计算机文件和VDI。这里真正的教训是,有时解决方案不必是技术性的。我认为作为IT专业人员,我们倾向于认为对问题的答案将很复杂。睁大眼睛寻找明显的解决方案!


现在该链接已失效。尽量不要发布链接作为答案。当他们死了时,SU会被遗留下来清理。
mrtsherman 2015年

更新了archive.org的内容
Rebecca

1

我认为这是不可能的。

您可以将VDI移到新位置,但是我认为您不能避免XML修改。作为替代方案(但实际上与XML版本相同),是否可以使用GUI创建新的虚拟机并选择移动的映像作为磁盘满足您的需求?


1
我再看了一下xml,它实际上非常简单。创建新机器并不好,因为我想保留自己的设置(我不记得自己所做的更改,可能完全不重要)。
maaartinus 2011年

1

我尝试了原始方法(删除VDI,附加新副本),得到的消息是旧副本仍然存在,即使重新启动OS(在Mac OS X El Capitan上)也无法附加新副本。

该修复程序在菜单/文件/虚拟媒体管理器中,删除了现有的VDI。即使有快照,此操作也有效;只需以相反的顺序删除所有快照VDI。无需关闭并重新打开VirtualBox。


0

我从未在Windows上使用过virtualbox,但在ubuntu上,您移动了VDI,在virtualbox GUI中,您右键单击了VM,然后使用Configuration Menu-> storage,可以在其中将VDI本地化更改为移动文件的位置。关于其他计算机文件定义,您可以移动它们,然后在GUI中转到“首选项”,然后将默认计算机目录的位置更改为所移动的目录。


0

我使用这种方法:

  1. 从VirtualBox GUI中,选择您的VM并删除附加的HDD
  2. 将文件(即vdi)复制到新位置
  3. 使用命令vboxmanage internalcommands sethduuid“我的myhdd.vdi的路径”在新位置为.vdi生成新的UUID 6912BF7F-13BB-4E70-A2CA-C92300FEC3DC

    (在上一个示例中,请使用您自己的UUID,或者根本不添加它:该命令将自动生成一个。同样,如果省略此步骤,则在从新位置添加.vdi时,您将得到一个错误,指出UUID已经存在)。

  4. 现在返回VirtualBox GUI,选择您的VM,然后在“设置/存储”中从新位置附加HD(.vdi文件)。

并做了。


-1

在Oracle VM VirtualBox(经过6.0.4版测试)中,只需关闭您的VM->右键单击VirtualBox Manager中的VM->单击“移动...”->选择新目录。而已!


@Moreaki:顺便说一句,“易读性”(和“易读性”)的拼写没有 “ D”。
斯科特
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.