当 Linux 文件系统已挂载时,我可以运行 fsck 或 e2fsck 吗?

当 Linux 文件系统已挂载时,我可以运行 fsck 或 e2fsck 吗?

我的意思是我已经在这里了。如果没有,为什么?

答案1

不。

不要在活动或已安装的文件系统上运行 fsck。fsck用于检查并选择性修复 Linux 文件系统。fsck在已挂载的文件系统上运行通常会导致磁盘和/或数据损坏。


过时的方法(基于 SysVinit/upstart,Ubuntu 15.04 之前版本):

这将强制在下次启动时检查:

sudo touch /forcefsck

这也一样,但是当你按下回车键时它也会重新启动机器:

shutdown -rF now

还有更多方法(例如告诉机器转到init 1然后卸载您想要检查的分区/磁盘)但这两种方法是最简单的。


目前(基于 systemd 的系统,Ubuntu 15.04 及更高版本)我们可以用

sudo tune2fs -c 1 /dev/sdX

用您的分区设备名称替换sdX。1 是进行新文件系统检查的启动次数(因此 1 是每次。10 表示每 10 次启动检查一次。0 或 -1 禁用它)。

所以启动后

sudo tune2fs -c 0 /dev/sdX

来禁用它。

例子:

rinzwind@discworld:~$ sudo tune2fs -c 1 /dev/nvme0n1p3
tune2fs 1.47.0 (5-Feb-2023)
Setting maximal mount count to 1
rinzwind@discworld:~$ 

在具有错误文件系统的设备上使用它会出现以下错误:

inzwind@discworld:~$ sudo tune2fs -c 1 /dev/nvme0n1p1
tune2fs 1.47.0 (5-Feb-2023)
tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1p1
/dev/nvme0n1p1 contains a vfat file system

(即 /boot/EFI 那个 ;))

相关内容