Sgdisk

sgdisk:強制對齊末端扇區

  • June 9, 2020

我正在嘗試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

這是一個非常不尋常的要求,並不真正符合sgdisk 對齊選項的預期案例:

-a, --set-alignment=value

設置扇區對齊倍數。GPT fdisk 將分區的開始與該值的倍數對齊,在新格式化的磁碟上預設為 2048。此對齊值對於使用 Western Digital Advanced Format 和物理扇區大於邏輯扇區大小的類似驅動器、某些類型的 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) 對齊。

引用自:https://unix.stackexchange.com/questions/588930