如何修复无效的地图节点链接?

如何修复无效的地图节点链接?

我的驱动器已格式化为 hfs+,但不干净。

例如,当我尝试通过 挂载驱动器时mount -f -o rwdmesg显示错误:

hfs: Filesystem was not cleanly unmounted, running fsck.hfsplus is recommended.
mounting read-only.

因此,当我尝试通过fsck.hfsplus(部分hfsprogs)修复它时,它说:

$ fsck -dyf /media/sdd2
** /dev/sdd2
    Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
** Checking HFS Plus volume.
** Detected a case-sensitive catalog.
** Checking Extents Overflow file.
** Checking Catalog file.
   Invalid map node linkage
(4, 0)
** Volume check failed.
volume check failed with error 7 
    volume type is pure HFS+ 
    primary MDB is at block 0 0x00 
    alternate MDB is at block 0 0x00 
    primary VHB is at block 2 0x02 
    alternate VHB is at block 3906291630 0xe8d547ae 
    sector size = 512 0x200 
    VolumeObject flags = 0x07 
    total sectors for volume = 3906291632 0xe8d547b0 
    total sectors for embedded volume = 0 0x00 

尽管使用-y-f,驱动器并未得到修复。

这是根据这个错误的解释博客:

检查完 B*-Tree 后,fsck 就会继续检查分配映射。 fsck 如上所述检查头节点。然后,它检查每个节点,确保其将自己标识为映射节点并具有正确数量的记录。如果节点未通过这些检查,fsck 将返回“无效的映射节点”。然后 fsck 检查以确保节点高度不为 0(“无效节点高度”)。最后,如果它已经到达树的底部并且mapSize(存储树中的记录总数并且每次处理节点时递减)不为0,fsck 知道存在孤立节点并返回“无效的映射节点链接”。

但是,我不知道如何修复该错误,因为它不会自动更正,并且我无法将分区安装为可写。有什么想法如何修复该错误吗?

PS磁盘工具也有类似的问题。

答案1

您应该尝试重建目录文件(B树)在指定的文件系统(即高频FS+) 通过指定-r的选项fsck,例如:

$ fsck.hfsplus -fryd /dev/sdd2

当前,仅当指定文件系统上有足够的连续空间用于新目录文件并且现有目录文件中的叶节点没有损坏(换句话说,fsck 能够遍历每个目录文件)时,此选项才起作用。请求的 b 树中的节点已成功)。

当然,如果您不想冒进一步损坏任何数据的风险,请在执行任何磁盘操作之前进行备份(整个映像磁盘转储)。

通过跑步查看更多man fsck.hfsplus

如果这没有帮助,请尝试使用其他一些工具来修复磁盘,例如:

  • 测试盘通过 CGSecurity | Mac、Windows、Linux ( apt-get install testdisk)
  • 磁盘战士由 Alsoft(商业)- 可启动磁盘或 Mac 应用程序

相关内容