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

Tom*_*ale 7 partitioning disk testdisk

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

在 64GB SD 卡上运行testdisk's时得到以下输出Analyze

TestDisk 6.14, Data Recovery Utility, July 2013                                                                                                                                                       
Christophe GRENIER <grenier@cgsecurity.org>                                                                                                                                                           
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 
Run Code Online (Sandbox Code Playgroud)

两个分区都是fsck-clean,chkdskWin10下/dev/sdb1也是-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
Run Code Online (Sandbox Code Playgroud)

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

TestDisk 6.14, Data Recovery Utility, July 2013                                                                                                                                                       
Christophe GRENIER <grenier@cgsecurity.org>                                                                                                                                                           
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
Run Code Online (Sandbox Code Playgroud)

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

如何删除初始mismatch警告?

Rod*_*ith 9

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

长答案: Cylinder/head/sector (CHS) 值经历了几个阶段,从准确的表示到方便的虚构,再到不方便的虚构,再到无用甚至废弃。CHS 值(存储在主引导记录或 MBR数据结构中)最大约为 8 GB,因此 CHS 只能代表现代磁盘上最小的分区。事实上,现在甚至很多 U 盘都超过了 CHS 的限制!较新的GUID 分区表 (GPT)数据结构甚至不使用 CHS 值,除了一个区域(“保护性 MBR”),该区域仅用于向旧软件发出信号,表明它不应与磁盘混淆——并且在实际上,根据 MBR 或 GPT 标准,保护性 MBR 中使用的 CHS 值通常完全是假的。

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

实际上,除非您使用的是非常古老的软件(例如非常旧的 DOS 版本),否则您应该简单地忽略 TestDisk 关于 CHS 值的警告。要求 TestDisk 的作者不再强调 CHS 而支持 LBA 可能也是值得的。如果您想消除这些警告,您唯一的选择就是说服 TestDisk 的作者这样做或自己修改软件。

  • 我为此提出了一个 [问题](https://github.com/cgsecurity/testdisk/issues/11)。 (2认同)

小智 9

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

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

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

所以你可以放心地忽略这个警告,但是从 testdisk 中删除这个警告是错误的。

  • +1 是来自(大概是:)testdisk 作者的权威回应 (2认同)