Linux fsck.ext2命令详解

1. 语法

fsck.ext2 [-acdfFnprstvVy] [-b <分区第一磁区地址>] [-B <区块大小>] [-C <反叛减器>] [-I <inode缓冲区块数>] [-l/L <损坏区块文件>] [-P <处理inode大小>] [分区设备或文件名]

2. 参数详解

  1. -a 自动修复文件系统,不询问任何问题。

    • 示例

      fsck.ext2 -a /dev/sda1

      自动修复/dev/sda1上的文件系统。

  2. -b <分区第一磁区地址> 指定分区的第一个磁区的起始地址,也就是Super Block。

    • 示例

      fsck.ext2 -b 8193 /dev/sda1

      使用位于8193块的Super Block修复/dev/sda1

  3. -B <区块大小> 设置该分区区块的大小。

    • 示例

      fsck.ext2 -B 4096 /dev/sda1

      将区块大小设置为4096字节来修复/dev/sda1

  4. -c 检查指定的文件系统中,是否存在有损坏的区块。

    • 示例

      fsck.ext2 -c /dev/sda1

      检查/dev/sda1中的坏块。

  5. -C 反叛减器 显示进度。

    • 示例

      fsck.ext2 -C /dev/sda1

      显示修复/dev/sda1的进度。

  6. -d 详细显示指令执行过程,便于排错或分析程序执行的情形。

    • 示例

      fsck.ext2 -d /dev/sda1

      显示详细的调试信息。

  7. -f 强制对指定的文件系统进行完整检查,判断文件系统在检查下没有问题。

    • 示例

      fsck.ext2 -f /dev/sda1

      强制完全检查/dev/sda1

  8. -F 检查文件系统之前,先清理该保存设备中文件的数据。

    • 示例

      fsck.ext2 -F /dev/sda1

      检查前清理设备数据。

  9. -I <inode缓冲区块数> 设置检查时缓冲的inode区块数目。

    • 示例

      fsck.ext2 -I 256 /dev/sda1

      设置缓冲256个inode区块进行检查。

  10. -l <损坏区块文件> 把区块文件中的坏区块,视为损坏区块并标示出来,避免应用程序使用该区块。

    • 示例

      fsck.ext2 -l badblocks.txt /dev/sda1

      使用badblocks.txt中的坏块信息修复/dev/sda1

  11. -L <损坏区块文件>-l参数的效果相同,但会将原来的损坏区块标示区块信息覆盖。

    • 示例

      fsck.ext2 -L badblocks.txt /dev/sda1

      同样使用badblocks.txt修复,但覆盖原标示信息。

  12. -n 把检查的文件系统设成只读,并关闭互动模式,否决所有询问的问题。

    • 示例

      fsck.ext2 -n /dev/sda1

      以只读方式检查/dev/sda1,并自动否决所有询问。

  13. -p 此参数的效果相当于指定-a参数相同。

    • 示例

      fsck.ext2 -p /dev/sda1

      自动修复/dev/sda1

  14. -P <处理inode大小> 设置fsck.ext2指令所能处理的inode大小为多少。

    • 示例

      fsck.ext2 -P 256 /dev/sda1

      设置处理256字节大小的inode。

  15. -r 此参数将被忽略不予处理,仅负责解决兼容性的问题。

    • 示例

      fsck.ext2 -r /dev/sda1

      参数被忽略。

  16. -s 检查文件系统时,交换每对字节的内容。

    • 示例

      fsck.ext2 -s /dev/sda1

      检查时交换字节。

  17. -S 此参数的效果相当于指定-s参数相同,但不论该文件系统是否已是标准位顺序,一律交换每对字节的内容。

    • 示例

      fsck.ext2 -S /dev/sda1

      强制交换字节。

  18. -t 显示fsck.ext2指令的时序信息。

    • 示例

      fsck.ext2 -t /dev/sda1

      显示时序信息。

  19. -v 详细显示指令执行过程。

    • 示例

      fsck.ext2 -v /dev/sda1

      详细显示执行过程。

  20. -V 显示版本信息。

    • 示例

      fsck.ext2 -V

      显示fsck.ext2的版本信息。

  21. -y 关闭互动模式,并同意所有询问的问题。

    • 示例

      fsck.ext2 -y /dev/sda1

      自动同意所有修复询问。

3. 使用fdisk扩展磁盘100G的示例

/dev/sda磁盘扩容100G,并在此磁盘上使用fsck.ext2检查和修复文件系统。

  1. 查看当前磁盘分区情况

    fdisk -l
    Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: A1B2C3D4-E5F6-7890-1234-56789ABCDE
    
    Device      Start       End   Sectors   Size Type
    /dev/sda1    2048 419428351 419426304   200G Linux filesystem
  2. 使用fdisk扩展磁盘

    fdisk /dev/sda
    • 交互命令:

      1. 输入d删除分区。
      2. 输入分区号1
      3. 输入n新建分区。
      4. 输入p新建主分区。
      5. 输入分区号1
      6. 按回车使用默认起始位置。
      7. 输入+300G分配300GB(原有200GB + 新增100GB)。
      8. 输入w保存分区表并退出。
  3. 重新读取分区表

    partprobe /dev/sda
  4. 扩展文件系统

    resize2fs /dev/sda1
    resize2fs 1.44.1 (24-Mar-2018)
    Filesystem at /dev/sda1 is mounted on /mnt; on-line resizing required
    old_desc_blocks = 25, new_desc_blocks = 37
    The filesystem on /dev/sda1 is now 78643200 (4k) blocks long.
  5. 使用fsck.ext2检查并修复文件系统

    fsck.ext2 -f -y /dev/sda1
    e2fsck 1.44.1 (24-Mar-2018)
    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/sda1: 11/5242880 files (0.0% non-contiguous), 524288/20971520 blocks

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝