1 区别

e2fsck只是针对ext2、ext3、ext4等ext系列文件系统的工具,fsck支持检查各种不同的文件系统,包含ext系列文件系统。

2 e2fsck命令

指令:e2fsck

  • 使用权限 : 超级使用者
  • 使用方式 : e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device
  • 参数 :
  • device : 预备检查的硬碟 partition,例如:/dev/sda1
  • -a : 对 partition 做检查,若有问题便自动修复,等同 -p 的功能
  • -b : 设定存放 superblock 的位置
  • -B : 设定单位 block 的大小
  • -c : 检查该partition 是否有坏轨
  • -C file : 将检查的结果存到 file 中以便查看
  • -d : 列印 e2fsck 的 debug 结果
  • -f : 强制检查
  • -F : 在开始检查前,将device 的 buffer cache 清空,避免有错误发生
  • -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
  • -L bad_blocks_file : 设定坏轨的block资料存到 bad_blocks_file 里面,若无该档则自动产生
  • -n : 将档案系统以[唯读]方式开启
  • -p : 对 partition 做检查,若有问题便自动修复
  • -v : 详细显示模式
  • -V : 显示出目前 e2fsck 的版本
  • -y : 预先设定所有检查时的问题均回答[是]

  例子 :

  检查 /dev/hda5 是否正常,如果有异常便自动修复,并且设定若有问答,均回答[是] :

  e2fsck -a -y /dev/hda5

  注意 :

  大部份使用 e2fsck 来检查硬碟 partition 的情况时,通常都是情形特殊,因此最好先将该 partition umount,然后再执行 e2fsck 来做检查,若是要非要检查 / 时,则请进入 singal user mode 再执行。

3 fsck 命令

         

  • 参数 :
  • filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
  • -s : 依序一个一个地执行 fsck 的指令来检查
  • -A : 对/etc/fstab 中所有列出来的 partition 做检查
  • -C : 显示完整的检查进度
  • -d : 列印 e2fsck 的 debug 结果
  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
  • -R : 同时有 -A 条件时,省略 / 不检查
  • -V : 详细显示模式
  • -y : 预先设定所有检查时的问题均回答[是]
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复
  • 例子 :
  • 检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 :
  • fsck -t msdos -a /dev/hda5
  • 注意 :
  • 此指令可与 /etc/fstab 相互参考操作来加以了解。

 

4 文件修复

当系统正在对某个文件系统的区域进行写入操作时(读的话没关系),突然断电,会造成文件系统对应区域的损坏(如写入脏数据), 而e2fsck算法就是用来恢复受损的文件系统,目的是:系统能够重启后,一切长长。当然,有损坏,想原样修复,当然不能100%保证,所以,就遇到了某些系统文件丢失,或者文件属性发生变化的事情。 文件损坏会报错structure needs cleaning(结构需要清理)。

4.1 树莓派armv7l ext系列文件系统文件修复

1 卸载  /dev/mmcblk1p7

 sudo vim /etc/fstab

/dev/mmcblk1p7 /data auto defaults 0 0 前面加一个#,改成如下

#/dev/mmcblk1p7 /data auto defaults 0 0

保存退出,reboot

2 修复 /dev/mmcblk1p7

sudo e2fsck -p -f /dev/mmcblk1p7

如果提示修复不成功,要手动修复,执行

sudo e2fsck -f -y /dev/mmcblk1p7

这种情况,需要在删除错误目录 /data/dockerFile

sudo mount /dev/mmcblk1p7 /data

rm -rf /data/dockerFile

3 重新挂载 /dev/mmcblk1p7

 sudo vim /etc/fstab

#/dev/mmcblk1p7 /data auto defaults 0 0 删除#,改成如下

/dev/mmcblk1p7 /data auto defaults 0 0

保存退出,reboot

4 检查/data是否挂载

执行 df -h

4.2 fsck修复

下面操作会删除挂载点所有文件,注意备份。

1 首先df -t 查看出错的挂载点对应的文件系统和文件系统类型

2 然后umount这个文件系统

比如:umount /dev/sda1

3 然后根据文件系统类型不同操作不同 

比如ext4:

fsck.ext4 /dev/sda1

 

4 最后重启reboot

 

 

 

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐