我的环境:BananaPI,内核为 3.4.108
每当我对 SD 卡运行文件系统检查时,都会在块 134217729 上出现读取错误。实际上,这并不奇怪,因为这张 32GB 卡只有 7167999 个块用于第二个大 EXT4 FS。
我还尝试运行 fsck.ext4 -f -c (见下文)这也没有帮助。这不是一个坏块,我想它一定是一个坏的inode被破坏了。对于“忽略错误”的问题回答“否”也没有帮助。
显然,fsck.ext4 可以发现文件系统上的问题,但无法修复。
我的问题是否有其他非破坏性工具可用于修复出现此类问题的损坏的 EXT4 fs?
// 汉斯
# fsck.ext4 -f -c /dev/sda2 e2fsck 1.42.5(2012 年 7 月 29 日) 检查坏块(只读测试):完成 root:更新坏块 inode。 第 1 遍:检查 inode、块和大小 读取块 134217729 时出错(参数无效)。忽略错误?是的 强制重写?是的 从扫描获取下一个 inode 时写入块 134217729(无效参数)时出错。忽略错误?是的 第 2 步:检查目录结构 第 3 步:检查目录连接性 第 4 步:检查引用计数 Pass 5:检查组摘要信息 root: ***** 文件系统已修改 ***** 根:193003/1794048 个文件(0.3% 不连续),1988723/7168000 个块
答案1
您可以尝试使用文件系统编辑器,例如debugfs(8)
.这是一项精致、细致的工作。但我非常怀疑你能解决这个问题,如果fsck(8)
不能/不会解决问题,它可能是非常严重的(或者至少是古怪的)。
备份文件系统的内容。然后你可以使用 获取它的副本到文件中dd(1)
,并使用该副本。如果您设法修复它,请重播原始命令。
或者只是备份并重新格式化。
检查媒体,如果有问题,就扔掉它。您存储在其上的数据更有价值。