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

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

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

答案1

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

答案2

sda1如果文件系统安装在分区中(例如),它将不起作用。

fsck及其兄弟是用于对文件系统执行维护的工具(因此得名:F伊莱s系统C检查k),而不是块设备。

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

答案3

如果设备包含受支持的文件系统,fsck 应该可以工作。该设备可以是整个硬盘驱动器(如 /dev/sda),也可以是一个分区或软盘(有人还记得那些是什么吗?)(如 /dev/fd0),甚至可以是另一个硬盘上的文件(如 ~/hdimage.img) 。对于软盘驱动器,通常会使用整个驱动器,因此没有理由进行分区,因此文件系统位于 /dev/fd0 上。传统上,硬盘驱动器被划分为多个分区,并且文件系统被构建在分区中。但是,如果您想将整个驱动器用作一个分区并且不需要从它启动,您可以直接在设备上创建一个文件系统(mke2fs /dev/sdb),挂载它并向其复制大量文件,那么 fsck /dev/sdb 应该可以工作。这被称为“超级软盘”配置。我认为旧的 iomega 100MB 磁盘通常也是这样格式化的。磁盘甚至不需要有文件系统——它可以有一个文件。我经常将 tar 文件制作成适合 DVD 的大小,然后将它们刻录到磁盘上。此时磁盘将无法安装,但 tar -xvf some/where/myfile /dev/sr0 从磁盘中提取 myfile。

相关内容