SysRq 和 Cumulus Linux
当将 SysRq 与 Cumulus Linux 一起使用时,/var/log/syslog
可能会显示类似于以下内容的意外输出
[ 8638.455521] SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)
要解决此问题,您可以暂时使用以下命令禁用 SysRq 功能
cumulus@switch:~$ sudo bash
cumulus@switch:~$ echo 0 > /proc/sys/kernel/sysrq
如果重新启动交换机,上述命令不会持久存在。要使此配置持久存在,请在 /etc/sysctl.d
目录中创建一个 sysrq.conf
文件并添加以下行
kernel.sysrq = 0
您可以使用 SysRq 直接与内核交互,通常在交换机挂起或无法正常工作时。有几个触发器可以访问 SysRq
- 在连接到控制台时按下 SysRq 键。
- 在连接到控制台时按下 Break 键。
- 从 telnet 会话向交换机发出 Send Break。
- 发出
echo ? > /proc/sysrq-trigger
。
不同的终端模拟器可能使用不同的按键序列来生成 Break 信号。在直接连接的笔记本电脑上,可能会根据特定于应用程序的热键发送 Break。
Break 键表示扩展空间(没有起始位和停止位的低信号)。您还可以通过将不良或不正确的电缆或故障设备连接到控制台来模拟 Break 键。
验证您已正确连接串行控制台端口。
如果在 SysRq 触发器后评估正确的按键序列,也可能导致交换机断电或重启。将电缆和设备连接到 Cumulus Linux 交换机控制台时请务必小心。
有关更多信息,请参阅 https://linuxkernel.org.cn/doc/html/latest/admin-guide/sysrq.html。