遇到“意外不一致;手动运行 fsck”时自动强制 fsck -fy。

Rom*_*man 5 boot fsck initramfs headless systemd

FSCKFIX=yes/etc/default/rcS,然而,当我开车到现场,今天连接一台显示器这台服务器,我看到这一点:

initramfs 提示的屏幕截图

我运行fsck.ext4 -fy /dev/sda1并重新启动,现在服务器已备份并运行。

我知道在某些情况下,盲目运行fsck -fy是危险的,可能会导致数据丢失。但是,就我而言,这是一个物理上无法访问的服务器,所有数据都备份在云中。最重要的是 Ubuntu 会采取所有可能的步骤来尝试使其在线。

有没有办法强制 Ubuntu 始终运行fsck -fy,即使存在任何“意外不一致”问题?

Rob*_*edl 20

让我先声明一个免责声明,如果您经常遇到不干净的文件系统问题,即使您干净地关闭了系统,您也会遇到严重的潜在问题,并且它可能的fsck 弊大于利

AFAIK 只有在发现不一致时才自动 fsck 的机制。

但是,您在每次启动都会使用一些内核参数执行 fsck 。

sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

找到说的那一行

GRUB_CMDLINE_LINUX_DEFAULT
Run Code Online (Sandbox Code Playgroud)

并添加

fsck.mode=force  fsck.repair=yes
Run Code Online (Sandbox Code Playgroud)

到那里现有的东西。

是的,这里应该和你的FSCKFIX=yesin/etc/default/rcS或 manual 一样fsck -fy。我个人认为preen会更安全,但如果磁盘需要更多fsck不认为“安全”并需要用户交互的修复程序,它会在启动时挂起。

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

更新组并验证它

grep fsck /boot/grub/grub.cfg 
Run Code Online (Sandbox Code Playgroud)

或与编辑器一起查看 /boot/grub/grub.cfg

如果然后重新启动,则应检查文件系统,您可以验证上次检查它的时间(应该是您的启动时间)

sudo dumpe2fs -h /dev/your/device | grep checked
dumpe2fs 1.43.5 (04-Aug-2017)
Last checked:             Sun Feb 18 08:53:31 2018
Run Code Online (Sandbox Code Playgroud)