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 옵션의 일부로 다시 전달하여 파티션을 생성할 수 있습니다. 할당되지 않은 섹터를 사용할 수 없는 경우 함수는 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
...
끝 섹터가 어떻게 "잘못 정렬"되었는지 확인하세요.