sgdisk: 최종 섹터 강제 정렬

sgdisk: 최종 섹터 강제 정렬

sgdisk1MB로 정렬된 파티션을 만들 려고 합니다 .

-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 옵션의 일부로 다시 전달하여 파티션을 생성할 수 있습니다. 할당되지 않은 섹터를 사용할 수 없는 경우 함수는 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
...

끝 섹터가 어떻게 "잘못 정렬"되었는지 확인하세요.

관련 정보