VirtualBox无法注册硬盘,因为已存在

201

我创建了一个虚拟磁盘文件VM_1_Ubuntu.vdi。然后我把它移动到了另一个文件夹中。我试图更新虚拟机的设置(右键单击虚拟机->设置->存储->控制器SATA选项卡,VM_1_Ubuntu.vdi路径)。我想设置一个新路径。

它说 无法注册硬盘,因为已经存在

11个回答

295

3
如果存储磁盘的驱动器不可用,则首先从虚拟机中释放(Ctrl + L)磁盘并删除(Ctrl + D)。否则,在释放磁盘之前,您将无法删除。之后,请按照上面链接中的步骤或打开虚拟机的“设置”,转到“存储”,单击“添加附件”,选择“添加硬盘”和“选择现有磁盘”,然后选择vdi文件即可完成。 - Syed Nasir Abbas
1
你需要删除所有快照,这样移除按钮才不会变灰。 - Rishi
先发布,然后再删除权限! - Harvey68
现在,虚拟媒体管理器已经移动到“文件”>“工具”>“虚拟媒体管理器”。 - Adeel Raza Azeemi

181
可以使用以下命令更改VDI文件的UUID:
VBoxManage internalcommands sethduuid <file.vdi>

这个命令似乎给文件分配了一个新的“随机”UUID。不过,关于它的文档不多。

2
非常适合我的需求(调整虚拟硬盘大小而无需移动它)。 - shiri
5
VBoxManage是一个exe程序,对于我来说它位于"C:\Program Files\Oracle\VirtualBox"文件夹中,因此只需从命令提示符窗口运行即可。 - Giles
2
这是一个理想的解决方案,当您拥有一个基本的操作系统映像,并希望在基本映像的副本上安装多个应用程序的副本时,无需更改基本映像本身。 - Jersey_Guy
2
帮助我调整了驱动器大小。 - Zumteufel
1
该解决方案还解决了我的一个问题,即我已将虚拟机复制到另一个位置,从VirtualBox中删除了原始文件,并尝试压缩磁盘的情况。命令:$ VBoxManage modifymedium Windows\ 7\ Professional.vdi --compact错误信息:VBoxManage:错误:无法注册硬盘'/Users/c/VirtualBox VMs/Windows 7 Professional/Windows 7 Professional.vdi' {a510ee0d-2cef-47db-b25f-acae9e341d45},因为带有UUID{a510ee0d-2cef-47db-b25f-acae9e341d45}的硬盘'/Volumes/ramdisk/Windows 7 Professional/Windows 7 Professional.vdi' 已经存在。 - EmpathicSage
显示剩余3条评论

34
  1. 从Oracle VM VirtualBox管理器中选择文件
  2. 虚拟媒体管理器
  3. 从硬盘选项卡中删除文件(黄色高亮显示)。

18

以下是解决方案: 查找盒子的 UUID

vboxmanage list hdds

然后通过删除

vboxmanage closemedium disk <uuid> --delete

在运行这两个命令之前,不要忘记导航到VirtualBox目录C:\Program Files\Oracle\VirtualBox,然后在该目录中运行命令提示符。 - Hasanuzzaman Sattar

9
如果在我的情况下无法使用Virtual Media Manager删除或更改硬盘文件的路径,则需要执行以下操作:
  1. 在任何文本编辑器中打开“.vbox”和“.vbox-prev”(如果存在)文件。
  2. 将元素“HardDisk”的“location”属性编辑为您的路径,例如:“d:/VM/VirtualBox/Win10/Win10.vmdk”(screenshot)。

5
在某些情况下,您需要先释放,然后通过虚拟媒体管理器删除和重新添加。

4

非常感谢这里的建议。Impaler和Oleg的评论帮助我整合了我的解决方案。

使用VBoxManage CLI。有一个modifymedium命令,其中包含一个 --setlocation 选项。

建议打开VBox GUI(在VM VirtualBox Manager 6.0上)
- 选择“虚拟媒体管理器”(我使用了文件菜单)
- 选择给您此错误的磁盘的“信息”按钮
- 复制UUID
注意:在下一步之前,我将控制器从“存储”设置中删除。
- 打开您的命令提示符并导航到.vdi文件的位置
最好键入VBoxMange以查看选项列表,但这是要运行的命令:

VBoxManage modifymedium [插入介质类型] [UUID] --setlocation [完整的.vdi文件路径]

最后,将控制器重新附加到任何VM上--最好是您想要修复的VM。


3

1 - 打开任何文本编辑器中的'.vbox'和'.vbox-prev'文件(如果存在),并将HardDisk uuid的第一个字符替换为另一个字符(请注意在步骤6中恢复此更改)

示例:nano /home/virtualbox/WindowsServer/WindowsServer.vbox

更改:

<HardDisks>
        <HardDisk uuid="{3ebaa9b6-8318-4b81-b853-8f30dd278bdc}" location="/home/virtualbox/WindowsServer/WindowsServer.vdi" format="VDI" type="Normal"/>

致:

<HardDisks>
        <HardDisk uuid="{2ebaa9b6-8318-4b81-b853-8f30dd278bdc}" location="/home/virtualbox/WindowsServer/WindowsServer.vdi" format="VDI" type="Normal"/>

2 - 重新启动机器

4 - 停止虚拟机(如果已经启动)

5 - 在终端上执行以下操作:

su vbox
cd /home/virtualbox/WindowsServer/
VBoxManage modifyhd WindowsServer.vdi --resize SIZE
exit
exit

更改以MB为单位的数字的大小,例如80000(80GB)。

6 - 用任何文本编辑器再次打开文件'.vbox'和'.vbox-prev'(如果存在),并将HardDisk uuid的第一个字符替换为原始值。

示例:nano /home/virtualbox/WindowsServer/WindowsServer.vbox

更改:

<HardDisks>
        <HardDisk uuid="{2ebaa9b6-8318-4b81-b853-8f30dd278bdc}" location="/home/virtualbox/WindowsServer/WindowsServer.vdi" format="VDI" type="Normal"/>

To:

<HardDisks>
        <HardDisk uuid="{3ebaa9b6-8318-4b81-b853-8f30dd278bdc}" location="/home/virtualbox/WindowsServer/WindowsServer.vdi" format="VDI" type="Normal"/>

7 - 重新启动设备


2
我用的解决方法如下:
  1. 确保VirtualBox Manager没有在运行。
  2. 备份文件~\.VirtualBox\VirtualBox.xml~\.VirtualBox\VirtualBox.xml-prev
  3. 编辑这些文件,修改<HardDisks>...</HardDisks>部分,删除<HardDisk />的重复条目。
  4. 现在运行VirtualBox Manager。
例子:
  <HardDisks>
    <HardDisk uuid="{38f266bd-0959-4caf-a0de-27ac9d52e3663}" location="~/VirtualBox VMs/VM1/box-disk001.vmdk" format="VMDK" type="Normal"/>
    <HardDisk uuid="{a6708d79-7393-4d96-89da-2539f75c5465e}" location="~/VirtualBox VMs/VM2/box-disk001.vmdk" format="VMDK" type="Normal"/>
    <HardDisk uuid="{bdce5d4e-9a1c-4f57-acfd-e2acfc8920552}" location="~/VirtualBox VMs/VM2/box-disk001.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>

请注意上面片段中的最后两个条目都是指向同一个虚拟机,但它们有不同的uuid。其中一个是无效的,应该被删除。可以通过试错方法找出哪一个是无效的--首先移除第二个条目并尝试;如果不起作用,请移除第三个条目。

这是适用于我的解决方案,经过一次Windows更新和重新启动后,我的VB出现了故障,无法启动并显示错误,提示硬盘UUID已存在。在Windows上,这两个文件位于C:\Users\user.VirtualBox。我在编辑每个文件之前都制作了副本,并删除了它所说的已存在的UUID,这样就能够启动VB了。 - Chris Jenks

1

经过多日的努力,终于找到了一个完美解决方案。

Mac OS 打开您的主目录中的~/Library文件夹,并删除(移动到安全位置)VirtulBox文件夹。这将删除所有配置,您可以重新启动虚拟机!

其他系统 在您的主目录中查找 .virtualbox 文件夹。删除它并打开VirtualBox应该可以解决您的问题。

干杯!!


我在我的Virtualbox虚拟机上按照这个解决方案操作,结果丢失了所有的虚拟机实例。不要按照这个答案操作,可能会很危险。 - Hasanuzzaman Sattar
@HasanuzzamanSattar 那时它是有效的,但我不知道现在是否仍然适用。你是永久删除了它吗?在删除之前移动是一个安全的选项!! - Lasithds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接