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

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

我有两个驱动器,它们的分区相同,每个驱动器上运行两个 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

从保修处收到的翻新驱动器:

$ 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  ...

这是为什么?

答案1

因为您的旧磁盘是使用旧的实用程序(例如 Linux)进行分区的,fdisk它使用您看到的完全虚假的磁盘几何形状无用地实现了轨道对齐,而您的新磁盘已经或正在由较新的实用程序进行分区,该实用程序(默认情况下)改为与 1MiB 边界对齐。

进一步阅读

答案2

fdisk -c=dos

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

答案3

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

我已设法将其恢复,fdisk -c=dos以便能够从第 63 扇区创建分区,没有任何麻烦。

答案4

虽然我意识到实际问题已经得到解答,但对于 63 vs 2048 第一缸问题的快速修复方法是这样的:

sfdisk -d /dev/sdb | sfdisk --force /dev/sda

(如果你确定你有相同大小的驱动器)

然后,您可以继续将各个分区重新添加至 RAID,您会收到有关分区大小不一样的投诉,因为 63/2048 的起始柱面差异会影响最终的分区大小。

相关内容