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 的“我的问题是相同的,但修复方法完全不同...我的虚拟机存储在网络驱动器上,可通过 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 网站