远程工作时,我使用以下命令将服务器设置为fsck
在启动时强制执行:
sudo touch /forcefsck
并重新启动。
重新启动后,我检查了/var/log/fsck
磁盘检查的结果。两者checkfs
都说checkroot
:
Nothing has been logged yet
那么结果保存在哪里?
答案1
对于 Ubuntu 16.04 和 18.04根分区
您可能正在寻找/run/initramfs/fsck.log
。
根文件系统的 fsck 必然在将根文件系统挂载为可写之前发生,因此文件系统检查发生在启动过程的早期,此时系统仍在从 initramfs 运行。 fsck 日志被写入此时可写入的 RAM 支持文件系统 (tmpfs),并且在启动后继续可用/run/initramfs/fsck.log
。这是易失性存储,因此一旦系统重新启动,fsck 日志就会丢失。如果在将根文件系统挂载为可写之后将这些日志复制到非易失性存储中,那就太好了,但事实似乎并非如此。
以下是一个例子:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 238G 0 part /
$ cat /run/initramfs/fsck.log
Log of fsck -C -a -V -t ext4 /dev/sda2
Fri Nov 30 22:35:21 2018
fsck from util-linux 2.31.1
[/sbin/fsck.ext4 (1) -- /dev/sda2] fsck.ext4 -a -C0 /dev/sda2
/dev/sda2: clean, 653295/15597568 files, 6658147/62383360 blocks
Fri Nov 30 22:35:21 2018
----------------
答案2
您可能受到此错误的影响:“没有在 /var/log/fsck/ 中记录 fsck 调用”。
Doug 的评论关于该错误,建议采用以下解决方法(格式已针对此平台进行了调整):
12.04 强制文件系统检查:
告诉系统在启动时强制对所有文件系统进行文件系统检查,并
/etc/fstab
指示进行文件系统检查:touch /forcefsck
告诉系统在启动时更加详细:
sudo sed -i "s/VERBOSE=no/VERBOSE=yes/" /etc/default/rcS
然后,重新启动后,检查
/var/log/boot.log
,文件系统检查的结果将在那里可见。如果您还希望文件系统检查执行所有修复,请进行以下更改:
sudo sed -i "s/FSCKFIX=no/FSCKFIX=yes/" /etc/default/rcS
14.04 强制文件系统检查:
告诉系统在启动时强制对所有文件系统进行文件系统检查,并
/etc/fstab
指示进行文件系统检查:touch /forcefsck
告诉系统在启动时更加详细:
sudo sed -i "s/#VERBOSE=no/VERBOSE=yes/" /etc/default/rcS
然后,重新启动后,检查
/var/log/upstart/mountall.log
,文件系统检查的结果将在那里可见。如果您还希望文件系统检查执行所有修复,请进行以下更改:
sudo sed -i "s/#FSCKFIX=no/FSCKFIX=yes/" /etc/default/rcS
答案3
对于 Ubuntu 14.xx:
我发现了一些 fsck 日志/var/log/upstart/mountall.log
。
答案4
对于 Ubuntu 18.04
命令journalctl -b --no-pager | grep systemd-fsck
和grep systemd-fsck /var/log/syslog
均报告非根分区文件系统检查。类似于此:
Sep 25 16:06:29 me-Z370-HD3P systemd-fsck[615]: Scratch: clean, 19/6520832 files, 555602/26081280 blocks
Sep 25 16:06:29 me-Z370-HD3P systemd-fsck[609]: /dev/sda1: clean, 47014/89374720 files, 294970235/357492992 blocks
Sep 25 16:06:29 me-Z370-HD3P systemd-fsck[613]: /dev/sda5: clean, 6707/32727040 files, 7464312/130885120 blocks
即使强制检查,通过 UUID 挂载的根分区的结果似乎也不会被记录。