OS : linux

文件系统存在数据损坏导致打开文件或者文件夹失败,这种情况下还能mount上去,只是某些文件或者文件夹打开有问题

ls 命令结果如下:

root@VivaresGW01:/rootfs/usr/local/bin# ls -l
ls: ./backup: Structure needs cleaning

使用系统接口读取errno会报错117,结果如下:

root@VivaresGW01:/usr/local/bin# TEST_FILE_IO  /rootfs/usr/local/bin
/rootfs/usr/local/bin/backup error errno=117!!

首先解除挂载

#umount /rootfs

运行e2fsck命令的检测修复结果

# e2fsck -v -p /dev/mmcblk1p3

关于e2fsck命令的说明如下:

Linux e2fsck命令用于检查使用 Linux ext2 档案系统的 partition 是否正常工作。

语法

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 : 预先设定所有检查时的问题均回答[是]

然后使用mount命令重新挂载回去,问题解决

#mount -t ext3 /dev/mmcblk1p3 /rootfs

但是我们应该添加一些处理在系统启动时去检测文件系统的数据是否有损坏

更多推荐

ls命令报错Structure need cleaning errno 117