用重复块引用恢复JFS分区

在服务器崩溃之后,我无法在Linux上安装JFS分区。 jfs_fsck工具返回

 Duplicate block references have been detected in Metadata. CANNOT CONTINUE. processing terminated: <date> <time> with return code: 10060 exit code: 4. 

12TB分区拥有科学计算结果,可以在几个星期内重现,而且不会被备份。 虽然我不能排除由于用户疏忽而造成一些不可重复数据的可能性。

我计划恢复分区如下:

  1. 重播日志并以只读方式挂载分区
  2. 将可以读取的文件复制到另一个文件系统
  3. 使用jfs_fsck -v标识具有重复引用的块
  4. 使用jfs_debugfs标识与这些块对应的inode
  5. 使用find -inum与inode对应的文件系统对象
  6. 使用jfs_debugfs完全取消链接对象
  7. 再次运行jfs_fsck ,并希望它会完成而没有错误

这个计划只有在步骤(1)到(4)才有效。 它在步骤(5)中首先失败,在运行几个小时之后find似乎没有得到一个单一的inode,并且可能永远运行。 当复制文件时,我发现一些目录的B +树变成了带有循环的graphics,所以目录遍历不会终止。

我直接跳到步骤(6),并首先取消了可以find损坏结构的目录。 但是这并没有帮助jfs_fsck运行完成。 然后,我删除所有的目录,但根目录条目。 然而jfs_fsck仍然无法完成。

我想我不仅要编辑目录结构,还要编辑块分配映射。 但是我找不到用jfs_debugfs来实现的方法。

有工具,可以帮助使重复块引用恢复分区的分区?

如果你可以安装磁盘R / O,你可能会尝试复制你可以的数据。 如果日志损坏,则可能是只有最后几个文件更改丢失。 因此你可以尝试把文件取出。

但是,如果文件是数据,你怎么知道它是否是正确的或没有被破坏本身。

当然,期刊腐败也可能隐藏了更严重的磁盘问题。

在这一点上,我的想法是要确保数据的完整性,您可能需要重新运行模拟。