【问题标题】:VM in virtualbox is already locked for a session (or being unlocked)virtualbox 中的虚拟机已经为会话锁定(或正在解锁)
【发布时间】:2016-02-03 06:11:02
【问题描述】:

由于这个错误,我的虚拟机中的虚拟机无法启动,我不想销毁它并重新安装它,无论如何要恢复它?

执行 VBoxManage 时出错,这是 Vagrant 使用的 CLI 用于控制 VirtualBox。命令和标准错误如下所示。

Command: ["modifyvm", "319fcce3-e8ff-4b6f-a641-3aee1df6543f", "--natpf1", "delete", "ssh"]

Stderr: VBoxManage: error: The machine 'centos64_c6402_1454036461345_59755' is already locked for a session (or being unlocked)
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
VBoxManage: error: Context: "LockMachine(a->session, LockType_Write)" at line 493 of file VBoxManageModifyVM.cpp

【问题讨论】:

    标签: virtualbox


    【解决方案1】:

    在命令行上运行它解锁了虚拟机:

    vboxmanage startvm <vm-uuid> --type emergencystop
    

    其中&lt;vm-uuid&gt; 是错误消息中的数字:Command: ["modifyvm", "&lt;vm-uuid&gt;" [...]。之后,我能够控制虚拟机(启动、停止等)。 在 Ubuntu 上使用 Virtualbox 4.1。

    【讨论】:

    • thanx 伙计,这对我很有帮助,我遇到了一些关于 docker 中的共享文件夹的问题。我无法删除共享文件夹(错误:找不到名为“ourspends”的共享文件夹),而且在创建时,它说它已经存在(无法创建映射到“/”的共享文件夹“ourspends” home/relu/projects/ourspends' (VERR_ALREADY_EXISTS))
    • 我在哪里运行这个?显然,这不是来自 VM 本身,因为“vboxmanage”命令与主机上的 VBox 软件相关,而 VM 本身无法识别这一点。另一方面,我的主机也不知道此命令(在我的情况下,它是 Windows 10)。那么......那么我需要什么来运行这个命令呢?
    • 我在使用 Linux 的终端中执行了它。我猜想在 Windows 中它可以在命令提示符 (cmd) 中执行。已使用 VirtualBox 4.1 进行了测试
    • 使用 VBoxManage -nologo list vms 找出你的 vm-uuid
    • 对于 Windows,您需要完整路径,因此请运行 "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" &lt;vm-uuid&gt; --type emergencystop
    【解决方案2】:

    遇到同样的问题,我发现有一个进程正在运行,实际上锁定了虚拟机:

    501 79419 79323   0  2:18PM ??         0:39.75 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment default --startvm 1d438a2e-68d7-4ba2-bef9-4ea162913c1b --vrde config
    

    确保您在尝试启动 vm 时没有卡住进程:

    ps -ef | grep -i "vbox"
    

    【讨论】:

    • 这对我有用。我杀死了 ps -ef 语句返回的所有进程,然后“vagrant destroy”再次工作。
    【解决方案3】:

    我发现@Gonzalez 的这个答案很有趣。

    vboxmanage startvm <vm-uuid> --type emergencystop
    

    唯一的问题是它关闭了我的虚拟机的当前实例,所以如果当前的虚拟机正在运行,你可以使用controlvm,而不是使用modifyvm

    例如:

     VBoxManage modifyvm <vm_name> --natpf1 "guestssh,tcp,,22,,2222"
     VBoxManage modifyvm <vm_name> --natpf1 delete "guestssh"
    

    变成:

    VBoxManage controlvm <vm_name> natpf1 "guestssh,tcp,,22,,2222"
    VBoxManage controlvm <vm_name> natpf1 delete "guestssh"
    

    完整的文档在这里 https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm

    【讨论】:

    • VBoxManage controlvm "Ubuntu_1604s" --natpf1 "u8848,tcp,,18848,,8848" 但我得到的错误与 modifyvm 错误相同:上下文:"LockMachine(a->session, LockType_Shared)" at VBoxManageControlVM.cpp文件第388行有什么解决办法吗?
    【解决方案4】:

    sudo pkill -9 VBox 杀死所有与 vbox 相关的运行

    【讨论】:

    • 这是一个非常糟糕的主意,因为如果您有多个客人,它会杀死所有客人,甚至不给他们关闭一切的机会,因此很可能会导致数据丢失。跨度>
    • 我什至无法想象谁会对此投赞成票。运行多个客户机肯定会使这些客户机处于未定义状态,很有可能导致数据和控制丢失。
    • 如@Gonzalo Matheu 和@Erman 所述,正确 答案是vboxmanage startvm &lt;vm-uuid&gt; --type emergencystop
    【解决方案5】:

    对我来说,我不得不在任务管理器中杀死 VboxHeadless.exe 进程。我还必须确保在管理模式下打开 CMD 提示符。

    【讨论】:

    • 使用 Linux 也为我工作。建议正常关闭所有其他也在运行的 VM(如果在终端中,可以使用 ps aux | grep box)。
    【解决方案6】:

    在 Windows 任务管理器中,我结束了与 Virtual Box 相关的所有任务(您可以在任务管理器中看到它们以 V 开头,例如 Vbox Headless.exe 等)。一旦我这样做了,我就能让这个错误消失(上面的 'vboxmanage startvm ...etc...' 解决方案对我不起作用)。

    【讨论】:

      【解决方案7】:

      如果您在 VirtualBox GUI 中为该框打开了设置窗口,您可能会遇到此错误。只需关闭设置窗口,然后重试。

      【讨论】:

        【解决方案8】:

        我今天遇到了同样的错误信息:

        >me@myhost:~$ ps -ef | grep -i "vbox"
        
        me  3064     1  0 08:51 ?        00:00:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
        
        me  3089     1  0 08:51 ?        00:00:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
        
        me  3126  3089 27 08:51 ?        00:00:39 /usr/lib/virtualbox/VBoxHeadless --comment RHEL5 64-bit desktop --startvm e5c598d8-1234-4003-a7c1-b9d8af15dfe7 --vrde config
        
        me  3861  3415  0 08:53 pts/1    00:00:00 grep --color=auto -i vbox*
        

        Gergely 的回答完美解决了这个问题。原来我在重启时设置了一个crontab来启动虚拟机,它启动了上面显示的三个VBox进程

        me@myhost:~$ crontab -l
        
        @reboot me /usr/bin/vboxmanage startvm "RHEL5 64-bit desktop" --type headless
        

        【讨论】:

          【解决方案9】:

          对我有用的唯一选择是杀死所有匹配 ps axl|grep -i vbox 的进程。

          【讨论】:

            【解决方案10】:

            就我而言,明显的原因是在暂停机器后移除了 USB 以太网适配器。就我而言,

            vboxmanage startvm <vm-uuid> --type emergencystop
            

            没有帮助。相反,我收到了令人困惑的信息,即

            VBoxManage: error: The machine 'xyzzy' is not locked by a session
            

            真正的错误是通过运行发现的

            vboxmanage startvm <vm-uuid> --type gui
            

            返回的

            VBoxManage: error: Nonexistent host networking interface, name 'en9: USBPlug' (VERR_INTERNAL_ERROR)
            

            将网络配置更改为不同的网络适配器解决了这个问题。

            【讨论】:

              猜你喜欢
              • 2018-05-01
              • 1970-01-01
              • 2019-06-21
              • 2015-12-17
              • 1970-01-01
              • 1970-01-01
              • 2012-12-25
              • 1970-01-01
              • 2020-09-20
              相关资源
              最近更新 更多