![寻找纠正硬盘几何形状的方法。气缸数不正确](https://linux22.com/image/210110/%E5%AF%BB%E6%89%BE%E7%BA%A0%E6%AD%A3%E7%A1%AC%E7%9B%98%E5%87%A0%E4%BD%95%E5%BD%A2%E7%8A%B6%E7%9A%84%E6%96%B9%E6%B3%95%E3%80%82%E6%B0%94%E7%BC%B8%E6%95%B0%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
我有 2 个硬盘已损坏,因为柱面数不再正确。不确定这是如何发生的,但具有相同的硬盘型号,我已经验证了正确的柱面数。早期版本的 sfdisk 有此选项。 fdisk x 具有修改几何结构的选项,但 w(写入)命令不会保存更改。找到一个程序(Disk Genius @ 99 美元)说它可以完成这项工作,但希望他们是一个开源选项?互联网搜索提到 Gparted 可以做到这一点,但我还没有找到该选项。我使用 dd 将 HD 清零,并使用 fdisk 删除并创建新的分区表。一切仍然使用错误的气缸数据。尝试过 Linux Mint、Ubuntu 和 MX 下的 fdisk
答案1
如果硬盘驱动器大于 7.87 GiB(或约 8.4 GB 或恰好 16 450 560 个块),则使用逻辑块寻址 (LBA) 对其进行访问。这意味着只有块号才有意义,任何“磁盘几何形状”都无关紧要。
如果您看到 C/H/S 值为 1023/254/63 或 1023/255/63,则这些是 MBR 分区表中使用的虚拟填充值。它们仅意味着“实际值大于在 MS-DOS 或 MBR 分区表中使用 C/H/S 几何值可以表示的值”,并且是不是指示柱面、磁头或扇区的实际数量。
MBR 分区表和 MS-DOS 都使用 10 位宽字段作为 Cylinder 值,因此仅适合 0..1023 之间的值。对于Head值来说,有8位,但是对于Sector值来说,只有6位。此外,还有一个约定,即扇区值从 1 开始,而不是从 0 开始,并且一个旧的 MS-DOS 错误阻止了 Head #255 的使用。
在 PATA/IDE 硬件级别,可以使用高达 65536/16/255 的 C/H/S 样式寻址,这意味着磁盘大小略低于 128 GiB(或 136.9 GB,或 2^28)块)。但这些值不能在MS-DOS中使用,也不能存储在MBR分区表中;当磁盘大小达到该水平时,磁盘的实际内部几何形状已经比这更复杂(例如,外柱面将比内柱面具有更多的物理扇区)。因此,即使在 PATA 的最后几天,C/H/S 寻址也已经逐渐成为满足传统操作系统所需的虚构内容,仅此而已。
对于大于 7.87 GiB 的现代磁盘,如果使用 MBR 分区,则用于确定分区位置和大小的唯一有意义的字段是分区的第一个绝对扇区的 LBA# 以及分区中的扇区数。由于它们都是 4 字节字段,因此它们可用于表示最大 2 TiB 的分区,或最大十六进制的 LBA 块号 0xffff ffff。
所以除非您谈论的是 20 多年的旧磁盘和操作系统,否则您很可能会忽略“磁盘几何结构”,因为它没有用于任何用途,而且可能根本不是真实的。