在我们的实验室中,我们有一台运行 Ubuntu Linux 8.04.4 x64 的服务器,其中 VMware Server 2.1 托管 4 个 VM。
我有一个关于关闭主机服务器的主要问题。大多数情况下,我如何确保来宾 VM 被安全关闭?
在 VMware Web 界面控制台中,我启用了:
- “允许虚拟机随系统自动启动和停止”
- 我启用了 15 秒的默认启动延迟以及选中了“如果 VMware Tools 启动则立即启动下一个 VM”选项
- 我启用了具有 60 秒关闭延迟和“关闭访客”的关闭操作的默认关闭延迟
所有虚拟机都安装了 VMware Tools 并且工作正常。所有虚拟机都被上移到“启动顺序”的“指定顺序”部分,因此当重新打开服务器电源时,所有这些虚拟机都应该按照指定的顺序重新启动。
当我去关闭服务器时,我使用了该shutdown -h now
命令。根据我上面输入的设置,我预计关机时间为 4 分钟,因为可以选择将每个 VM 的关机时间延迟 60 秒。然而,事实并非如此。相反,服务器在一分钟内关闭。
当我重新打开服务器电源时,只有 2 个虚拟机正确加载。其他 2 显示以下错误:
“启动虚拟机”未能完成
如果这些问题仍然存在,请联系您的系统管理员。
详细信息:无法打开磁盘“[location to .vmdk]”或它所依赖的快照磁盘之一。原因:锁定文件失败。
显然,如果发生此错误,那么我很清楚 VM没有正确关闭,或者在 VM 完全关闭之前服务器已关闭。我已通过删除相应 VM 目录中的 .lck 文件来修复上述错误。
我怎么知道虚拟机是否正确关闭?我检查了 VMware-server 日志,但它们似乎只显示 vmware-mgmt 服务在当前会话中运行时的日志。我主要在运行 Linux VM,所以有没有一种简单的方法可以知道服务器是否在 Linux 中正确关闭?
谢谢大家的帮助!
如果您现在使用shutdown -h,它将立即关闭,而不管“默认设置”如何,因为您使用参数覆盖了这些设置。
话虽如此,上次我们关闭环境时,我们分别对每个虚拟机进行了操作,等到它们都显示为已关闭,然后关闭主机(在本例中为 ESXi)。这允许您在关闭虚拟机期间检查错误,在我们的例子中,关闭网络服务器,然后关闭特定应用程序的数据库服务器以避免任何错误。
我们在启动时也这样做,并再次确保没有错误。
我认为在生产环境中找出正确的关闭和启动程序很重要。
话虽如此,我认为您将需要提供有关它们是什么 VM 的更多信息。我认为 VMware Server 无法区分有错误的关闭和没有错误的关闭。
PS 为什么不使用 ESXi 开始呢?
SSH 进入每个 VM 并发出
shutdown -h now
. 这是关闭 linux 机器的正确方法,无论是否虚拟。