我试图让sgdisk创建1MB上对齐的分区。
这对于起始扇区(使用-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 filesystem462417921的大小显然与1MB块不对齐。
我本以为是这样的:
/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发布于 2020-06-09 18:36:14
这是一个非常不寻常的需求,并不完全符合sgdisk对齐选项的预期用例:
-a, --set-alignment=value设置扇区对齐倍数。GPT fdisk将分区的开始对齐到这个值的倍数的扇区,这在刚格式化的磁盘上默认为2048。这一校准值是必要的,以获得最佳性能的西部数字先进格式和类似的驱动器较大的物理大于逻辑扇区的大小,与某些类型的RAID阵列,和SSD设备。
分区的最终扇区将不会像start扇区那样产生性能影响。这就是为什么-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)对齐。
发布于 2020-06-09 14:20:33
你似乎在试图解决一个你没有或不真正理解的问题。对齐分区的要求只适用于分区启动。
下面是我的完全对齐分区表:
Disk /dev/sda:
Disk model:
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:
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
...注意终端扇区是如何“不对齐”的。
https://unix.stackexchange.com/questions/588930
复制相似问题