parted를 사용하여 정렬된 파티션 만들기

parted를 사용하여 정렬된 파티션 만들기

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

"확장"이라는 파티션 내에 "논리"라는 파티션을 만들 수 없습니다.

관련 정보