Vagrant Up失败,因为名称已存在。

17

最近我开始使用Virtualbox、Vagrant和VVV作为我的本地WordPress开发环境。这非常流畅。

但是我遇到的一个问题是,在使用“vagrant halt”关闭后,下一次使用“vagrant up”时会出现以下错误:

==> default: Setting the name of the VM: vagrant-local 
The name of your virtual machine couldn't be set because VirtualBox
is reporting another VM with that name already exists. Most of the
time, this is because of an error with VirtualBox not cleaning up
properly. To fix this, verify that no VMs with that name do exist
(by opening the VirtualBox GUI). If they don't, then look at the
folder in the error message from VirtualBox below and remove it
if there isn't any information you need in there.

VirtualBox error:

VBoxManage.exe: error: Could not rename the directory 'C:\VirtualBox VMs\ubuntu-cloudimg-trusty-va
230_94704' to 'C:\VirtualBox VMs\vagrant-local' to save the settings file (VERR_ALREADY_EXISTS)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component SessionMachine, interface IMac
VBoxManage.exe: error: Context: "SaveSettings()" at line 3015 of file VBoxManageModifyVM.cpp

我访问了位于C:\VirtualBox VMs\的位置,确实发现那个目录 'vagrant-local' 已经存在。如果我删除(或重命名)这个目录并再次运行 'vagrant up',虚拟机就会启动。但是,它还会执行完整的配置过程。当然,这需要很长时间。

我正在使用VVV和Vagrant的所有默认配置。我该怎么做才能帮助VirtualBox“正确清理”并认识到它不需要在每次停止和重新启动时重新创建虚拟机。

或者,我只是忽略了什么?如果可以,请提供“初学者级别”的响应。我在这个领域是初学者,非常感谢您的帮助!谢谢。


当前状态:我已从C:\VirtualBox VMs\中删除了有关虚拟机的信息;以管理员身份运行Git Bash,我已能够使用 vagrant up(进行完整的配置过程),vagrant haltvagrant up,都得到了预期的结果(第二个up没有进行配置)。目前为止,一切似乎都正常。看起来... :)


我可以检查状态。我在此线程中找到了一些见解,因为我在同一台工作站上也遇到了OP所描述的问题。如果这是权限问题,那么我应该检查哪些特定的权限设置呢?例如,我的权限应该是什么,涉及哪些目录? - ensminger
在Windows上运行,如果您以管理员身份运行,则应该没问题。 - Frederic Henri
非常感谢您的帮助!当前状态:以管理员身份运行Git Bash,我刚刚使用了vagrant upvagrant halt和再次使用vagrant up,所有结果都符合预期。目前看来,一切都正常。看起来... :) 我会接受您的答案并考虑它已经关闭,但我缺少声望。 - ensminger
好事情...作为OP,你应该能够接受答案,但有可能无法投票支持。 - Frederic Henri
完成。[羞涩的表情] 再次感谢。 - ensminger
显示剩余3条评论
6个回答

25
如果你在使用Mac电脑时,执行vagrant destroy命令无法正常工作,并且出现以下消息:VirtualBox 报告已经存在另一个同名虚拟机,因此无法设置您的虚拟机名称。 那么您需要进入您用户文件夹下的 VirtualBox VMs 文件夹并删除该虚拟机文件夹。
由于正在尝试为已经存在具有相同名称的文件夹创建设置,因此虚拟机处于奇怪的状态。

3
这是最佳答案。它与错误信息的第一行相关,并解决了该问题。 - David Maness
1
在删除有问题的文件夹后,在 vagrant up 成功之前,我还必须关闭/打开我的主机(MacOs Big Sur)。 - Treefish Zhang
1
删除homestead文件夹对我有用,谢谢。 - Dazzle

4

我的情况比大多数人要简单一些。我检查了“Virtual Box VMs”目录(对于Windows),并删除了以它尝试命名的文件夹。这解决了我的问题。


1
我在使用vagrant up时遇到了上述的git bash错误。出现此问题有多种可能性。
我已经使用以下步骤,成功地运行了vagrant命令:
  1. 打开Oracle VM虚拟管理器-在此Oracle VM虚拟管理器面板中,删除当前正在运行的虚拟机。
  2. 退出git bash命令提示符
  3. 再次打开git bash
  4. 作为vagrant up运行vagrant up命令
vagrant up命令将成功运行。
请注意: 确保在关闭git bash命令提示符时运行vagrant halt命令。
首先运行vagrant halt,然后是exit命令。

请记住,执行“vagrant up”命令时,这将删除虚拟机并重新运行配置。 - Omnibyte

0

嗯... 这是一个奇怪的问题。当您运行 vagrant halt 时,它只会发送信号来终止虚拟机。

Vagrant将所有配置保存在一个名为 .vagrant 的目录下(至少对于Mac OS和Linux而言,不确定Windows是否完全一致),您不应删除此目录,因为它包含有关虚拟机的所有引用。 因此,当您下次运行vagrant up时,Vagrant将从该目录中搜索信息以启动相应的虚拟机,并且它知道无需重新创建虚拟机或进行任何预配。

删除有关VM的信息的正确方法是运行vagrant destroy,它将删除所有的.vagrant目录和虚拟机。

然后可以通过重新链接 .vagrant 目录和 VM 来解决问题,但这有点棘手并且不确定官方是否支持。

当您使用Vagrant时,VirtualBox应该变得(几乎)透明,您不需要启动它来使用虚拟机,一切都应该由Vagrant运行(至少在初学阶段)。

注意: 在Windows上运行时,如果您以管理员身份运行,则应该没有问题。


感谢您的回复! 我在使用Windows。 我知道vagrant destroy(因为我用它来删除了一些“练习”机器)。 在这种情况下,我正在使用vagrant halt并且[默认意图仅是“关闭电源”](https://docs.vagrantup.com/v2/cli/halt.html)。 这是正确的命令吗? - ensminger
1
是的,vagrant halt基本上等同于运行sudo shutdown -P now - Frederic Henri

0
VBoxManage:错误:无法将目录“<SOURCE>”重命名为“<DESTINATION>”以保存设置文件(VERR_ALREADY_EXISTS
如果您不关心虚拟机状态并且可以从头开始进行配置,则删除目标文件夹,然后应该可以正常工作。还要仔细检查是否已从VirtualBox列表中删除它。
这可能是由于VirtualBox没有正确清理或您中断了清理过程(例如,在vagrant destroy的中间按下Ctrl-C)导致的。

0
在我的情况下,我需要清理VirtualBox文件。它基本上显示了带有错误消息的文件位置,但是如果您没有看到,请按照以下命令操作。我使用Ubuntu 22.02。
cd /home//VirtualBox\ VMs/
然后查看是否有任何不必要的目录。 ls
您需要删除您不需要的文件目录,因此运行
rm -rf 然后返回到您的vagrant目录并输入,
vagrant up 它将解决问题!

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