testdisk:“警告:(磁头/磁柱|每磁道扇区数)不匹配 255(FAT)!= 64(HD)”

testdisk:“警告:(磁头/磁柱|每磁道扇区数)不匹配 255(FAT)!= 64(HD)”

TL;DR:当其他一切看起来都很好时,我该如何摆脱主题行中的警告?

在64GB SD 卡上testdisk运行时,我得到以下输出:Analyze

TestDisk 6.14, Data Recovery Utility, July 2013                                                                                                                                                       
Christophe GRENIER <[email protected]>                                                                                                                                                           
http://www.cgsecurity.org                                                                                                                                                                             

Disk /dev/sdb - 63 GB / 59 GiB - CHS 60906 64 32                                                                                                                                                      
Current partition structure:                                                                                                                                                                          
     Partition                  Start        End    Size in sectors                                                                                                                                   

Warning: number of heads/cylinder mismatches 255 (FAT) != 64 (HD)                                                                                                                                     
Warning: number of sectors per track mismatches 63 (FAT) != 32 (HD)                                                                                                                                   
 1 P FAT32 LBA                0   1 32 51199  63 32  104857537 [27GB]                                                                                                                                 
 2 P Linux                51200   0  1 60902  63 32   19871744 [Link2SD]                                                                                                                              
No partition is bootable 

两个分区都是fsck-clean,并且/dev/sdb1chkdsk在Win10下也是-clean。

fsck -l说:(我觉得一切都很好)

Disk /dev/sdb: 63.9 GB, 63864569856 bytes
64 heads, 32 sectors/track, 60906 cylinders, total 124735488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1c580740

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   104857599    52428768+   c  W95 FAT32 (LBA)
/dev/sdb2       104857600   124729343     9935872   83  Linux

testdisk如果我尝试设置警告中提到的几何图形mismatch(H=255,S=63),我会得到:

TestDisk 6.14, Data Recovery Utility, July 2013                                                                                                                                                       
Christophe GRENIER <[email protected]>                                                                                                                                                           
http://www.cgsecurity.org                                                                                                                                                                             

Disk /dev/sdb - 63 GB / 59 GiB - CHS 7765 255 63                                                                                                                                                      
Current partition structure:                                                                                                                                                                          
     Partition                  Start        End    Size in sectors                                                                                                                                   

 1 P FAT32 LBA                0   1  1  6527  21 22  104857537 [27GB]                                                                                                                                 

Bad relative sector.                                                                                                                                                                                  
 2 P Linux                 6527  21 23  7764  10 54   19871744 [Link2SD]                                                                                                                              
No partition is bootable

请注意,扇区 6527 现在是“共享的”,这似乎不正确。

我如何才能删除初始mismatch警告?

答案1

您可以忽略此警告,因为您没有要恢复的分区。

现代分区软件将分区与 1 MB 边界对齐。但当分区与柱面边界对齐时,正确的几何结构对于恢复丢失的分区很有用。

对于第二个分区来说情况确实如此,但是对于第一个分区来说情况并非如此,因为它与柱面边界对齐(假设每个柱面有 255 个磁头并且每个柱面有 63 个扇区,这些信息记录在 FAT32 引导扇区中)。

因此您可以安全地忽略此警告,但从 testdisk 中删除此警告是错误的。

答案2

简短回答:忽略警告或联系程序的作者。

长答案:气缸/头部/扇区 (CHS) 值经历了几个阶段,从精确表示到方便的虚构,再到不方便的虚构,再到比无用更糟糕,再到被抛弃。CHS 值(存储在主引导记录 (MBR)数据结构)的最大容量约为 8 GB,因此 CHS 只能表示现代磁盘上最小的分区。事实上,现在许多 USB 闪存驱动器都超过了 CHS 的限制!较新的GUID 分区表 (GPT)数据结构甚至不使用 CHS 值,除了一个区域(“保护性 MBR”)之外,该区域仅存在向旧软件发出信号,告知它不应该干扰磁盘 - 并且在实践中,保护性 MBR 中使用的 CHS 值通常完全是伪造的,无论是按照 MBR 还是 GPT 标准。

TestDisk 是一款有用的工具,但我承认我并没有经常使用它。当我使用它时,我对它在用户界面的显眼位置继续使用 CHS 值感到震惊。这是毫无意义的,而且可能会造成混淆。如今大多数现代工具(甚至是用于操作 MBR 磁盘的工具)都使用逻辑块寻址 (LBA)几乎完全如此,或者至少优先于 CHS 寻址。LBA 最多可以处理 MBR 磁盘上的 2^32 个扇区,如果扇区大小为 512 字节,则相当于 2 TiB。在 GPT 磁盘上,使用 64 位 LBA 值,因此限制为 2^64 个扇区(假设扇区大小为 512 字节,则为 8 ZiB)。写入 MBR 数据结构的工具必须继续填充 CHS 字段,但在大小超过 8 GB 的磁盘上,这些字段可能会达到最大值或包含伪造值;对于超过 8GB 的​​磁盘,这一事实根本无济于事。

从实际角度来说,除非您使用的是非常古老的软件(例如非常老版本的 DOS),否则您应该直接忽略 TestDisk 关于 CHS 值的警告。要求 TestDisk 的作者淡化 CHS 而采用 LBA 可能也是值得的。如果您想消除警告,您唯一的选择就是说服 TestDisk 的作者这样做或自己修改软件。

相关内容