有没有办法使用标准 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
使用parted
而不是fdisk
。它将自动处理对齐,并且不会出现您在 中发现的这个错误fdisk
。此外,没有簇这样的东西。它要么是扇区,要么是柱面,它们是 90 年代初遗留下来的折旧垃圾。
答案2
GPT 存在是有原因的,而你似乎已经发现了它。把方枘圆凿毫无意义。
答案3
更新:
较新版本的 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 有问题吗?:)