我的服务器多次因rcu_sched self-detected stall on CPU
错误而崩溃。现在重启后无法修复 MySQL 表,有些服务可以启动,有些则无法启动。
我必须发出什么命令来检查和修复文件系统?我从未使用过 fsck。我应该以救援模式重新启动服务器吗?或者这并不重要?
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 20026172 8145824 10840020 43% /
/dev/root 20026172 8145824 10840020 43% /
devtmpfs 16419704 0 16419704 0% /dev
tmpfs 3284032 268 3283764 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 6777360 0 6777360 0% /dev/shm
/dev/md3 1902052420 19534092 1785876644 2% /home
/dev/loop0 3997376 8192 3763088 1% /tmp
答案1
shutdown
具有 -F 表示在重启时强制 fsck。
# shutdown -rF now
它将创建文件 /forcefsck 并重新启动。
您也可以通过手动创建文件 /forcefsck 在下次重启时强制执行 fsck。
# touch /forcefsck
# reboot
如果文件系统中的错误阻止您使用关机命令,这将很有用。
答案2
让 RCU 调度程序发出警告/信息不会导致重启。仔细检查您的日志文件,看看这些消息是 WARN/INFO 还是 ERR/PANIC。根据此处的文档: https://www.kernel.org/doc/Documentation/RCU/stallwarn.txt
这些应该是信息消息。
如果您因为这些消息而手动重新启动机器,则可以停止。
如果您因为其他原因而重新启动,则应该在问题中记录下来。
如果系统因为内核问题而崩溃、停止/锁定,那么也应该在问题中记录下来。
服务无法启动的问题很可能与 RCU 调度程序无关。它也可能与文件系统无关——正如 Esa Jokinen 提到的,在下次重新启动时强制进行一致性检查。但是我怀疑您仍然会看到服务无法启动的问题——检查这些特定服务的错误日志以确定它们无法启动的原因。