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 filesystem
462417921のサイズは、明らかに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
ベストアンサー1
これは非常に珍しい要件であり、実際に意図したユースケースには合いません。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オプションの一部として返すことでパーティションを作成できます。割り当てられていないセクタが利用できない場合、関数はゼロ値を返します。
したがって、これをスクリプト(bashスクリプトなど)で使用するには、次の手順を実行します。
end_position=$(sgdisk -E $DISK)
sgdisk -a 1048576 -n4:0:$(( $end_position - ($end_position + 1) % 2048 )) -t4:BF01 $DISK
ここで、スクリプトは明示的に設定されたエンドセクタを持つパーティションを作成します。このパーティションは可能なディスクの終わりに近いですが、1048576
バイト(1MiB)でソートされます。