VM 已变为 'inaccessible' - Vagrant 不再工作

VM has become 'inaccessible' - Vagrant no longer working

出于某种原因,今天早上当我 运行 'vagrant up' 时,我收到以下错误(这在一年多的时间里一直工作得很好)

Your VM has become "inaccessible". Unfortunately, this is a critical error with VirtualBox that Vagrant can not cleanly recover from. Please open VirtualBox and clear out your inaccessible virtual machines or find a way to fix them.

我可以尝试删除我现有的 .vagrant 文件夹并执行 vagrant up 操作,但由于我们的网速非常慢,这将永远持续下去 - 谁能建议如何快速解决此问题?

这对我有用

在对调试输出进行一些挖掘之后,我发现即使实际的 VM 完好无损(我可以从 VirtualBox GUI 应用程序加载并 运行 它),但在它的某个地方,VirtualBox 标记了这个 VM作为 ””。 Vagrant 信以为真,吐出了错误信息。

查看 VBoxManage 的帮助后,我发现它的一个命令 list vms 不出所料地列出了所有在 VirtualBox 中注册的 VM:

$ /cygdrive/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe list vms
"precise64" {3613de48-6295-4a91-81fd-36e936beda4b}
"<inaccessible>" {2568227e-e73d-4056-978e-9ae8596493d9}
"<inaccessible>" {0fb42965-61cb-4388-89c4-de572d4ea7fc}
"<inaccessible>" {c65b1456-5771-4617-a6fb-869dffebeddd}
"<inaccessible>" {9709d3d5-ce4d-42b9-ad5e-07726823fd02}

其中一个标记为无法访问的 VM 是我丢失的 VM!是时候修复 VBoxManage 的旅行车了,通过取消注册 VM 为不可访问,然后用正确的名称重新注册它:

  1. 打开丢失的 VM 的配置文件。我的已保存到 C:\cygwin\home\Philip\VirtualBox VMs\rails-vm-v2\rails-vm-v2.vbox
  2. 查找并复制 Machine 节点的 uuid 属性的值。我的是 9709d3d5-ce4d-42b9-ad5e-07726823fd02.
  3. 在 Windows 命令提示符(或 Cygwin 终端)中,使用步骤 2 中的 [uuid] 值,使用 unregistervm 命令注销虚拟机:

    $ C:\Program Files\Oracle\VirtualBox\VBoxManage.exe unregistervm [uuid]
    
  4. 现在使用 registervm 命令注册虚拟机,使用虚拟机配置文件的路径:

    $ C:\Program Files\Oracle\VirtualBox\VBoxManage.exe registervm C:\cygwin\home\Philip\Virtual VMs\rails-vm-v2\rails-vm-v2.vbox
    

    现在您应该可以按预期启动虚拟机了。

来源: http://www.psteiner.com/2013/04/vagrant-how-to-fix-vm-inaccessible-error.html

这对我有用:

在我的 "C:\Users{user}\VirtualBox VMs{vm-id}" 文件夹中有两个文件

  • {vm-id}.vbox-prev
  • {vm-id}.vbox-tmp

从“{vm-id}.vbox-tmp”重命名为“{vm-id}.vbox”解决了我的问题,我可以打电话给 "vagrant up"

您只需从项目文件夹中删除 .vagrant 文件夹,然后 运行 重新启动 vagrant。

使用以下命令之一找到无法访问的那个:

$ vagrant global-status

或:

$ VBoxManage list vms

然后记下 GUID,并将其从 VirtualBox.xml 文件中删除 (OS X: ~/Library/VirtualBox/VirtualBox.xml, Windows: %HOME%/.VirtualBox).

或者从您的 VM 所在的文件夹中删除 .vagrant 文件夹,然后从头开始 (vagrant up)。

另请参阅:Cannot Delete "Inaccessible" virtual machines from Virtualbox GUI 在 VirtualBox

这里没有对我有用的东西。

  1. 我删除了(或重命名见第一条评论)来自
  2. 的所有文件

C:\Users[YourNameHere].VirtualBox

  1. 运行 再次流浪:

    vagrant up

现在开始了。

我的问题是一样的,但解决方法却大不相同...我的虚拟机存储在网络驱动器上,可通过 NFS 共享访问。远程驱动器在重启后无法启动,因此无法访问虚拟机。 我花了一段时间才意识到原因,同时在没有解决方案的情况下到处寻找。

然后我意识到,捂脸,安装路径,一切都奏效了。

所以简而言之,这是一个路径问题。

我觉得我应该把它包括在这里,以防它帮助到同一条船上的人。

VirtualBox Manager 可能会为您提供更多有用的信息,例如在我的案例中,它报告 .vbox 文件不存在。

查看后问题确实是该文件不存在 - 某些东西已将其重命名为 x.vbox-tmp(关闭 PC 与 VM 仍然 运行 也许?)

我将 x.vbox-prev 文件复制到 x.vbox 并尝试再次启动 VM,一切正常。

我不得不将 [vm-id].vbox-tmp(在 VirtualBox 虚拟机上)重命名为 [vm-id].vbox。之后,在不删除 .vagrant 文件夹的情况下,我可以 运行 vagrant up 并且效果很好。

如果有人手动从 VirtualBox VMs 文件夹中删除您的虚拟机,在这种情况下您的虚拟机也将无法访问。但是,您将无法取回您的机器,但 vagrant 仍会在列表中显示您的虚拟机。要将其从 vm 列表中完全删除,请转到

\.vagrant.d\data\machine-index 

并打开索引文件。删除不可访问机器的引用。下次当你运行下面的命令时,它不会显示你无法访问的机器。

vagrant global-status --prune

在 Linux 上,以下将注销机器:

VBoxManage list vms
VBoxManage unregistervm <inaccessible machine UID>

之后您可能需要重新启动 VB 服务:

sudo /sbin/vboxconfig

删除 .vagrant 文件夹可能会有帮助,但您必须重建机器。

通过使用命令行,您可以使用一行代码删除所有无法访问的框:

VBoxManage list vms |grep inaccessible |cut -d "{" -f2 |cut -d "}" -f1 |xargs -L1 VBoxManage unregistervm 

https://phz.fi/?p=8422

我也遇到了这个问题。 重新启动 macOS virtualbox 后更改 virtualBox 的目录时,所有 vms 都无法访问。

我的解决方案奏效了。

只需将虚拟框移动到默认目录即可。 从 gui 中删除所有不可访问的虚拟机,然后从默认路径下一个 运行 注册虚拟机。

vagrant up