Мой домашний сервер запускает несколько других серверов через VirtualBox в виртуальных машинах.

В частности, у меня есть веб-сервер, который по какой-то причине, если он не выключен должным образом, не выбирается автоматически в меню grub, то есть он зависает до тех пор, пока я не переустановлю его на сервере вручную.

Как я могу убедиться, что моя виртуальная машина выключена правильно, когда мой сервер выключается?

Дополнительная информация:"Сервер" на самом деле является старым ноутбуком, он работает под управлением Ubuntu Desktop 11.04 и не является автономным (также работает медиацентр).

2 ответа2

1

Вы можете использовать команду VBoxManage для управления виртуальными машинами из командной строки. Это позволяет вам создать скрипт, который может выключить ваш виртуальный компьютер перед выключением.

Вы можете запустить очень простой скрипт для выключения vm & host ...

#!/bin/bash
# poff.sh - poweroff the vm, then the host...

VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1

Или вы можете использовать те же команды, что и псевдоним, добавленный в ваш файл .bashrc ...

alias poff='VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1' # poweroff the vm, then the host...

Это очень простые примеры, которые могут быть использованы в соответствии с вашими требованиями. Возможно, их также потребуется изменить для корректной работы с конфигурацией вашей ОС.

0

Я сделал это, используя qemu, работающий на Debian с виртуальной машиной Windows Server 2003. Я включил "Службы аварийного управления" на виртуальной машине Win2k3. Это дает вам "Специальную консоль администрирования" на последовательном порту. qemu позволяет вам подключить виртуальный последовательный порт к порту "telnet", поэтому я дал ему адрес localhost. SAC позволяет вам аккуратно завершить работу системы, выполнив команду через последовательный порт, и, поскольку это что-то вроде "аварийной задней двери", это имеет тенденцию быть очень надежным независимо от того, что еще может происходить в ВМ.

Затем я создал короткий expect сценарий для "входа" в последовательный SAC и выдачи команды выключения. Это было включено в другой скрипт, который будет вызывать этот expect скрипт и ждать 2 минуты, пока процесс qemu не прекратит работу. Если бы процесс не умер, он бы насильно его убил. Настройка Linux для вызова этого сценария при завершении работы гарантировала, что виртуальная машина всегда отключается чисто, если это возможно.

Таким образом, вы можете адаптировать этот метод к вашей ситуации.

Если у вас виртуальная машина Linux, вы действительно можете просто создать небольшой скрипт в вашей системе Ubuntu, который будет входить в виртуальную машину через ssh и вызывать скрипт, который корректно завершит работу системы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .