我在 oVirt 中的托管引擎遇到了奇怪的情况。
我们设置了一个 oVirt 集群,使用 gluster 作为引擎 isos 和所有信息的存储。大约一周前,三台服务器中的两台出现故障。我们重启了机器大约三次,gluster 主机报告为已连接,并且没有报告任何裂脑错误。
托管引擎进程尝试在一台主机上启动托管引擎,但它进入了 EngineUnexpectedlyDown 状态。它会从服务器得分中减去 1600,然后尝试在下一台机器上启动它,直到所有机器的得分都达到 800 左右,它只会尝试在一台机器上启动,然后就一直显示“无法访问虚拟机”消息。
我们发现托管引擎实际上正在启动,因为我们可以使用 vnc 客户端连接到它。但它似乎处于某种锁定状态。如果您登录托管引擎,即使以 root 身份也无法更改任何文件,并且无法通过任何其他方式访问虚拟机。
有什么方法可以查看虚拟机是否被锁定/只读?有什么方法可以删除该锁定?
答案1
假设您使用的是副本 3,当 2 个主机发生故障时,文件系统将变为只读,这可以在一定程度上解释您当前看到的情况。在大多数情况下,我们应该预计虚拟机会冻结,因为 qemu 无法写入存储,但我需要有关它的更多信息,因此这里需要来自主机的日志文件。
首先让我们看看是否可以从存储中读取状态,您可以通过从其中一台主机运行以下命令来实现:
hosted-engine --vm-status
假设它可以工作,尝试将主机移至全局维护:
hosted-engine --set-maintenance --mode=global
如果这不起作用,则意味着访问存储中的元数据文件存在问题,并且可能是只读的。
如果有效,虚拟机将处于维护模式,您可以检查虚拟机内部文件的状态,并根据需要在同一主机上重新启动虚拟机。