VirtualBox无法注册硬盘已存在


151

我创建了一个虚拟磁盘文件VM_1_Ubuntu.vdi。然后我将其移至另一个文件夹。我尝试更新VM设置(右键单击虚拟机->设置->存储->控制器SATA选项卡,VM_1_Ubuntu.vdi路径)。我想开辟一条新路。

表示无法注册硬盘已经存在

Answers:


220

我找到了解决方案

文件->虚拟媒体管理器->删除现有映像(请注意,我仅从注册表中删除了它们)。

我遵循了这些步骤。

http://www.webdesignblog.asia/software/virtualbox-moving-vdi-file-re-linking-guest/#sthash.1QOHeiw5.dpbs

之后,我可以更新VM设置中的路径。


2
如果存储磁盘的驱动器不可用,则首先从VM释放(Ctrl + L)磁盘,然后从Delete(Ctrl + D)释放磁盘。否则,在释放磁盘之前,您将无法删除。之后,请按照上述链接中的步骤或打开虚拟机的“设置”,转到“存储”,单击“添加附件”,选择“添加硬盘”和“选择现有磁盘”,然后选择vdi文件,然后完成。
Syed Nasir Abbas

1
您必须删除所有快照,以便“删除”按钮不会显示为灰色。
Rishi

150

可以使用以下命令更改VDI文件上的UUID:

 VBoxManage internalcommands sethduuid <file.vdi>

似乎此命令为文件分配了一个新的“随机” UUID。不过,没有太多的文档。


2
非常适合我的需要(调整虚拟硬盘的大小无法正常工作,而无需移动它)。
shiri

3
VBoxManage是一个exe文件,对我来说是“ C:\ Program Files \ Oracle \ VirtualBox”,因此只需从cmd窗口运行即可。
吉尔斯

1
当您拥有基本的操作系统映像并且想要应对在基本副本上安装多个应用程序而不必更改基本本身时,这是理想的解决方案。
Jersey_Guy

帮助我调整驱动器的大小
Zumteufel

该解决方案还解决了以下情况:我将VM复制到另一个位置,从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'已经存在
Zahnon


7

如果无法使用Virtual Media Manager(在我的情况下)删除或更改硬盘文件的路径,则:

  1. 在任何文本编辑器中打开“ .vbox”和“ .vbox-prev”(如果存在)文件。
  2. 将元素“ HardDisk”的“位置”属性编辑到您的路径,例如:“ d:/VM/VirtualBox/Win10/Win10.vmdk”(屏幕截图)。


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

将大小的大小更改为兆字节,例如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"/>

至:

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

7-重新启动机器


3

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

使用VBoxManage CLI。有一个带有--setlocation选项的modifymedium命令。

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

VBoxManage modifymedium[在此处插入媒体类型] [UUID] --setlocation[.vdi文件的完整路径]

最后,将控制器重新连接到任何VM,最好是要修复的VM。


0

适用于我的解决方案如下:

  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>

请注意,在以上片段中,最后两个条目引用相同的VM,但具有不同的uuid。其中之一无效,应将其删除。可以通过点击和尝试找出哪个无效-首先删除第二个条目并尝试;如果不起作用,请删除第三个条目。


0

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

Mac OS 打开〜/ Library文件夹(在您的主目录中),然后删除VirtulBox文件夹。这将删除所有配置,您可以再次启动虚拟盒!

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

干杯!!

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.