![如果我在 /dev/sda 而不是 /dev/sda1 上运行 fsck 会发生什么?](https://linux22.com/image/57999/%E5%A6%82%E6%9E%9C%E6%88%91%E5%9C%A8%20%2Fdev%2Fsda%20%E8%80%8C%E4%B8%8D%E6%98%AF%20%2Fdev%2Fsda1%20%E4%B8%8A%E8%BF%90%E8%A1%8C%20fsck%20%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
fsck
当我过去运行时,我总是在我认为是文件系统分区的地方运行它,即。 fsck -yf /dev/sdaN
,其中 N 是磁盘 A 上的分区号。我的一个朋友最近fsck
在他的全新磁盘上运行,并使用 报告了一堆错误fsck -yf /dev/sda
。我很好奇,fsck
在整个磁盘 ( /dev/sda
) 上运行与仅在单个分区 ( ) 上运行有什么区别/dev/sda1
?
答案1
答案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。