Máy ảo trong hộp ảo đã bị khóa trong một phiên (hoặc đang được mở khóa)


82

Máy ảo của tôi trong virtualbox không thể khởi động do lỗi này, tôi không muốn phá hủy nó và cài đặt lại nó, dù sao để khôi phục nó?

Đã xảy ra lỗi khi thực thi VBoxManage, CLI được Vagrant sử dụng để kiểm soát VirtualBox. Lệnh và lệnh được hiển thị bên dưới.

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

Câu trả lời:


135

Chạy điều này trên dòng lệnh đã mở khóa máy ảo:

vboxmanage startvm <vm-uuid> --type emergencystop

Trong trường hợp <vm-uuid>là số trong thông báo lỗi: Command: ["modifyvm", "<vm-uuid>" [...]. Sau đó, tôi đã có thể điều khiển VM (bắt đầu, tạm dừng, v.v.). Sử dụng Virtualbox 4.1 trên Ubuntu.


1
thanx man, điều này thực sự giúp ích cho tôi, tôi gặp một số vấn đề liên quan đến thư mục dùng chung trong docker. Tôi không thể xóa thư mục được chia sẻ (lỗi: Không thể tìm thấy thư mục được chia sẻ có tên 'ourpends') và khi tạo, nó nói rằng nó đã tồn tại (Không thể tạo thư mục chia sẻ 'ourpends' được ánh xạ tới '/ home / relu / project / ourpends '(VERR_ALREADY_EXISTS))
Relu Mesaros 22/09/2016

Chính xác thì tôi chạy cái này ở đâu? Rõ ràng, đây không phải là từ bên trong chính máy ảo, vì lệnh "vboxmanage" liên quan đến phần mềm VBox trên máy lưu trữ và bản thân máy ảo không nhận ra điều này. Mặt khác, lệnh này cũng không được biết đối với máy lưu trữ của tôi (trong trường hợp của tôi, đó là Windows 10). Vậy ... những gì tôi cần để chạy lệnh này sau đó?
TheCuBeMan

Tôi đã thực thi nó trong một thiết bị đầu cuối bằng Linux. Tôi đoán rằng trong Windows, nó có thể được thực thi trong Command Prompt (cmd). Nó đã được thử nghiệm với VirtualBox 4.1
Gonzalo Matheu

4
Sử dụng danh sách VBoxManage -nologo VMS để tìm hiểu bạn vm-uuid
Jakob

3
Đối với Windows, bạn cần đường dẫn đầy đủ để chạy"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" <vm-uuid> --type emergencystop
Felix Eve

35

Gặp sự cố tương tự, tôi thấy rằng có một quá trình đang chạy thực sự khóa vm:

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

Đảm bảo rằng bạn không gặp phải quá trình nào bị kẹt khi cố khởi động vm:

ps -ef | grep -i "vbox"

Điều này đã làm việc cho tôi. Tôi đã giết tất cả các quy trình được trả về bởi câu lệnh ps -ef và sau đó "tiêu diệt lang thang" hoạt động trở lại.
thebiggestlebowski

13

Đối với tôi, tôi đã phải giết quá trình VboxHeadless.exe trong trình quản lý tác vụ. Tôi cũng phải đảm bảo lời nhắc CMD được mở ở chế độ Quản trị.


Cũng làm việc cho tôi bằng cách sử dụng Linux. Khuyên tắt một cách duyên dáng tất cả các máy ảo khác cũng đang chạy (có thể sử dụng ps aux | grep boxnếu trong thiết bị đầu cuối).
Dan


10

Tôi thấy câu trả lời này từ @Gonzalez rất thú vị.

vboxmanage startvm <vm-uuid> --type emergencystop

Vấn đề duy nhất là nó tắt phiên bản hiện tại của máy ảo của tôi, vì vậy thay vì sử dụng, modifyvmbạn có thể sử dụng controlvmnếu vm hiện tại đang chạy.

Ví dụ:

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

Trở nên:

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

Tài liệu đầy đủ Tại đây https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm


7

Trong Windows Task Manager, tôi đã kết thúc mọi tác vụ liên quan đến Virtual Box (bạn có thể thấy chúng bắt đầu bằng chữ V trong Task Manager như Vbox Headless.exe, v.v.). Khi tôi đã làm điều đó, tôi có thể khắc phục được lỗi này (các giải pháp 'vboxmanage startvm ... etc ...' ở trên không hoạt động với tôi).


4

Nếu bạn có cửa sổ cài đặt mở cho hộp đó trong GUI VirtualBox, bạn có thể gặp phải lỗi này. Chỉ cần đóng cửa sổ cài đặt và thử lại.


1

Tôi gặp phải thông báo lỗi tương tự hôm nay:

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

Câu trả lời của Gergely giải quyết nó một cách hoàn hảo. Hóa ra là tôi đã đặt crontab lúc khởi động lại để khởi động máy ảo, quá trình này đã bắt đầu ba quy trình VBox được hiển thị ở trên

me@myhost:~$ crontab -l

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

0

Tùy chọn duy nhất phù hợp với tôi là hủy tất cả các tiến trình khớp với ps axl | grep -i vbox.


0

Trong trường hợp của tôi, nguyên nhân rõ ràng là do bộ chuyển đổi USB ethernet đã bị tháo ra sau khi tạm ngừng máy. Trong trường hợp của tôi,

vboxmanage startvm <vm-uuid> --type emergencystop

đã không giúp được gì. Thay vào đó, tôi nhận được thông báo khó hiểu rằng

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

Lỗi thực sự đã được tiết lộ khi chạy

vboxmanage startvm <vm-uuid> --type gui

đã trở lại

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

Thay đổi cấu hình mạng sang bộ điều hợp mạng khác đã giải quyết được sự cố.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.