如何确保VM正常关闭?


0

我的主服务器通过VM中的VirtualBox运行其他几个服务器。

特别是,我有一个Web服务器,由于某种原因,如果它没有正确关闭,不会在grub菜单上自动选择,这意味着它会挂起,直到我在服务器上手动重置它。

每当我的服务器关闭时,如何确保我的VM正常关闭?

附加信息:“服务器”实际上是一台旧笔记本电脑,它运行的是Ubuntu Desktop 11.04并且不是无头(也运行媒体中心)。


所以你的主机是Ubuntu,但是什么是带有Web服务器的来宾VM?
slhck 2011年

也是Ubuntu,Ubuntu Server 11.04
Malfist 2011年

Answers:


1

您可以使用该VBoxManage命令从命令行控制虚拟机。这允许您创建一个脚本,可以在关闭电源之前关闭您的虚拟机。

您可以运行一个非常基本的脚本来关闭虚拟主机和主机...

#!/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...

这些是非常基本的示例,可以根据您的具体要求进行构建。它们可能还需要进行修改才能与您的操作系统配置一起正常工作。


如何确保此操作并在计算机关闭时停止关闭直到完成?
Malfist 2011年

现在,shutdown命令给vm 1分钟断电。您需要使用您的设置对其进行测试,以确定是否需要进行调整。有关详细信息,请man shutdown查看这些选项,并VBoxManage --help查看更多选项controlvm。您还可以在调用shutdown之前添加条件逻辑以检查vm进程的状态。
乔互联网

使用VBoxManage showvminfo MyVM --machinereadable并寻找属性VMState成为“poweroff”(或“跑步”以外的任何东西)
RolKau

0

我使用在托管Windows Server 2003 VM的Debian上运行的qemu来做到这一点。我在Win2k3 VM上启用了“紧急管理服务”。这为您提供了串行端口上的“特殊管理控制台”。qemu允许您将虚拟串行端口连接到“telnet”端口,因此我给它一个本地主机地址。SAC允许您通过串行端口发出命令来干净地关闭系统,并且由于它类似于“紧急后门”,因此无论VM中可能发生什么,它都非常可靠。

然后,我创建了一个简短的expect脚本来“登录”基于串行的SAC并发出shutdown命令。这包含在另一个脚本中,该expect脚本将调用此脚本并等待2分钟以使qemu进程死亡。如果这个过程没有死亡,那么就会强行杀死它。设置Linux以在关闭时调用此脚本可确保VM始终干净地关闭(如果可能)。

因此,您可以根据自己的情况调整此方法。

如果您有Linux VM,那么您真的可以在Ubuntu系统上创建一个小脚本,通过ssh登录到VM并调用一个正确关闭系统的脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.