我有两个驱动器,它们的分区相同,每个驱动器上运行两个 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 边界对齐。
进一步阅读
- 乔纳森·德·博因·波拉德(2011年)。磁盘分区对齐上的 gen。 常见答案。
答案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 的起始柱面差异会影响最终的分区大小。