为什么分区从扇区 2048 而不是 63 开始?

gcb*_*gcb 60 hard-drive partitioning fdisk

我有两个分区相同的驱动器,并在每个驱动器上运行两个 RAID 分区。

一个死了,我在同一型号的保修期内更换了它。

在尝试对其进行分区时,第一个分区只能从扇区 2048 开始,而不是之前的 63 扇区。驱动器具有与以前和剩余的不同的几何形状。(更少的磁头/更多的气缸)

旧驱动:

$ sudo fdisk -c -u -l /dev/sdb 

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 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: 0x000aa189

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63   174080339    87040138+  83  Linux
/dev/sdb2       174080340   182482334     4200997+  82  Linux swap / Solaris
/dev/sdb3       182482335  3907024064  1862270865   fd  Linux raid autodetect
Run Code Online (Sandbox Code Playgroud)

从保修中收到的再制造驱动器:

$ sudo fdisk -c -u -l /dev/sda

Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
81 heads, 63 sectors/track, 765633 cylinders, total 3907029168 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: 0x000d0b5d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  ...
Run Code Online (Sandbox Code Playgroud)

这是为什么?

Jde*_*eBP 47

因为您的旧磁盘是使用旧实用程序(例如 Linux )进行分区的,该实用程序fdisk使用您看到的完全虚假的磁盘几何结构无用地实现了磁道对齐,并且您的新磁盘已经或正在被较新的实用程序分区(通过默认)改为对齐到 1MiB 边界。

进一步阅读

  • 有时,人们渴望有一种方式来标记评论,尤其是其他人试图将完全错误放入口中的评论。那些“其他词”是_不正确的_,这就是为什么它们_不是我写的_。对于具有 MBR 分区表的主分区,可以使用的第一个扇区(就像几个人拥有的那样)是 LB#2,如果不需要与 IBM 的 LVM 之类的东西兼容,甚至可以使用 LB#1。并且 1MiB 对齐与 EFI 分区表兼容性_无关_。 (8认同)
  • 换句话说,LBA扇区号63对应[CHS](http://en.wikipedia.org/wiki/Cylinder-head-sector)格式的柱面0、磁头1、扇区1,即第一个扇区您可以在 MBR 格式中使用。但是,数字 63 不能被 8 整除,这会导致 4K 驱动器出现问题,因此一些现代工具从 2048 开始第一个分区,这也提供了未来的 GPT 兼容性。 (7认同)
  • `fdisk` 不是“旧实用程序”,它得到了积极维护。只是不要通过`-c=dos` 使用“假磁盘几何”(默认情况下它是关闭的!)。联机帮助页明确警告不要这样做,因为 CHS 作为迪斯科已经死了。JdBP 页面的链接已失效,但可以在维基百科条目 [逻辑磁盘管理器](https://en.wikipedia.org/wiki/Logical_Disk_Manager#Compatibility_problems_with_using_a_1-MiB_alignment_boundary) 中找到 1MiB(2048 扇区)对齐的历史。这是 Windows Vista 的一个问题:“使用 1-MiB 对齐边界允许使用 Vista 磁盘管理更安全地编辑分区表。” (7认同)
  • 那还是不正确的。一个人会_无论如何_都没有问题。做算术。甚至与(假)轨道边界的原始对齐也提供了足够的空间。这 60 个 512 字节的扇区可以容纳 240 个 EFI 分区表条目。再次强调:1MiB 对齐与 EFI 分区表兼容性_无关_。 (5认同)

小智 43

fdisk -c=dos
Run Code Online (Sandbox Code Playgroud)

您在创建分区时使用了旧的 DOS 分区表。fdisk默认情况下,较新版本的不使用 dos 兼容模式。

  • 如果您尝试调整分区大小,这很重要,使用 fdisk 意味着删除并重新创建它;您需要分区从同一位置开始。 (6认同)
  • 接受的答案有一些有价值的信息,但这个答案有我解决问题所需的宝石。 (5认同)

小智 8

也许在这里添加评论会很有用。对于 LUKS 分区,据说在同一位置删除并重新创建分区,但在调用cryptsetup resize. 但是很久以前创建分区时,它从扇区63开始。使用fdisk,分区将在错误的偏移量处重新创建,从而导致分区丢失。

我设法使用fdisk -c=dos能够从扇区 63 创建分区来恢复它,没有遇到任何麻烦。