我一直在阅读有关使用 4096 字节逻辑块大小的信息,如果我的硬盘驱动器的扇区使用 4096 字节物理块大小。所以我只是尝试在备用硬盘驱动器上创建一个,但我不明白最后提示中的警告。见下文。
~$ cat /sys/class/block/sda/queue/physical_block_size
4096
~$ cat /sys/class/block/sda/queue/logical_block_size
512
server@Server:~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA WDC WD30EFRX-68A (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) mkpart primary 4096B 3001GB
Warning: You requested a partition from 4096B to 3001GB.
The closest location we can manage is 17.4kB to 3001GB.
Is this still acceptable to you?
Yes/No? n
为什么我不能只使用 4096 块大小?
答案1
物理和逻辑块(扇区)大小均由磁盘硬件决定,无法更改。目前绝大多数硬盘使用 512 字节逻辑扇区,不过我听说有些高端磁盘现在使用 4096 字节逻辑扇区。一些外部机箱也将逻辑扇区大小重新映射为 4096 字节。
如果分区未对齐 8 个扇区的倍数,则 512 字节逻辑扇区与 4096 字节物理扇区的组合可能会导致性能问题。当今大多数分区工具都会自动处理此问题 - 事实上,它们通常对齐 2048 个扇区 (1 MiB) 的倍数,这当然是 8 个扇区的倍数,因此效果很好。(使用 2048 扇区对齐也适用于许多 RAID 和 SSD 产品,这些产品需要对齐大于 8 的 2 的幂值,这就是 2048 是默认值的原因。)较旧的工具在“柱面”边界上对齐。在遥远的过去(20 世纪 80 年代左右),柱面对齐产生了性能优势;但后来“柱面”变成了一种方便的虚构,然后是一种不方便的虚构,然后是一个严重的问题。Linux 工具对这些变化的适应相当缓慢,但今天所有主要程序都忽略了柱面并默认使用 2048 扇区对齐。
您可以将对齐值调整为任何您喜欢的值gdisk
- 您必须键入x
以进入专家菜单,然后键入d
以更改对齐值。请注意,此选项位于专家的菜单的原因是:如果您不完全了解自己在做什么,则使用此功能更有可能引起问题而不是解决问题。即使您是专家,从 2048 扇区对齐更改为 8 扇区对齐所节省的空间也是微不足道的(低于 1MiB),所以即使我几乎从不这样做。(我是gdisk
的作者。)
答案2
Warning: You requested a partition from 4096B to 3001GB.
The closest location we can manage is 17.4kB to 3001GB.
Is this still acceptable to you?
这说明由于驱动器开头的其他东西(关于分区方案的元数据或类似信息),它最接近磁盘开头的位置是 17.4kB。你不想要这个;您希望它从 4KiB 边界开始。因此您应该取消并重试,这次请求从该点之后的第一个 4096B 边界开始分区(尝试 20480B)。
您必须手动完成此操作的原因是您使用的是低级分区工具。高级工具如分区会自动将分区的起始位置对齐为一个整数。如今,许多此类工具会将分区对齐为 1MiB(1024x1024 字节)的倍数,因为这巧妙地解决了 512 字节、4096 字节边界问题,以及与 USB 闪存驱动器等设备上的块对齐问题。
答案3
parted
只需使用百分比作为单位进行计算即可:
mkpart primary 0% 100%
这将导致对齐分区:
(parted) print
Model: ATA SAMSUNG MZ7LM3T8 (scsi)
Disk /dev/sdb: 3841GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 3841GB 3841GB primary
答案4
GPT 需要磁盘的前 34 个扇区来存储
- 第一个扇区(LBA 0)中的保护性 MBR,
- 第二个扇区(LBA 1)中的主 GPT 标头,
- 以及以下 32 个扇区 (LBA 2 - LBA 33) 中最多 128 个分区表条目
这些扇区是保留的,这些扇区中不能存储任何其他数据,分区不能从其中任何一个扇区启动。
34 个扇区,大小为 512B = 17408B = 17.4kB
这就是您收到警告的原因The closest location we can manage is 17.4kB to 3001GB
。
您不应该继续这里,这会导致分区对齐不良,这在您收到的其他答案中已经涵盖。
请注意,磁盘的最后 33 个扇区也被保留以保存主 GPT 头和分区表条目的副本。