sgdisk:强制对齐末端扇区

sgdisk:强制对齐末端扇区

我正在尝试sgdisk创建以 1 MB 对齐的分区。

-a如果我选择大小,这对于起始扇区(使用 )和结束扇区来说很容易。

但如果我sgdisk选择结束部分,我最终会得到类似的结果:

Device                                                         Start       End   Sectors   Size Type
/dev/disk/by-id/scsi-36848f690d917dc002587bfae06302a5a-part2    2048   1046527   1044480   510M EFI System
/dev/disk/by-id/scsi-36848f690d917dc002587bfae06302a5a-part3 1048576   5242879   4194304     2G Solaris /usr & Apple Z
/dev/disk/by-id/scsi-36848f690d917dc002587bfae06302a5a-part4 5242880 467660800 462417921 220.5G Linux filesystem

462417921 的大小显然与 1 MB 块不对齐。

我本来期望的是这样的:

/dev/disk/by-id/scsi-36848f690d917dc002587bfae06302a5a-part4 5242880 466616319 461373440 220G Linux filesystem

它似乎-a只适用于起始部门。

如何使其也与磁盘分区的其余部分对齐结束扇区?

分区表由以下内容组成:

sgdisk --zap-all $DISK
sgdisk            -n2:1M:+510M    -t2:EF00 $DISK
sgdisk -a 1048576 -n3:0:+2G       -t3:BF01 $DISK
# Use the rest of the disk for the final partition
# and it is here the end sector is not aligned
sgdisk -a 1048576 -n4:0:-0        -t4:BF01 $DISK

答案1

这是一个非常不寻常的要求,并不真正符合预期的用例sgdisk 对齐选项

-a, --set-alignment=value

设置扇区对齐倍数。 GPT fdisk 将分区的开头与该值倍数的扇区对齐,在新格式化的磁盘上默认为 2048。为了获得 Western Digital 高级格式和物理扇区大小大于逻辑扇区大小的类似驱动器、某些类型的 RAID 阵列以及 SSD 设备的最佳性能,此对齐值是必要的。

分区的结束扇区不会像起始扇区那样对性能产生影响。这就是为什么-a切换不会影响末端扇区的原因。

也许你最好的选择是使用该-E选项来找出-nx:x:0会做什么,然后自己计算对齐:

man 8 sgdisk

-E, --end-of-largest 显示磁盘上最大可用扇区块末尾的扇区号。脚本可以存储该值并将其作为 -n 选项的一部分传回以创建分区。如果没有可用的未分配扇区,则该函数返回值 0。

因此,要在脚本(例如 bash 脚本)中使用它,您可以这样做:

end_position=$(sgdisk -E $DISK)
sgdisk -a 1048576 -n4:0:$(( $end_position - ($end_position + 1) % 2048 ))   -t4:BF01 $DISK

此处,脚本创建带有显式设置的结束扇区的分区,该扇区将尽可能靠近磁盘的末尾,但与1048576字节 (1MiB) 对齐。

答案2

您似乎正在尝试解决一个您不知道或不太理解的问题。对齐分区的要求仅适用于分区开始。

这是我完美对齐的分区表:

Disk /dev/sda: <skipped>
Disk model: <skipped>
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: <skipped>

Device         Start       End   Sectors   Size Type
/dev/sda1       2048    206847    204800   100M EFI System
/dev/sda2     206848    468991    262144   128M Linux filesystem
/dev/sda3     468992  67577855  67108864    32G Linux filesystem
...

请注意末端扇区是如何“未对齐”的。

相关内容