如何在Linux中使用fsck命令

时间:2020-03-05 15:27:21  来源:igfitidea点击:

作为系统管理员,我们将被调用以管理服务器的文件系统。
调整文件系统是一项任务,我们可能会在一段时间内每一次执行一次,在进行安装时进行重大更改。
常用任务正在检查文件系统以进行错误。

一些错误,电源故障和机械问题都可能导致严重的数据丢失或者文件系统上的数据结构损坏。
这就是为什么Linux包括FSCK等工具,用于验证文件系统的完整性并纠正可能发生的任何问题。

在本教程中,我们将更多地了解FSCK命令,何时以及如何正确使用它。

你需要知道什么

Linux在"/etc/fstab"中标记为此的分区上自动运行fsck,该分区是包含有关永久安装在系统上的文件系统的信息的文件。

如果它已被干净地执行,则正常行为是仅对分区进行快速练习镜检查。

尽管有此操作,但由于文件系统检查,Linux引导过程不会延迟,除非系统未正确关闭。

如果由于某种原因标记了文件系统,则表示可能需要冗长的文件系统检查。

很难拥有挂载的文件系统,具有损坏。
当文件系统正确地卸载内存中缓存的任何内存时,刷新到磁盘,FSCK不需要检查任何内容。
如果计算机突然关闭,则可能丢失其中一些缓存,并且磁盘上的内容可能会丢失。
它是FSCK的工作,以修复由此缺少数据造成的任何损坏。

1)何时使用fsck命令

即使系统未正确关闭,日记文件系统也会在系统启动时使用完整的文件系统检查。
尽管如此,这些文件系统仍然需要检查程序以纠正未被未检测到的写入失败,错误,硬件问题等引入的问题。

如果我们使用日记文件系统遇到奇怪的行为,则可能会考虑卸载有关文件系统并使用"fsck"命令"执行文件系统检查。
如果引导过程因文件系统错误而失败,则可以运行恢复模式以执行操作。

2)如何使用fsck命令

FSCK命令提供了许多可用于特定情况的参数,具体情况或者我们需要的结果或者结果。
所以我们将尝试列出最有用的选项,我们可以更频繁地需要:

  • -Y:对所有问题自动假设是的
  • -a:导致fsck检查/etc/fstab文件中存在的所有文件系统。
  • -c:显示检查过程的文本模式进度指示符
  • -V:它产生了检查过程的详细输出
  • -n:它显示fsck命令通常会做什么而不做任何事情
  • -a或者-p:尝试自动修复错误
  • -m:告诉fsck命令不要检查已挂载的文件系统
  • -f:即使文件系统被标记为Clean,也要执行完整的文件系统检查
  • -t:指定要检查的文件系统类型
  • -c:检查坏块并将它们添加到文件系统的坏块表
  • -b:使用替代超级块

3)修复文件系统

当在文件系统上检测到错误时,大部分时间都是fsck命令需要授权,以便在文件系统上执行任何修改。
因此,每次发现错误并将尝试修改它,都会问我们问题。
这意味着我们必须每次单击"y"验证。
它可能是累人的,所以你可以使用'-y"选项来

首先,卸下分区

# umount /dev/sdb

现在检查你的文件系统

# fsck -y /dev/sdb

4)强制检查文件系统

通常在安装Linux系统后,所有分区(文件系统)都放置在系统启动时自动安装的/etc/fstab文件。
当没有错误时,文件系统被标记为干净,但我们可以使用-F使用"清洁文件系统"

# fsck -f /dev/sdb1
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2016)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 11/1310720 files (0.0% non-contiguous), 126322/5242624 blocks

5)检查文件系统上的坏扇区

当磁盘上的部分无法从或者写入或者写入磁盘时,这意味着存在错误的块,可能会影响磁盘驱动器,可能导致将来的硬件故障导致硬件故障。
我们可以使用-c选项来检查文件系统上的坏块

作为结果

sudo fsck -fc /dev/sdb1
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2016)
Checking for bad blocks (read-only test): done                                                 
/dev/sdb1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: * FILE SYSTEM WAS MODIFIED *
/dev/sdb1: 11/1310720 files (0.0% non-contiguous), 126322/5242624 blocks

6)修复文件系统上的坏块

如果我们在文件系统上找到任何坏扇区,我们可以尝试使用-b修复它以指示新超级块使用

但首先,我们应该列出磁盘的超级块,了解我们可以使用哪一个

# dumpe2fs /dev/sdb1 | grep superblock
dumpe2fs 1.44.1 (24-Mar-2016)
  Primary superblock at 0, Group descriptors at 1-3
  Backup superblock at 32768, Group descriptors at 32769-32771
  Backup superblock at 98304, Group descriptors at 98305-98307
  Backup superblock at 163840, Group descriptors at 163841-163843
  Backup superblock at 229376, Group descriptors at 229377-229379
  Backup superblock at 294912, Group descriptors at 294913-294915
  Backup superblock at 819200, Group descriptors at 819201-819203
  Backup superblock at 884736, Group descriptors at 884737-884739
  Backup superblock at 1605632, Group descriptors at 1605633-1605635
  Backup superblock at 2654208, Group descriptors at 2654209-2654211
  Backup superblock at 4096000, Group descriptors at 4096001-4096003

现在,我们可以尝试使用列表的备用超级块进行恢复

# fsck -b 32768 /dev/sdb1
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2016)
/dev/sdb1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  +(32768--33795) +(98304--99331) +(163840--164867) +(229376--230403) +(294912--295939) +(819200--820227) +(884736--885763) +(1605632--1606659) +(2654208--2655235) +(4096000--4097027)
Fix<y>?

正如我们所看到的,我们可以对修复过程有很多问题,因此我们可以选择添加"-y""选项,只要启动命令,但它将继续,而不要求我们确认