如何在 Linux 上使用 fsck 命令

ce0400cf77f315e

我们所有的重要数据都位于一种或另一种类型的文件系统中,文件系统问题必然会发生。在 Linux 上,我们可以使用fsck命令来查找和修复文件系统错误。

文件系统是软件

文件系统是计算机最关键的组件之一。没有文件系统,计算机就无法在硬盘驱动器上存储任何数据,无论该驱动器是旋转的机械盘还是固态驱动器。实际上,必须先创建文件系统,然后才能将操作系统安装到硬盘驱动器上。必须有一些东西可以存储操作系统文件。因此在安装过程中会创建一个文件系统。

文件系统 由软件创建,由软件写入,由软件读取。如您所知,所有复杂的软件都有缺陷。我们的数据对我们至关重要,因此我们非常信任文件系统以及创建和使用它们的软件。如果出现问题,我们可能无法访问文件系统的某些部分甚至整个分区。

现代 日志文件系统 更擅长处理由突然断电或系统崩溃引起的问题。他们很强壮,但并非无敌。如果他们的 内部表被打乱, 他们可能会忘记每个文件在驱动器上的位置、它的大小、它的名称以及对它们设置的文件权限。

fsck命令可让您检查文件系统是否健康。如果它发现任何问题,它通常也可以为您解决。

进行预检

使用fsck需要sudo 权限。任何可以更改文件系统的命令都需要谨慎对待,并且仅限于知道自己在做什么的人。

飞行员不会跳上飞机,启动它,然后飞入淡蓝色的那边。他们做飞行前检查。否则有太多的利害关系。这是要养成的好习惯。在使用之前,fsck您需要确保将在正确的驱动器上使用它。所以在对 做任何事情之前fsck,我们要做一些侦察。

我们将开始fdisk并将其通过管道传输到less. 我们不要求有关特定分区的信息。通过使用-l(list) 选项fdisk列出它在“/proc/partitions”文件中找到的所有设备上的分区表(如果存在)。

须藤 fdisk -l | 较少的

c4ca4238a0b9238

我们可以看到的条目/dev/sda/dev/sdb。您可以滚动文件以查看计算机上可能存在的任何其他条目。

c81e728d9d4c2f6

该分区上/dev/sda被列为/dev/sda1/dev/sda2/dev/sda3。所以我们在第一个驱动器上有三个分区。我们可以使用该parted 命令查看更多信息。我们将使用该'print'选项在终端窗口中显示分区表。

须藤分开 /dev/sda '打印'

a87ff679a2f3e71

这次我们得到了一些额外的信息,包括每个分区上的文件系统类型。

e4da3b7fbbce234

型号: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

1679091c5a880fa

使用 fsck 命令

我们已经获得了我们需要的所有信息。我们要做的第一件事是卸载我们要检查的文件系统。我们对第一和唯一的分区要工作在文件系统上/dev/sdb,这是/dev/sdb1。我们之前看到这是一个ext4文件系统,它挂载在“/run/mount/dave/sata2”。

我们将使用该umount命令。请注意,“umount”中没有“n”。

须藤卸载 /run/mount/dave/sata2

8f14e45fceea167

有了umount,没有消息就是好消息。如果您安静地返回到命令提示符,我们很高兴。

须藤 fsck /dev/sdb1

c9f0f895fb98ab9

该文件系统被报告为干净的。这意味着文件系统报告它没有错误或问题。更深层次的文件系统检查不会自动进行。我们还可以查看fsck返回给shell的返回码。

回声 $?

45c48cce2e2d7fb

返回值为零表示没有错误。可能的返回代码是:

  • 0 : 没有错误
  • 1:更正文件系统错误
  • 2:系统应该重新启动
  • 4 : 文件系统错误未纠正
  • 8:操作错误
  • 16 : 用法或语法错误
  • 32 : 检查由用户请求取消
  • 128:共享库错误

尽管文件系统被报告为干净,但我们可以使用-f(force) 选项强制进行文件系统检查。

须藤 fsck /dev/sdb1 -f

c20ad4d76fe9775

这一次,检查需要更长的时间才能完成,但它会对文件系统执行更彻底的测试。我们的文件系统确实很干净,没有报告任何错误。如果在进行测试时发现问题,系统会提示您fsck修复问题或忽略错误。

完成测试后,您需要重新挂载文件系统。要做到这一点,最简单的方法是使用mount-a(全部)选项。这会检查“/etc/fstab”中的文件系统列表,并确保它们都像在常规启动后一样安装。

须藤挂载 -a

d3d9446802a4425

请注意,我们不需要说明fsck分区上的文件系统类型;该实用程序通过检查文件系统来确定。这意味着我们可以强制对测试 PC上/dev/sdc1ext3文件系统进行文件系统检查,使用与在 上使用的命令完全相同的命令/dev/sdb1,即ext4分区。
须藤 fsck /dev/sdc1 -f

c51ce410c124a10

您可能不想直接修复文件系统。你可能更喜欢在跳跃之前先看看。您可以要求fsck不提供任何修复,只需向终端窗口报告问题。该-N(预演)选项做到了这一点:

须藤 fsck -N /dev/sdb1

6512bd43d9caa6e

与此相反的是,fsck如果发现任何错误,不要打扰提示,而是继续修复它们。为此,请使用-y(无提示)选项。

须藤 fsck -y /dev/sdb1

在根分区上使用 fsck

您不能fsck在已安装的分区上使用,但要启动计算机,必须安装根分区。那么我们如何才能fsck在根分区上运行呢?答案是中断引导过程并fsck在恢复模式下运行。

当您的计算机启动时,按住“Shift”键。如果您的时间安排正确,您将无法启动到 Linux。启动过程将在黑白菜单处停止。本文使用的测试机器运行 Ubuntu,但其他发行版具有相同类型的菜单,尽管外观可能有所不同。在屏幕截图中显示“Ubuntu”的地方将包含您的发行版名称。

9bf31c7ff062936

使用“向上箭头”和“向下箭头”键移动高亮栏,以便选择“Ubuntu 高级选项”菜单项。按“Enter”移至下一个屏幕。

c74d97b01eae257

选择以“(恢复模式)”结尾的选项。在我们的示例中,它是“Ubuntu, with Linux 5.11.0-20-generic (recovery mode)”。按“回车”键。

您将看到恢复菜单。选择“fsck 检查所有文件系统”并按“Tab”键将突出显示移动到“确定”按钮。按“输入”。

6f4922f45568161

您将看到一条通知,指出根分区将与“/etc/fstab”文件中定义的任何其他分区一起安装。

1f0e3dad9990834

按“Tab”键将突出显示移动到“是”按钮,然后按“Enter”。

您将看到fsck以交互模式运行。如果有问题,系统会提示您让fsck修复它们或忽略它们。检查文件系统后,您将再次看到恢复菜单。

选择“继续”选项,按“Tab”键将突出显示移动到“确定”按钮,然后按“Enter”。引导过程将继续,您将引导至 Linux。

恢复模式引导可能会影响某些驱动程序,因此一旦引导到 Linux,最好再次重新引导。这可确保您的计算机以其标准方式运行。

当事情出错时

安全网的存在是有原因的。了解fsck命令。如果有一天需要在愤怒中使用它,你会很高兴你提前熟悉了自己。

未经允许不得转载:表盘吧 » 如何在 Linux 上使用 fsck 命令