在主机重启/关闭时,virtualbox 自动优雅客户机保存状态的最佳方法是什么

在主机重启/关闭时,virtualbox 自动优雅客户机保存状态的最佳方法是什么

我有一台 Ubuntu 14.04 主机,上面有一些由 Virtualbox 5.1 驱动的 win 客户机。其中一些非常大,需要大约 1-2-3 分钟才能进入保存状态。

据我所知,至少有两个 init.d 脚本用于控制关机时的虚拟机状态。可能还有其他脚本吗?

1. init.d/vboxdrv

它在 /etc/rc0.d 文件夹中的优先级为 80

这个需要关闭关闭用户中的变量/etc/default/virtualbox并运行VBoxManage controlvm savestate对于每个正在运行的虚拟机。

此脚本停止所有虚拟机后退出,它像“单线程”任务一样工作。

2. init.d/vboxautostart-服务

/etc/rc0.d 文件夹中的优先级为 65

这个需要完全配置的自动启动服务,例如/etc/vobx/.start/etc/vobx/.stop和其他工作人员……

此脚本立即退出,因为它仅运行带有特定参数的自动启动服务守护进程:

stop() {
    [ -z "$VBOXAUTOSTART_DB" ] && exit 0
    [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0

    PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"

    # prevent inheriting this setting to VBoxSVC
    unset VBOX_RELEASE_LOG_DEST

    for user in `ls $VBOXAUTOSTART_DB/*.stop`
    do
        start_daemon `basename $user | sed -ne "s/\(.*\).stop/\1/p"` $binary $PARAMS > /dev/null 2>&1
    done

    return $RETVAL
}

所以...当我们在独立模式下使用该脚本时,我的意思是

sudo service vboxautostart-service stop

或者

sudo service vboxdrv stop

一切都很完美。第一个显示10%...20%...30%...每个虚拟机的进度条。第二个立即退出,但运行的二进制文件完成其工作并停止虚拟机...

但!当主机关闭时(shutdown -h now),我认为 upstart 会终止该脚本(超时?),因为 /etc/init/ 中没有为上述脚本提供任何作业配置。据我所知,默认 upstart 终止延迟为 5 秒。

我在 Google 上搜索了很多帖子和创建脚本的方法,这些方法看起来与 vbox 包中已经存在的脚本大相径庭,所以我觉得使用这些建议没有任何意义。它们都没有提供在主机重启/关闭时保证用户正常关机(或保存状态)的方法。

当然,我知道我可以手动关闭所有虚拟机,然后再关闭主机...但这对我来说并不方便...此外,关机可以由 apcupsd 启动,否则...依我之见,虚拟机控制应该由打算这样做的人来完成)))

如果有人能帮我解答下一个问题,我将不胜感激:

  1. 我们是否应该调整 upstart 配置,以便为 vbox init 脚本提供足够的时间关闭(保存状态等)?或者其他解决方案?
  2. 应该优先使用哪个脚本来关闭虚拟机?autostart-service 还是 vboxdrv?我说得对,这只取决于单用户主机环境中的喜好吗?

相关内容