分区对齐:parted 显示警告

分区对齐:parted 显示警告

我一直在阅读有关使用 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 头和分区表条目的副本。

https://en.wikipedia.org/wiki/GUID_Partition_Table

相关内容