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


54

我有两个驱动器进行了相同的分区,并在每个驱动器上运行了两个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
输出并不表示这是4K高级格式驱动器:Sector size (logical/physical): 512 bytes / 512 bytes
2011年

1
为什么这被否决?
bwDraco

1
我不同意这种观点,我也没有意识到轨道对准的误解,并且JdeBP的信息非常有用,并且与有效问题相关。
加勒特


建议使用较新的磁盘驱动器,默认情况下将GPT2048用作启动扇区。较旧的磁盘可能已使用较旧的实用程序进行了格式化,并使用了非GPT分区表格式。要对较新的“ Advanced Format 4K”磁盘进行分区,请使用GPT fdiskUtilities。对于RAID,请确保使用fd00 Linux RAID适当的类型并标记分区。
TrinitronX

Answers:


44

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

进一步阅读


7
换句话说,LBA扇区号63对应于CHS格式的柱面0,磁头1,扇区1 ,这是您可以在MBR格式中使用的第一个扇区。但是,数字63不能被8整除,这会导致4K驱动器出现问题,因此某些现代工具将第一个分区从2048开始,这也提供了将来的GPT兼容性。
billc.cn 2011年

8
有时候,人们渴望一种可以降低评论质量的方法,尤其是在其他人试图将彻底的错误置入口中的评论时。这些“其他词”是错误的,这就是为什么它们不是我写的。一个具有MBR分区表的主分区可以使用的第一个扇区(就像几个人一样)是LB#2,如果不需要与IBM LVM之类的东西兼容,甚至可以使用LB#1。1MiB对齐方式与EFI分区表兼容性无关
JdeBP

是的,我想我在第一部分上犯了一个错误,但是对于第二部分,我的意思是,如果您从2048开始,那么将来将驱动器转换为GPT不会有问题,因此单词“也”和“未来” 。
billc.cn 2011年

5
那仍然是不正确的。无论如何,不会有任何问题。做算术。甚至与(假)轨道边界的原始对齐方式都提供了足够的空间。那60 512字节的扇区可以容纳240个EFI分区表条目。再次:1MiB对齐与EFI分区表兼容性无关
JdeBP

4
fdisk不是“旧实用程序”,而是积极维护的。只是不要通过以下方式使用“假磁盘几何图形” -c=dos(默认情况下处于关闭状态!)。该手册页明确警告不要这样做,因为CHS已成为迪斯科舞厅。到JdBP页面的链接已死,但是可以在Wikipedia条目Logical Disk Manager中找到1MiB(2048扇区)对齐的历史记录。这是Windows Vista的缺陷:“使用1-MiB对齐边界可以使用Vista Disk Mgt更安全地编辑分区表。”
David Tonhofer

36
fdisk -c=dos

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


3
接受的答案具有一些有价值的信息,但是此答案具有解决问题所需要的精髓。
jcbwlkr

fdisk不允许我在没有此参数的情况下重新创建从扇区2048开始的分区-我得到了First sector (3072-314572799, default 3072):
-tomfanning

5
如果您要调整分区的大小,这是至关重要的,这对于fdisk意味着删除并重新创建它;您需要该分区从同一位置开始。
mcr

不再与fdisk from util-linux 2.28:/
akostadinov

1
fdisk -c=dos -u=cylinders /dev/sdb在gist中找到了它-gist.github.com/jkullick/febf46756435f1fa99dc56f00782de03
akostadinov

7

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

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


1

不确定为什么首先从63开始,但是根据fdisk,您的扇区大小为512。

因此,如果您希望分区,从而使群集对齐,则起始偏移量应可被512整除。如今,2048很常见。

如果您更喜欢未对齐的扇区,则始终可以使用GPart将分区移回63。

编辑:

哎呀 没有看到您有RAID。您可能应该发布RAID和条带大小。


1
63是二进制的111111。PC的BIOS的扇区号已/已编码为六位,因此每个磁道最多可有111111(63)个扇区。此最大值仍用于虚拟CHS几何。
克里斯·里德

1

当我意识到实际问题已得到解答时,快速解决63 vs 2048第一缸问题的方法如下:

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

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

然后,您可以继续将各个分区重新添加到RAID中,由于63/2048启动柱面差异导致最终分区大小不符,您会抱怨这些分区的大小不相同。


您应该解释它的作用,来源目的地?
Pawel Cioch

0

1 MiB(2048 * 512字节模拟块大小)选择对于各种硬件存储配置来说都是一个很好的选择。由于文件系统数据结构通常与分区起点对齐,因此这对于最大化存储读取/写入速度可能很重要。

例如:

RAID可以使用大小在16到256 KiB之间的数据条带。1 MiB是此整数倍,因此从1 MiB开始分区与基础RAID模型兼容。

SSD的擦除块大小通常为128到256个NAND页面,具体取决于驱动器的大小可能是256 KiB或512 KiB。因此,再次在这里,以1 MiB开始分区与基础SSD存储特性兼容。

Advance Format 512e旋转硬盘具有4 KiB的物理块大小,同样,1 MiB是其整数倍(尽管是一个很大的整数)。

因此,如果您有一个AF驱动器并按GPT分区,则您可能会对第一个分区从LBA块40(HDD的每个物理块中的8个逻辑块的整数倍)开始非常满意,几乎没有仅从LBA块2048(1 MiB)开始就丢失了世界存储,这对于将软件分区默认设置为更灵活的值,因为它几乎适用于任何硬件配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.