使用 Linux fdisk 对 2TB 磁盘进行对齐分区

使用 Linux fdisk 对 2TB 磁盘进行对齐分区

有没有办法使用标准 Linux fdisk(我试过 2.17.2 版本)在磁盘上创建一个 2TB 的分区,该分区与 4096 字节扇区对齐?

我尝试了以下操作并遇到了所描述的错误:

  • 如果我只是使用该-u标志,它会将簇大小设置为一个 512 字节的扇区。然后,分区必须有 3,906,250,000 个簇长,而 fdisk 会将该数字截断为 2,147,483,647 (2^31-1)。
  • 如果我使用-b 4096,它允许我正常创建分区(长度为 488,281,506 个扇区),但如果我使用检查生成的分区的大小blockdev --getsize64,它会显示该分区只有 250GB 大,即它仍然使用 512 的扇区大小。
  • 例如,如果我尝试使用 设置扇区和磁头数-S 64 -H 32,那么它总是将扇区数设置回 63,而这不能整除 4096(我知道,32 能被 8 整除在技术上就足够了,但是 - 你可以叫我完美主义者 - 我真的很希望分区从扇区 2048(1MB 对齐)开始,因为我读到这是目前推荐的设置。

是否有一些参数组合可以传递给 fdisk,使我能够创建一个起始大小为 1MB(扇区 2048 [256],扇区大小为 512-[4096-] 字节)且长度为 2TB(扇区大小为 3,906,250,000 [488,281,506],扇区大小为 512-[4096-] 字节)的分区?

(我读到我可以使用 gparted 并让其将驱动器更改为 GPT 分区,但我真的很想知道是否有办法使用标准 fdisk 和 MBR 分区来做到这一点。我不明白为什么 MBR 分区不允许这样做......)

答案1

最新版本的fdisk默认从扇区 2048 开始第一个分区。如果您看到其他行为,则说明您使用的 版本较旧,或者您使用的fdisk版本存在错误。fdisk

您也可以使用parted或 GParted 来完成此任务。它们都适用于 MBR 磁盘以及 GPT 磁盘,因此使用其中一个工具不是需要切换到 GPT。话虽如此,GPT 确实具有某些优势,即使在较小的磁盘上也是如此。这些优势很小,但您可能需要考虑使用 GPT 来获得这些优势。(这些优势包括拥有重要数据结构的 CRC 以发现问题,拥有重要数据结构的备份以帮助从某些类型的问题中恢复,拥有分区标签,消除尴尬的主/扩展/逻辑困境,当然还支持超过 2TiB 的磁盘。)

答案2

更新:

较新版本的 fdisk(例如 v2.20.1)不再存在问题中所述的簇号截断问题。因此,现在只需使用

fdisk -c /dev/sdX

创建一个从 2048 开始到 3906252047 结束的分区,以创建所需的布局。

原始答案:

我找到了一种方法来做到这一点:

fdisk -S 16 -H 1 -c /dev/sdX

然后,我可以创建一个从 129 开始到 244,140,​​753 结束的分区。

现在,如果我这样做fdisk -l -u /dev/sdX,我会得到:

Disk /dev/sdX: 2000.4 GB, 2000365289472 bytes
1 heads, 16 sectors/track, 244185216 cylinders, total 3906963456 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: 0xee3e796d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdX1            2048  3906252047  1953125000   fd  Linux raid autodetect

正好blockdev --getsize64 /dev/sdX1给了我 2,000,000,000,000。

现在最大的问题是:有人看到-S 16 -H 1 有问题吗?:)

相关内容