Ubuntu 服务器 22.04 暂停问题

Ubuntu 服务器 22.04 暂停问题

我正在运行无头 Ubuntu 服务器作为媒体服务器。由于我很少需要访问数据,因此我会在系统空闲时将其挂起。该命令systemctl suspend用于挂起系统。

这在 Ubuntu 20.04 LTS 上运行得很好,但自从升级到 22.04 LTS 后,suspense 就完全不起作用了。注意:升级之前,我在这里描述的问题也很少发生。

我面临的问题:运行命令后,屏幕变黑(如果已连接)和/或 ssh 会话终止。硬盘似乎断电了,但系统风扇仍在旋转。然后服务器变得无响应,对 WOL 命令甚至电源按钮都无反应。我无法再唤醒系统。作为最后的手段,我必须按住电源按钮 5 秒钟才能切断电源并重新启动服务器。

在查阅了大量文档后,我现在不知道如何进一步调试该问题。是否有任何我可以遵循的调试程序?是否有任何日志可以检查错误?有谁遇到过类似的问题?

更多细节:

  • 系统运行的是 Ubuntu 22.04 LTS,内核版本5.15.0-76-generic
  • BIOS 中激活了 S3 暂停/STR
  • 经过无数次尝试,终于有一次成功了,而且暂停正确,所以这似乎是可能的,但目前看来只是靠运气
  • 按照某些线程中的建议更改为较旧的内核(5.4.0-153-generic)并按描述进行操作这里导致系统无法启动,所以我不得不恢复

编辑1:根据要求,我在此处发布了输出journalctl --grep='suspend|sleep' --no-pager --since="-1hour"https://pastebin.com/izdBMWmv

编辑2journalctl:删除 systemd 服务后该命令的更多输出autosuspendhttps://pastebin.com/T5fwcfpK

编辑3:命令的输出for s in "0000:03:00" "0000:05:00"; do lspci -nnk -s "$s"; donehttps://pastebin.com/eEUtBfcM

答案1

如何调查?

您需要查看系统在挂起/睡眠时后台发生的情况...您可以先使用journalctl以下命令检查相关的系统消息:

journalctl --grep='suspend|sleep' --no-pager --since="-1week"

您可以更改--since="-1week"为仅显示过去七天的消息,以显示过去一天--since="-1day"或过去一小时--since="-1hour"...等等。并且--grep='suspend|sleep'如果模式全部为小写,则不区分大小写suspend) 将仅显示包含或的消息,sleep--no-pager将禁用分页器行为并立即打印输出,从而使您可以轻松地通过单个操作复制整个输出。

如何扩大你的调查?

journalctl可以通过在选项中添加更多相关搜索词来扩展搜索/输出,--grep=这些搜索词用|(分隔或者)正则表达式运算符,例如:

journalctl --grep='suspend|sleep|acpi' --no-pager --since="-1hour"

还可以指定消息的优先级,例如打印优先级消息4警告)以及更为关键的“emerg”(0)、“alert”(1)、“crit”(2)、“err”(3)、“warning”(4)”,你可以像这样使用它:

journalctl --priority=4 --no-pager --since="-1hour"

等等 ...

您的日志揭示了什么?

第 #1 期

在您的日志中,/opt/autosuspend/bin/autosuspend似乎有一个 Python 脚本试图from autosuspend import main导入系统 Python 报告不存在的模块(未安装ModuleNotFoundError: No module named 'autosuspend'...相关行是:

Jul 16 23:30:03 homse1 autosuspend[1292]:   File "/opt/autosuspend/bin/autosuspend", line 5, in <module>
Jul 16 23:30:03 homse1 autosuspend[1292]:     from autosuspend import main
Jul 16 23:30:03 homse1 autosuspend[1292]: ModuleNotFoundError: No module named 'autosuspend'

例如,在升级带有较新系统 Python 版本的 Ubuntu 版本后,可能会发生这种情况...例如,请参见升级到 22.04.2 后的 python3.8 和 pip

因此,作为解决方法,您可能首先想尝试:

python3 -m pip install -U autosuspend

或者sudo如果全局安装(取决于你的脚本如何运行)。

第 #2 期

在您的日志中,两个 PCI 控制器/插槽似乎未完全符合系统挂起/睡眠要求...相关行如下:

Jul 17 22:34:48 homse1 kernel: pci 0000:03:00.0: async suspend disabled to avoid multi-function power-on ordering issue
Jul 17 22:34:48 homse1 kernel: pci 0000:03:00.1: async suspend disabled to avoid multi-function power-on ordering issue
Jul 17 22:34:48 homse1 kernel: pci 0000:05:00.0: async suspend disabled to avoid multi-function power-on ordering issue
Jul 17 22:34:48 homse1 kernel: pci 0000:05:00.1: async suspend disabled to avoid multi-function power-on ordering issue

因此,您需要进一步调查这些是什么以及它们使用了哪些内核模块/驱动程序,方法是lspci -nnk -s逐个或一次全部运行命令,如下所示:

for s in "0000:03:00" "0000:05:00"; do lspci -nnk -s "$s"; done

和你的输出:

03:00.0 SATA controller [0106]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03)
    Subsystem: Gigabyte Technology Co., Ltd Motherboard [1458:b000]
    Kernel driver in use: ahci
    Kernel modules: ahci
03:00.1 IDE interface [0101]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03)
    Subsystem: Gigabyte Technology Co., Ltd Motherboard [1458:b000]
    Kernel driver in use: pata_jmicron
    Kernel modules: pata_jmicron, pata_acpi
05:00.0 SATA controller [0106]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 02)
    Subsystem: Gigabyte Technology Co., Ltd Motherboard [1458:b000]
    Kernel driver in use: ahci
    Kernel modules: ahci
05:00.1 IDE interface [0101]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 02)
    Subsystem: Gigabyte Technology Co., Ltd Motherboard [1458:b000]
    Kernel driver in use: pata_jmicron
    Kernel modules: pata_jmicron, pata_acpi

揭示了那些JMicron Technology Corp. JMB363 SATA/IDE 控制器例如,据报告,某些内核存在电源管理问题这里这里并且该问题也已孤立于pata_acpi在您的系统上使用)内核模块为例这里...因此,这可能与防止您的系统进入睡眠状态有关,您可能需要阅读有关此事的链接资源和其他内容,然后进行故障排除,并通过试验例如将pata_acpi内核模块列入黑名单来查看什么可能对您有用,看看是否有帮助。

相关内容