我们所有的重要数据都位于一种或另一种类型的文件系统中,文件系统问题必然会发生。在 Linux 上,我们可以使用该fsck命令来查找和修复文件系统错误。 文件系统是软件 文件系统是计算机最关键的组件之一。没有文件系统,计算机就无法在硬盘驱动器上存储任何数据,无论该驱动器是旋转的机械盘还是固态驱动器。实际上,必须先创建文件系统,然后才能将操作系统安装到硬盘驱动器上。必须有一些东西可以存储操作系统文件。因此在安装过程中会创建一个文件系统。 文件系统 由软件创建,由软件写入,由软件读取。如您所知,所有复杂的软件都有缺陷。我们的数据对我们至关重要,因此我们非常信任文件系统以及创建和使用它们的软件。如果出现问题,我们可能无法访问文件系统的某些部分甚至整个分区。 现代 日志文件系统 更擅长处理由突然断电或系统崩溃引起的问题。他们很强壮,但并非无敌。如果他们的 内部表被打乱, 他们可能会忘记每个文件在驱动器上的位置、它的大小、它的名称以及对它们设置的文件权限。 该fsck命令可让您检查文件系统是否健康。如果它发现任何问题,它通常也可以为您解决。 进行预检 使用fsck需要sudo 权限。任何可以更改文件系统的命令都需要谨慎对待,并且仅限于知道自己在做什么的人。 飞行员不会跳上飞机,启动它,然后飞入淡蓝色的那边。他们做飞行前检查。否则有太多的利害关系。这是要养成的好习惯。在使用之前,fsck您需要确保将在正确的驱动器上使用它。所以在对 做任何事情之前fsck,我们要做一些侦察。 我们将开始fdisk并将其通过管道传输到less. 我们不要求有关特定分区的信息。通过使用-l(list) 选项fdisk列出它在“/proc/partitions”文件中找到的所有设备上的分区表(如果存在)。 须藤 fdisk -l | 较少的 我们可以看到的条目/dev/sda和/dev/sdb。您可以滚动文件以查看计算机上可能存在的任何其他条目。 该分区上/dev/sda被列为/dev/sda1,/dev/sda2和/dev/sda3。所以我们在第一个驱动器上有三个分区。我们可以使用该parted 命令查看更多信息。我们将使用该'print'选项在终端窗口中显示分区表。 须藤分开 /dev/sda '打印' 这次我们得到了一些额外的信息,包括每个分区上的文件系统类型。 型号:ATA VBOX 硬盘 (scsi) 磁盘/dev/sda:34.4GB 扇区大小(逻辑/物理):512B/512B 分区表:gpt 磁盘标志: 编号开始结束大小文件系统名称标志 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 540MB 538MB fat32 EFI 系统分区引导,尤其是 3 540MB 34.4GB 33.8GB ext4 这台测试计算机中有三个驱动器。这些是其他两个驱动器/dev/sdb和的结果 /dev/sdc。请注意,这些文件系统没有“名称”字段。 须藤分开 /dev/sdb '打印' 型号:ATA VBOX 硬盘 (scsi) 磁盘/dev/sdb:21.5GB 扇区大小(逻辑/物理):512B/512B 分区表:msdos 磁盘标志: 编号开始结束大小类型文件系统标志 1 1049kB 21.5GB 21.5GB 主 ext4 须藤分开 /dev/sdc '打印' 型号:ATA VBOX 硬盘 (scsi) 磁盘/dev/sdc:21.5GB 扇区大小(逻辑/物理):512B/512B 分区表:msdos 磁盘标志: 编号开始结束大小类型文件系统标志 1 1049kB 21.5GB 21.5GB 主 ext3 第二个和第三个驱动器大小相同,每个都有一个分区。但是第二个驱动器上的文件系统是ext4,而第三个驱动器上的文件系统是旧的ext3。 我们将分区标识符传递给fsck,它会检查该分区上的文件系统。但是我们不能fsck在一个挂载的文件系统上运行。我们需要卸载驱动器。为此,我们需要知道分区(以及文件系统)的挂载点。 我们可以使用该df命令轻松找到它。 df /dev/sdb1 df /dev/sdc1 使用 fsck 命令 我们已经获得了我们需要的所有信息。我们要做的第一件事是卸载我们要检查的文件系统。我们对第一和唯一的分区要工作在文件系统上/dev/sdb,这是/dev/sdb1。我们之前看到这是一个ext4文件系统,它挂载在“/run/mount/dave/sata2”。 我们将使用该umount命令。请注意,“umount”中没有“n”。 须藤卸载 /run/mount/dave/sata2 有了umount,没有消息就是好消息。如果您安静地返回到命令提示符,我们很高兴。 须藤 fsck /dev/sdb1 该文件系统被报告为干净的。这意味着文件系统报告它没有错误或问题。更深层次的文件系统检查不会自动进行。我们还可以查看fsck返回给shell的返回码。 回声 $? 返回值为零表示没有错误。可能的返回代码是: 0 : 没有错误 1:更正文件系统错误 2:系统应该重新启动 4 : 文件系统错误未纠正 8:操作错误 16 : 用法或语法错误 32 : 检查由用户请求取消 128:共享库错误 尽管文件系统被报告为干净,但我们可以使用-f(force) 选项强制进行文件系统检查。 须藤 fsck /dev/sdb1 -f 这一次,检查需要更长的时间才能完成,但它会对文件系统执行更彻底的测试。我们的文件系统确实很干净,没有报告任何错误。如果在进行测试时发现问题,系统会提示您fsck修复问题或忽略错误。 完成测试后,您需要重新挂载文件系统。要做到这一点,最简单的方法是使用mount与-a(全部)选项。这会检查“/etc/fstab”中的文件系统列表,并确保它们都像在常规启动后一样安装。 须藤挂载 -a 请注意,我们不需要说明fsck分区上的文件系统类型;该实用程序通过检查文件系统来确定。这意味着我们可以强制对测试 PC上/dev/sdc1的ext3文件系统进行文件系统检查,使用与在 上使用的命令完全相同的命令/dev/sdb1,即ext4分区。 须藤 fsck /dev/sdc1 -f 您可能不想直接修复文件系统。你可能更喜欢在跳跃之前先看看。您可以要求fsck不提供任何修复,只需向终端窗口报告问题。该-N(预演)选项做到了这一点: 须藤 fsck -N /dev/sdb1 与此相反的是,fsck如果发现任何错误,不要打扰提示,而是继续修复它们。为此,请使用-y(无提示)选项。 须藤 fsck -y /dev/sdb1 在根分区上使用 fsck 您不能fsck在已安装的分区上使用,但要启动计算机,必须安装根分区。那么我们如何才能fsck在根分区上运行呢?答案是中断引导过程并fsck在恢复模式下运行。 当您的计算机启动时,按住“Shift”键。如果您的时间安排正确,您将无法启动到 Linux。启动过程将在黑白菜单处停止。本文使用的测试机器运行 Ubuntu,但其他发行版具有相同类型的菜单,尽管外观可能有所不同。在屏幕截图中显示“Ubuntu”的地方将包含您的发行版名称。 使用“向上箭头”和“向下箭头”键移动高亮栏,以便选择“Ubuntu 高级选项”菜单项。按“Enter”移至下一个屏幕。 选择以“(恢复模式)”结尾的选项。在我们的示例中,它是“Ubuntu, with Linux 5.11.0-20-generic (recovery mode)”。按“回车”键。 您将看到恢复菜单。选择“fsck 检查所有文件系统”并按“Tab”键将突出显示移动到“确定”按钮。按“输入”。 您将看到一条通知,指出根分区将与“/etc/fstab”文件中定义的任何其他分区一起安装。 按“Tab”键将突出显示移动到“是”按钮,然后按“Enter”。 您将看到fsck以交互模式运行。如果有问题,系统会提示您让fsck修复它们或忽略它们。检查文件系统后,您将再次看到恢复菜单。 选择“继续”选项,按“Tab”键将突出显示移动到“确定”按钮,然后按“Enter”。引导过程将继续,您将引导至 Linux。 恢复模式引导可能会影响某些驱动程序,因此一旦引导到 Linux,最好再次重新引导。这可确保您的计算机以其标准方式运行。 当事情出错时 安全网的存在是有原因的。了解fsck命令。如果有一天需要在愤怒中使用它,你会很高兴你提前熟悉了自己。 未经允许不得转载:表盘吧 » 如何在 Linux 上使用 fsck 命令