![parted를 사용하여 정렬된 파티션 만들기](https://linux55.com/image/22920/parted%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%A0%95%EB%A0%AC%EB%90%9C%20%ED%8C%8C%ED%8B%B0%EC%85%98%20%EB%A7%8C%EB%93%A4%EA%B8%B0.png)
SSD가 아닌 하드 드라이브를 파티셔닝하고 있습니다.헤어졌다GPT 파티션 테이블을 원하기 때문입니다.
parted /dev/sda mklabel gpt
이제 적절하게 정렬된 파티션을 생성하려고 하므로 다음 명령을 사용하여 첫 번째 섹터가 시작되는 위치를 확인합니다.
parted /dev/sda unit s p free
Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
34s 488397134s 488397101s Free Space
섹터 34(이 파티션 테이블을 사용할 때 기본 섹터)에서 시작하는 것을 볼 수 있습니다.
그래서 첫 번째 파티션을 만들기 위해 다음을 시도했습니다.
parted /dev/sda mkpart primary 63s 127s
8의 배수이므로 섹터 64에 정렬하지만 다음과 같이 표시됩니다.
경고: 결과 파티션은 최적의 성능을 위해 제대로 정렬되지 않았습니다.
내 하드 드라이브의 논리 및 물리 섹터 크기는 모두 512바이트입니다.
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sda/queue/logical_block_size
512
올바르게 정렬된 파티션을 만드는 방법은 무엇입니까? 내가 뭘 잘못했나요?
답변1
파티션을 정렬하려면 옵션을 parted
사용할 수 있습니다 --align
. 유효한 정렬 유형은 다음과 같습니다.
- 전혀 - 디스크 종류에 따라 허용되는 가장 작은 정렬을 사용합니다.
- 실린더- 파티션을 실린더와 정렬합니다.
- 가장 작은- 디스크 토폴로지 정보에서 제공하는 최소 정렬을 사용합니다. 이 값과 opt 값은 디스크에서 제공하는 레이아웃 정보를 사용하여 논리적 파티션 테이블 주소를 디스크의 실제 물리적 블록과 정렬합니다. 최소값은 성능 저하를 방지하기 위해 파티션을 물리적 블록에 올바르게 정렬하는 데 필요한 최소 정렬입니다.
- 최고디스크 토폴로지 정보에서 제공하는 최상의 정렬을 사용합니다. 이는 최적의 성능을 보장하는 방식으로 물리적 블록 크기의 배수로 정렬됩니다.
또 다른 유용한 팁은 백분율을 사용하여 크기가 정렬되도록 설정할 수 있다는 것입니다. 0%에서 시작해서 100%로 끝납니다. 예를 들어:
parted -a optimal /dev/sda mkpart primary 0% 4096MB
답변2
이것@lik의 답변이 승인되었습니다.기본 정렬을 지정하는 방법을 보여줍니다. 그러나 parted는 결과 파티션을 확인하기 위해 항상 이 정렬을 사용하지만, 파티션을 생성하는 데 항상 이 정렬을 사용하지는 않습니다.
핵심요약: 1MiB가 최적의 정렬일 때 0%를 지정하면 200MiB 이상의 디스크에 작동합니다. 더 작은 디스크나 더 큰 정렬의 경우 0G를 지정하면 작동할 수 있지만 0%는 작동하지 않습니다. 이유를 알아보려면 아래를 참조하세요.
Parted는 파티션을 생성할 때 정렬 제약 조건을 충족하려고 노력하지만 요청한 값에서 크게 벗어나지도 않습니다. "너무 많은" 것으로 간주되는 것은 위치를 지정하는 방법에 따라 다릅니다.
mkpart 명령의 시작(또는 끝) 위치를 지정하면 내부적으로 허용 가능한 값 범위가 생성됩니다. 범위는 지정한 값의 중심에 있으며 사용 중인 단위 크기의 절반만큼 양쪽에서 균등하게 확장됩니다(이것이 바로 내 뜻입니다).코드에서 읽기, 이것댓글은 말한다각 끝에 하나의 전체 단위 크기).
예를 들어 "10M"을 지정하면 9.5M에서 10.5M 사이의 값을 사용하려고 시도합니다. 백분율에도 동일하게 적용되므로 0%를 지정하면 0%에서 0.5% 사이의 값이 사용됩니다(분명히 음수가 되지는 않습니다).
한 가지 예외는 두 단위의 거듭제곱(예: 1000을 K로 표현하는 대신 KiB를 1024로 사용)을 사용할 때 parted에서는 사용자가 정확한 위치를 지정하려고 한다고 가정하고 사용자가 지정한 정확한 값만 고려한다는 점입니다.
일반적으로 최적의 정렬은 1MiB 정렬로 나타나므로 K 및 M 셀에는 일반적으로 최적의 정렬을 달성할 충분한 공간이 없습니다. G에 위치를 지정하려면 충분한 공간이 있어야 하지만 일반적으로 %도 작동합니다.
이것이 바로 0%가 일반적으로 작동하는 이유입니다. 비록 이것에도 한계가 있지만 말입니다.
답변3
내 솔루션은gdisk기본적으로 2048개 섹터(1024KiB)에서 파티션 정렬을 자동으로 수행하지만 전문가 메뉴에서 변경할 수 있습니다.
답변4
작은 수정. 내가 이해한 바로는 GPT 디스크에는 더 이상 파티션 유형이 없으며 모두 "기본" 디스크입니다. "mkpartprimary" 명령은 msdos 디스크에서처럼 기본 파티션을 생성하지 않고 단지 Primary라는 파티션만 생성합니다. 다음 명령을 사용할 수도 있습니다.
(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1.05MB 17181MB 17180MB ext4 raid-var
2 17181MB 21476MB 4295MB raid-swap
3 21476MB 4000786MB 3979310MB Parted-FUN!
논리 파티션을 생성하려고 하면 혼란을 야기할 수 있습니다. 제 경우에는 그랬다는 것을 알고 있습니다.
(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1.05MB 17181MB 17180MB ext4 raid-var
2 17181MB 21476MB 4295MB raid-swap
3 21476MB 4000786MB 3979310MB extended
4 4000786MB 4000786MB 0.00MB logical
"확장"이라는 파티션 내에 "논리"라는 파티션을 만들 수 없습니다.