Gparted 和 Gdisk 的最佳分区大小

alc*_*emy 3 partition gparted gdisk

我正在尝试将 4TB(4,000,225,165,312 字节)驱动器切成 1TB 的偶数分区。

我希望这些分区可以进一步划分为至少 1^3 字节 (~1GB) (1000000000) 的分区。

好吧,经过几个小时的提炼,我发现了几个相互矛盾的结论:

  • 使用 Gparted 我无法创建 1000000000 字节 (953.67431640625 MB) 分区
  • 使用 KDEparted 我可以选择字节 1000000000 字节分区,它最终为 1000341504
    • 结果 954MB 是 1000341504 字节
    • 这不能缩放,因为 1000341504*1000*4 (~4TB) 是 4001366016000,大于驱动器
    • 当我赚到 1,000,000,000,000 时,最终结果是 1,000,000,716,800
    • 因此,随着总大小的增加,额外的开销会减少
    • KDEparted 使用不使用扇区的 sfdisk 后端
    • Gparted 使用 MB 对齐
  • 使用 Gdisk,我可以使用 1953125000 个扇区(每个扇区 512 字节)创建 1000000000000 (1000^4) B (~1TB) 分区

这是可以接受的,必须使用 Gdisk 创建带有扇区的分区,然后使用 Gparted 移动它们。然而,当我删除一个 1000^4 B 分区并使用 Gparted 创建一个新分区以填充可用空间时,它会提供额外的字节 1,000,000,716,800(143 个扇区)。

这可能与 Gdisk 警告“分区将在 2048 扇区边界上对齐”有关,但我认为我正在最大化 Gdisk 的空间。现在看来我必须先使用 Gdisk,然后再使用 Gparted,然后再次使用 Gdisk..?有没有更优化的方法来解决这个问题?

一个重要的部分是了解哪种对齐(字节、柱面、MiB)最好,这篇文章有所帮助:“因此,许多现代分区工具只是沿着 1M[i]B 边界对齐整个驱动器,这巧妙地消除了需要检测您是否拥有多种类型的驱动器,无论是 512 字节扇区、4KB 扇区还是具有任意块大小的 SSD。” https://superuser.com/questions/393914/what-is-partition-alignment-and-why-whould-i-need-it

显然,选择 1 MiB 是因为最近的驱动器使用 4096 字节大小的扇区、SSD 512 删除要求以及 OG 512 扇区大小。让我困惑的是 MiB(1,048,576 字节)比 4096 字节大多少。我还是不明白为什么,但 MiB 似乎是主导阵营。到目前为止正在工作。“2048 扇区边界”实际上意味着 2048*512= 1MiB,而不仅仅是从 2048 字节开始(“MiB 对齐”会更清楚)。此链接也很有帮助:https ://www.rodsbooks.com/gdisk/advice.html

我需要用二进制思考。我不能只乘以 10.. 它不会加起来 ~1TB。那么,当 MiB 比 4K 4096B 扇区大小大得多时,为什么要使用 MiB 对齐呢?这是面向未来的尝试吗?

fro*_*utz 6

不可能以字节分辨率进行分区。即使你可以,它也会给你带来无穷无尽的对齐问题。

\n

扇区大小为 512 或 4096,所有分区大小必须是该大小的倍数。按照惯例,您甚至应该坚持 MiB 对齐(1048576 字节的倍数),除非您有充分的理由不这样做。

\n

另一个复杂之处是分区表本身需要一些空间,因此任何分区都不能从扇区 0 开始。同样,您不能使用驱动器的最后扇区(由 GPT 备份标头使用)。

\n

因此,如果您希望所有分区具有相同的大小,并且不超过字节边界,您将无法帮助近似一些事情。

\n

以下是 4TB 磁盘上 1TB 分区的示例:

\n
(parted) unit b\n(parted) print\nModel: Loopback device (loopback)\nDisk /dev/loop0: 4000225165312B\nSector size (logical/physical): 512B/512B\nPartition Table: gpt\nDisk Flags:\n\nNumber  Start           End             Size           File system  Name  Flags\n 1      1048576B        999999668223B   999998619648B\n 2      1000000716800B  1999999336447B  999998619648B\n 3      2000000385024B  2999999004671B  999998619648B\n 4      3000000053248B  3999998672895B  999998619648B\n\n(parted) unit mib\n(parted) print\nModel: Loopback device (loopback)\nDisk /dev/loop0: 3814912MiB\nSector size (logical/physical): 512B/512B\nPartition Table: gpt\nDisk Flags:\n\nNumber  Start       End         Size       File system  Name  Flags\n 1      1.00MiB     953674MiB   953673MiB\n 2      953675MiB   1907348MiB  953673MiB\n 3      1907349MiB  2861022MiB  953673MiB\n 4      2861023MiB  3814696MiB  953673MiB\n
Run Code Online (Sandbox Code Playgroud)\n

这只是一个示例 \xe2\x80\x94 您可以选择其他边界。

\n

如果您需要创建更多分区(您提到了 1GB),您应该自己编写一个脚本来确定这些边界。请注意,GPT 默认情况下有 128 个分区限制。

\n