如何让 Linux 重新启动而不是将文件系统重新挂载为只读?

use*_*686 10 filesystems corruption reboot

Linux 系统有时会将根文件系统重新挂载为只读,例如,如果出现 I/O 错误。

我的机器在发生这种情况时变得毫无用处,最终我手动重新启动它。

有没有办法让 Linux 在发生这种情况时自动重新启动?只读挂载对我来说毫无用处。

sho*_*hok 23

我推断您正在使用ext3ext4作为文件系统。errors=panic如果是这样,您可以使用选项安装它配置watchdog为重新启动系统,以防发生紧急情况。

虽然比roelvanmeer 的答案(我赞成)更复杂,但它还有一个额外的好处,那就是可以处理所有恐慌级别的内核崩溃。

正如NikitaKipriyanov 所建议的,设置panic=5内核启动选项可能是一个更简单的替代方案watchdog(它有更多配置选项,但结果稍微复杂一些)。

  • 警告:可能会出现重启循环 (6认同)
  • @AndrewHenle:我已经使用了很多带有废弃根文件系统的系统。通常我可以接管引导过程并让 fsck 运行,因为损坏很少会影响到“/sbin”或一段时间没有更改的文件。 (3认同)
  • 看门狗的替代方案可能是将“kernel.panic = 5”之类的内容添加到“/etc/sysctl.d/panic-reboot.conf”中。 (2认同)

roe*_*eer 14

也许不是一个非常漂亮的解决方案,但我的第一个想法是每分钟从 cron 运行一个命令:

test -w / || reboot
Run Code Online (Sandbox Code Playgroud)

  • @rackandboneman 当然 - 但*任何*带有`||的脚本 restart` 会受到这些问题的影响。此外,如果“touch”由于 libc 问题而在您的系统上失败,那么您可能会遇到比重启循环更严重的问题。无论如何,正如我的回答中所述,“看门狗”是满足更高级需求的方法。 (3认同)
  • @shodanshok,这可能会导致意外重新启动 - 或重新启动循环 - 来自与文件系统错误无关的错误条件,例如 libc 安装的临时混乱、OOM 条件、任何可能导致触摸失败的因素...... (2认同)