VirtualBox не сохраняет состояние виртуальной машины

VirtualBox, QEMU, ESX/ESXi и прочия
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

VirtualBox не сохраняет состояние виртуальной машины

Непрочитанное сообщение ss25 » 2012-12-24 17:32:43

При нажатии кнопки выключения или по halt -p не сохраняется состояние виртуальной машины (скрипт пытается отработать это видно в консоли но через 90 секунд принудительно убивается с записью в логе ниже) но если ручками в консоли остановить через скрипт /usr/local/etc/rc.d/vboxheadless stop то все отлично сохраняется.

п.с. при включении питания в консоли видно как гость стартует.

/var/log/message
Dec 24 15:22:34 hostel rc.shutdown: 90 second watchdog timeout expired. Shutdown terminated.
Dec 24 15:22:34 hostel init: /bin/sh on /etc/rc.shutdown terminated abnormally, going to single user mode
Dec 24 15:22:34 hostel syslogd: exiting on signal 15

root@hostel:/home/ss25 # uname -a
FreeBSD hostel 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r244482M: Thu Dec 20 10:11:00 EET 2012 root@hostel:/usr/obj/usr/src/sys/HOSTEL i386

root@hostel:/home/ss25 # pkg_version -v | grep virtual
virtualbox-ose-4.1.22 = up-to-date with port
virtualbox-ose-kmod-4.1.22 = up-to-date with port

/etc/rc.conf
vboxheadless_enable="YES"
#vboxheadless_user="root"
vboxheadless_machines="Win2k3"
vboxheadless_delay="1"
vboxheadless_stop="savestate"
vboxheadless_Win2k3_flags="-n -m 5900 -o пароль"

/usr/local/etc/rc.d/vboxheadless
vboxheadless_stop()
{
local machine mpidfile pid vmname vmuser vmstop vmdelay

echo "Saving states for Virtual Machines:"
for machine in ${vboxheadless_machines}; do
mpidfile="${pidbase}_${machine}.pid"
pid=$(check_pidfile $mpidfile $command)
eval vmname="\${vboxheadless_${machine}_name:-${machine}}"
eval vmuser="\${vboxheadless_${machine}_user:-${vboxheadless_user}}"
eval vmstop="\${vboxheadless_${machine}_stop:-${vboxheadless_stop}}"
eval vmdelay="\${vboxheadless_${machine}_delay:-${vboxheadless_delay}}"

/usr/bin/printf "%25s " "${vmname}"

if [ -n "${pid}" ]; then
/bin/sleep ${vmdelay}
/usr/bin/su -m ${vmuser} -c "/usr/local/bin/VBoxManage controlvm '${vmname}' ${vmstop} >/dev/null" 2>/dev
wait_for_pids $pid >/dev/null
echo "Stopped"
else
echo "Not running?"
fi
done
}

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: VirtualBox не сохраняет состояние виртуальной машины

Непрочитанное сообщение snorlov » 2012-12-24 22:33:18

либо увеличить системную переменную rc_shutdown_timeout(rc_timeout_shutdown), посмотри в /etc/defaults/rc.conf, либо редактировать сам скрипт rc.shutdown на исключение vbox_headless из цикла...

Аватара пользователя
ss25
мл. сержант
Сообщения: 81
Зарегистрирован: 2009-06-18 23:34:09

Re: VirtualBox не сохраняет состояние виртуальной машины

Непрочитанное сообщение ss25 » 2012-12-24 23:47:24

и не то и не то. не хватало определения домашней директории в функции остановки в скрипте. тему можно закрыть.
vboxheadless_stop()
{
local machine mpidfile pid vmname vmuser vmstop vmdelay

echo "Saving states for Virtual Machines:"
for machine in ${vboxheadless_machines}; do
mpidfile="${pidbase}_${machine}.pid"
pid=$(check_pidfile $mpidfile $command)
eval vmname="\${vboxheadless_${machine}_name:-${machine}}"
eval vmuser="\${vboxheadless_${machine}_user:-${vboxheadless_user}}"
eval vmstop="\${vboxheadless_${machine}_stop:-${vboxheadless_stop}}"
eval vmdelay="\${vboxheadless_${machine}_delay:-${vboxheadless_delay}}"

HOME=$(/usr/sbin/pw usershow -7 -n "${vmuser}" | /usr/bin/cut -d: -f6)

/usr/bin/printf "%25s " "${vmname}"

if [ -n "${pid}" ]; then
/bin/sleep ${vmdelay}
/usr/bin/su -m ${vmuser} -c "/usr/local/bin/VBoxManage controlvm '${vmname}' ${vmstop} >/dev/null" 2>/dev
wait_for_pids $pid >/dev/null
echo "Stopped"
else
echo "Not running?"
fi
done
}