我的 fsck_hfs 输出中的“NO MATCH”是什么意思?

我的 fsck_hfs 输出中的“NO MATCH”是什么意思?

我正在尝试检查外部 USB 3.5 英寸硬盘是否有坏扇区,并在可能的情况下修复它们。

$ sudo fsck_hfs -fy -S /dev/disk2

给出以下输出:

** /dev/rdisk2 (NO WRITE)
Scanning entire disk for bad blocks
   Executing fsck_hfs (version hfs-285).
volumeType is 0
0000:  0000 0000 0000 0000 0000 0000 0000 0000       |................|
. . .
01b0:  0000 0000 0000 0000 0000 0000 0000 00fe       |................|
01c0:  ffff eefe ffff 0100 0000 2f7b a8ae 0000       |................|
01d0:  0000 0000 0000 0000 0000 0000 0000 0000       |................|
. . .
01f0:  0000 0000 0000 0000 0000 0000 0000 55aa       |..............U.|
block 8509328:  *** NO MATCH ***
block 8509329:  *** NO MATCH ***
block 8509330:  *** NO MATCH ***
block 8509331:  *** NO MATCH ***
block 8509332:  *** NO MATCH ***
block 8509333:  *** NO MATCH ***
block 8509334:  *** NO MATCH ***
block 8509335:  *** NO MATCH ***
block 2305765384:   *** NO MATCH ***
block 2305765385:   *** NO MATCH ***
block 2305765386:   *** NO MATCH ***
block 2305765387:   *** NO MATCH ***
block 2305765388:   *** NO MATCH ***
block 2305765389:   *** NO MATCH ***
block 2305765390:   *** NO MATCH ***
block 2305765391:   *** NO MATCH ***
block 2305765472:   *** NO MATCH ***
block 2305765473:   *** NO MATCH ***
block 2305765474:   *** NO MATCH ***
block 2305765475:   *** NO MATCH ***
block 2305765476:   *** NO MATCH ***
block 2305765477:   *** NO MATCH ***
block 2305765478:   *** NO MATCH ***
block 2305765479:   *** NO MATCH ***
block 2305765480:   *** NO MATCH ***
block 2305765481:   *** NO MATCH ***
block 2305765482:   *** NO MATCH ***
block 2305765483:   *** NO MATCH ***
block 2305765496:   *** NO MATCH ***
block 2305765497:   *** NO MATCH ***
block 2305765498:   *** NO MATCH ***
block 2305765499:   *** NO MATCH ***
block 2305765500:   *** NO MATCH ***
block 2305765501:   *** NO MATCH ***
block 2305765502:   *** NO MATCH ***
block 2305765503:   *** NO MATCH ***
block 2305765528:   *** NO MATCH ***
block 2305765529:   *** NO MATCH ***
block 2305765530:   *** NO MATCH ***
block 2305765531:   *** NO MATCH ***
block 2305765532:   *** NO MATCH ***

这是好是坏?如何理解这个输出?

更新:

在此处找到:https://www.unix.com/man-page/osx/8/fsck_hfs/

EXIT VALUES
 fsck_hfs indicates some status by exit value.  The current list of exit status results is:
       0       No errors found, or successfully repaired.
       3       A quick-check (the -n option) found a dirty filesystem; no repairs were made.
       4       During boot, the root filesystem was found to be dirty; repairs were made, and the
               filesystem was remounted.  The system should be rebooted.
       8       A corrupt filesystem was found during a check, or repairs did not succeed.
       47      A major error was found with -E.

看起来我的硬盘很好:

volumeType is 0

但我想了解其他输出线

答案1

现代驱动器在写入时会自动锁定坏扇区。

备份该驱动器中您关心的所有数据,然后选择“将所有数据清零”来格式化整个驱动器。

如果您可以读取驱动器的 SMART 数据计数器,请查看待处理和锁定/重新映射坏扇区的计数器是否仍为零。如果它们不为零,那么您的驱动器可能已损坏,不应信任重要/不可替代的数据。

答案2

我在尝试修复外部设备时也遇到了同样的情况。

长话短说,你的设备有坏块,但现在分配给文件系统上的文件,但因为 fsck_hfs已识别它们,这意味着驱动器电子设备本身无法重新映射它们或将它们从操作系统中“隐藏”。这可不是什么好事。您不能再依赖此设备来安全地存储新数据*,并且您可能应该将设备上当前的所有数据复制到其他地方。

这个答案请参阅 Apple Stack Exchange 网站以了解更多详细信息。

还要注意,你不能(总是)猜测退出代码一个 macOS 程序或者一般任何 Unix 程序,只是基于它打印到终端的输出。

您的fsck_hfs命令很可能失败,退出代码为 8(我的就是这种情况),您可以echo $?在命令完成后立即输入来检查。


* 如果你的资金真的很紧张,可能可以在设备上创建新的文件系统,从而避免坏区(例如,使用mkfs.ext2,在Linux上,它有一个用于指定坏块列表的参数),但这超出了你的问题的范围,而且很可能设备已经到了其使用寿命的尽头。

相关内容