【问题标题】:VM has become 'inaccessible' - Vagrant no longer workingVM 已变得“无法访问” - Vagrant 不再工作
【发布时间】: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,但这将永远影响我们非常缓慢的互联网速度 - 谁能建议如何快速解决这个问题?

【问题讨论】:

标签: windows-7 vagrant virtual-machine virtualbox


【解决方案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】:

          这里没有什么对我有用。

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

          C:\Users[YourNameHere].VirtualBox

          1. 再次运行 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 的问题了,将虚拟机注销为不可访问,然后使用正确的名称重新注册:

            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 命令取消注册 VM:

              $ 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

            【讨论】:

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

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

            【讨论】:

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

            这对我有用:

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

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

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

            【讨论】:

            • 先试试这个,这个答案比公认的更好,因为它更简单(如果它适合你的话)。对我来说也很有魅力:)
            • 干得好。欣赏它:)
            • 对我来说也是完美的方式。谢谢!
            • 也可以在 Win10 上工作。为我节省了很多时间谢谢!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多