VM 已变得“无法访问” - Vagrant 不再工作

Posted

技术标签:

【中文标题】VM 已变得“无法访问” - Vagrant 不再工作【英文标题】:VM has become 'inaccessible' - Vagrant no longer working 【发布时间】:2015-08-20 04:20:12 【问题描述】:

由于某种原因,今天早上我运行“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,但这将永远影响我们非常缓慢的互联网速度 - 谁能建议如何快速解决这个问题?

【问题讨论】:

Oracle virtual box inaccessible的可能重复 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

我的解决方案奏效了。

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

vagrant up

【讨论】:

【参考方案3】:

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

VBoxManage list vms
VBoxManage unregistervm <inaccessible machine UID>

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

sudo /sbin/vboxconfig

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

【讨论】:

【参考方案4】:

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

\.vagrant.d\data\machine-index 

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

vagrant global-status --prune

【讨论】:

谢谢!用于删除之前创建的缓存,播种最新状态。【参考方案5】:

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

【讨论】:

这似乎与@Danny Wheeler 的答案及其 cmets 中的建议中描述的解决方案相同。【参考方案6】:

VirtualBox Manager 可能会给你一些更有用的信息,例如在我的例子中它报告.vbox 文件不存在。

查看后问题确实是该文件不存在 - 将其重命名为 x.vbox-tmp(可能在 VM 仍在运行的情况下关闭 PC?)

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

【讨论】:

我选择了另一个文件 homestead-7.vbox-tmp 并将其重命名为 homestead-7.vbox,它又可以工作了。 我还选择了.vbox-prev 而不是x.vbox-tmp,考虑到临时终止可能会导致不一致。 (感谢 Windows 更新。) 我的情况的原因确实是在 VM 仍在运行的情况下关闭 PC。谢谢 它也对我有用...可能是由系统崩溃引起的。快速参考:vbox 文件可以在 Windows 的“\VirtualBox VMs”中找到。【参考方案7】:

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

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

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

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

【讨论】:

【参考方案8】:

这里没有什么对我有用。

    我从 删除(或重命名)所有文件

C:\Users[YourNameHere].VirtualBox

    再次运行 vagrant:

    vagrant up

现在好了。

【讨论】:

这对我有用,将我的 .VirtualBox 重命名为 incase 并运行 homestead up/vagrant up。 我会将此添加到我的解决方案中【参考方案9】:

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

$ 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

【讨论】:

【参考方案10】:

这对我有用

在对调试输出进行了一些挖掘之后,我发现即使实际的 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

其中一个标记为无法访问的虚拟机是我丢失的虚拟机!是时候修复 VBoxManage 的问题了,将虚拟机注销为不可访问,然后使用正确的名称重新注册:

    打开丢失的 VM 的配置文件。我的已保存到C:\cygwin\home\Philip\VirtualBox VMs\rails-vm-v2\rails-vm-v2.vbox 查找并复制 Machine 节点的 uuid 属性值。我的是9709d3d5-ce4d-42b9-ad5e-07726823fd02.

    在 Windows 命令提示符(或 Cygwin 终端)中,使用第 2 步中的 [uuid] 值通过 unregistervm 命令取消注册 VM:

    $ C:\Program Files\Oracle\VirtualBox\VBoxManage.exe unregistervm [uuid]
    

    现在使用 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

【讨论】:

拯救了我的一天(在 Win7 主机上)!谢谢! 当与vboxmanage 命令而不是VBoxManager.exe 一起使用时,这也适用于linux,而VBoxManager.exe 显然不存在于linux 中【参考方案11】:

您可以简单地从项目文件夹中删除 .vagrant 文件夹,然后再次运行 vagrant。

【讨论】:

删除 .vagrant 文件夹可能会导致 vagrant 从头开始​​重新创建 VM。如果您需要修复损坏的 VM,这可能不是正确的方法。如果 VM 完全是一次性的且可重新创建,那么这是解决问题的简单方法。【参考方案12】:

这对我有用:

在我的“C:\Usersuser\VirtualBox VMsvm-id”文件夹中有两个文件

vm-id.vbox-prev vm-id.vbox-tmp

从“vm-id.vbox-tmp”重命名为“vm-id.vbox”解决了我的问题,我可以调用“vagrant up”

【讨论】:

这就像一个魅力:) doodlebobbers.com/vagrant-error-your-vm-has-become-inaccessible 先试试这个,这个答案比公认的更好,因为它更简单(如果它适合你的话)。对我来说也很有魅力:) 干得好。欣赏它:) 对我来说也是完美的方式。谢谢! 也可以在 Win10 上工作。为我节省了很多时间谢谢!

以上是关于VM 已变得“无法访问” - Vagrant 不再工作的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Edge 不会在 Vagrant VM 中加载本地 nginx 网站

Microsoft Edge不会在Vagrant VM中加载本地nginx网站

.bashrc:权限被拒绝

Vagrant 卡在“等待 VM 启动”

(虚拟机)VM 内的 ls /vagrant 挂起

Vagrant Homestead'存储'文件夹权限被拒绝[已结束]