ВМ в виртуальном ящике уже заблокирована для сеанса (или разблокируется)


85

Моя виртуальная машина в виртуальном боксе не может запуститься из-за этой ошибки, я не хочу ее уничтожать и переустанавливать заново, все равно восстановить?

Во время выполнения произошла ошибка VBoxManageCLI, используемого Vagrant для управления VirtualBox. Команда и stderr показаны ниже.

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

Ответы:


138

Выполнение этого в командной строке разблокировало виртуальную машину:

vboxmanage startvm <vm-uuid> --type emergencystop

Где <vm-uuid>это число в сообщении об ошибке: Command: ["modifyvm", "<vm-uuid>" [...]. После этого я смог управлять виртуальной машиной (запуск, остановка и т. Д.). Использование Virtualbox 4.1 в Ubuntu.


1
спасибо человек, это действительно помогло мне, у меня были некоторые проблемы с общей папкой в ​​докере. Я не мог удалить общую папку (ошибка: не удалось найти общую папку с именем «ourspends»), а также при создании говорилось, что она уже существует (не удалось создать общую папку «ourspends», сопоставленную с »/ главная / Relu / проекты / ourspends' (VERR_ALREADY_EXISTS))
Relu Mesaros

Где мне это запустить? Очевидно, что это происходит не из самой виртуальной машины, поскольку команда «vboxmanage» относится к программному обеспечению VBox на хост-машине, а сама виртуальная машина не распознает это. С другой стороны, эта команда также неизвестна моему хост-компьютеру (в моем случае это Windows 10). Итак ... что мне тогда нужно, чтобы запустить эту команду?
TheCuBeMan

Я выполнил его в терминале под Linux. Я предполагаю, что в Windows это можно выполнить в командной строке (cmd). Он был протестирован с VirtualBox 4.1
Гонсало Матеу

4
Используйте VBoxManage -nologo list vms, чтобы узнать свой vm-uuid
Якоб

3
Для Windows вам нужен полный путь, так что бегите"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" <vm-uuid> --type emergencystop
Felix Eve

35

Имея ту же проблему, я обнаружил, что был запущен процесс, фактически блокирующий виртуальную машину:

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

Убедитесь, что у вас нет процесса, который пытается запустить виртуальную машину:

ps -ef | grep -i "vbox"

Это сработало для меня. Я убил все процессы, возвращенные оператором ps -ef, а затем снова сработало "vagrant destroy".
thebiggestlebowski

13

Для меня мне пришлось убить процесс VboxHeadless.exe в диспетчере задач. Я также должен был убедиться, что приглашение CMD было открыто в административном режиме.


У меня также работал с Linux. Посоветуйте корректно выключить все остальные виртуальные машины, которые также работают (можно использовать, ps aux | grep boxесли в терминале).
Дэн

11

Я нашел этот ответ от @Gonzalez очень интересным.

vboxmanage startvm <vm-uuid> --type emergencystop

Единственная проблема в том, что он отключил текущий экземпляр моей виртуальной машины, поэтому вместо использования modifyvmвы можете использовать, controlvmесли текущая виртуальная машина работает.

Например:

 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



7

В диспетчере задач Windows я завершил все задачи, связанные с Virtual Box (вы можете увидеть, что они начинаются с V в диспетчере задач, например Vbox Headless.exe и т. Д.). Как только я это сделал, я смог заставить эту ошибку исчезнуть (приведенные выше решения «vboxmanage startvm ... etc ...» здесь не работали для меня).


4

Если у вас открыто окно настроек для этого поля в графическом интерфейсе VirtualBox, вы можете столкнуться с этой ошибкой. Просто закройте окно настроек и попробуйте еще раз.


1

Сегодня я столкнулся с тем же сообщением об ошибке:

>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*

Ответ Гергели прекрасно решает эту проблему. Оказалось, что при перезагрузке у меня установлен crontab для загрузки виртуальной машины, который инициировал три процесса VBox, показанные выше.

me@myhost:~$ crontab -l

@reboot me /usr/bin/vboxmanage startvm "RHEL5 64-bit desktop" --type headless

0

Единственный вариант, который у меня сработал, - это убить все процессы, соответствующие ps axl | grep -i vbox.


0

В моем случае очевидной причиной был USB-адаптер Ethernet, который был отключен после приостановки работы машины. В моем случае,

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)

Изменение конфигурации сети на другой сетевой адаптер решило проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.