如果我在 /dev/sda 而不是 /dev/sda1 上运行 fsck 会发生什么?

din*_*elk 8 devices fsck

当我过去运行fsck时,我总是在我认为是文件系统分区的地方运行它,即。fsck -yf /dev/sdaN,其中 N 是磁盘 A 上的分区号。我的一个朋友最近fsck在他全新的磁盘上运行,使用fsck -yf /dev/sda. 我很好奇,fsck在整个磁盘 ( /dev/sda) 上运行与仅在单个分区 ( /dev/sda1)上运行有什么区别?

zje*_*zje 6

当 fsck 运行时,它应该首先尝试定位文件系统的超级块以开始遍历文件系统的结构以对其进行验证。由于/dev/sda设备对应于整个驱动器,因此磁盘的第一部分可能包含分区表主引导记录,并且fsck将无法找到支持的文件系统的超级块(除非您得到某种方式以某种方式匹配幻数的东西)已知文件系统)。我希望它会错误退出或提供不准确的输出(正如您的朋友所经历的那样)。但是,我自己还没有进行这个实验。


Dop*_*oti 5

如果文件系统安装在一个分区中(例如sda1),它就不会工作。

fsck和它的兄弟是用于对文件系统维护工具(故名:˚F ILE小号ystem Ç CHEC ķ),而不是块器件。

我想,理论上可以通过类似的方式将文件系统直接放到块设备上mke2fs -j /dev/sda,但这是非常非常糟糕的做法。但是,如果您这样做,文件系统将直接存在于 上sda,然后指向fsck它,您确实只需指向fsck该设备。 不要这样做。分区表的存在是有原因的,它不仅仅是为目录占用少量的空间。