parted를 사용하여 정렬 된 파티션 생성


67

GPT 파티션 테이블을 원하기 때문에 비 SSD 하드 디스크를 parted분할 하고 있습니다.

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

올바르게 정렬 된 파티션을 어떻게 만듭니 까? 내가 무엇을 잘못하고 있지?


섹터 번호가 0에서 시작합니까?
Burton Samograd

1
나도 시도했지만 parted /dev/sda mkpart primary 64s 128s(1에서 시작하는 경우) 동일한 경고를 반환합니다.
Marc

: 값이 정렬되어 있는지 확인하는 명령있을 것 같습니다 gnu.org/software/parted/manual/html_node/align_002dcheck.html을 . 아마도 for 루프를 사용하여 다양한 값으로 시도하고 괜찮은 값을 뱉어 내겠습니까?
Burton Samograd

버튼, 그 명령에 대해 몰랐지만 파티션을 가질 때까지 사용할 수 없습니다.
Marc

죄송합니다. 설명을 충분히 읽지 못했습니다.
Burton Samograd

답변:


68

파티션을 정렬 parted하려면 --align옵션 을 사용할 수 있습니다 . 유효한 정렬 유형은 다음과 같습니다.

  • none- 디스크 유형에서 허용하는 최소 정렬을 사용하십시오.
  • 실린더 -파티션을 실린더에 맞 춥니 다.
  • 최소 -디스크 토폴로지 정보에서 제공하는 최소 정렬을 사용하십시오. 이 값과 opt 값은 디스크에서 제공 한 레이아웃 정보를 사용하여 논리적 파티션 테이블 주소를 디스크의 실제 물리적 블록에 맞 춥니 다. 최소값은 파티션을 물리적 블록에 올바르게 정렬하는 데 필요한 최소 정렬로 성능 저하를 방지합니다.
  • 최적 디스크 토폴로지 정보에 따라 최적의 정렬을 사용하십시오. 이는 최적의 성능을 보장하는 방식으로 여러 물리적 블록 크기에 맞게 조정됩니다.

다른 유용한 팁은 크기를 백분율로 설정하여 정렬 할 수 있다는 것입니다. 0 %에서 시작하여 100 %에서 끝납니다. 예를 들면 다음과 같습니다.

parted -a optimal /dev/sda mkpart primary 0% 4096MB


5
명령이 끝나지 않아야 0% 100%합니까? 어디 4096MB에서 왔습니까?
njahnke

4
여기서 값 4096MB는 %와 특정 크기 숫자를 혼합하는 기능을 보여주는 예일뿐입니다.
lik

3
참고로, '0%'쉘이 명령을 올바르게 실행하려면 따옴표로 묶어야했습니다.
Adam Eberlin


1
위의 것을 신경 print
쓰지 않고

9

내 솔루션은 전문가 메뉴에서 변경할 수 있지만 기본적으로 2048 섹터 (1024KiB)에서 파티션 정렬을 자동으로 수행 할 수있는 gdisk 를 사용 하는 것입니다.


7

로부터 아치 위키 :

파티션을 만들 때 parted는 부적절한 파티션 정렬에 대해 경고하지만 적절한 정렬에 대해서는 암시하지 않습니다. 예를 들면 다음과 같습니다.

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

경고는 파티션 start이 정렬되지 않았 음을 의미합니다 .

Ignore어쨌든 Enter 키 를 눌러 파티션 테이블을 섹터로 인쇄하여 시작 위치를 확인한 다음 경고가 중지 될 때까지 시작 섹터를 2의 거듭 제곱으로 올림하여 파티션을 제거 / 재 작성하십시오. 예를 들어, 512B 섹터가있는 플래시 드라이브에서 Parted는 2048의 배수 인 1MB 정렬 인 섹터에서 파티션을 시작하기를 원했습니다.

또한이 섹션 바로 위에는 KiB, MiB, GiB 등의보다 정확한 IEC 이진 단위가 덜 정밀한 KB, MB, GB 등의 장치에 적합하다고 명시되어 있습니다.

개인적으로 이것을 해결 한 정확한 명령은 다음과 같습니다.

mkpart hd ext4 1024KiB 8470MB

불평하지 않았지만 1MB 정렬이 필요하다고 생각합니다.


아니, 나는 1048576KiB를 시도했다, 주사위는 없다.
Behrooz

5

사소한 수정. 알다시피, GPT 디스크에는 더 이상 파티션 유형이 없으며 모두 "1 차"입니다. 'mkpart primary'명령은 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

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


고마워요, 나는이 도구 나쁜 cli 덕분에 꽤 많은 시간을 낭비했으며, 당신은 나에게 무슨 일이 일어나고 있는지 알아 냈습니다.
Florian Heigl

5

@lik에 의해 허용 대답은 당신이 선호하는 정렬을 지정하는 방법을 보여줍니다. 그러나 parted는 결과 파티션을 확인하기 위해 항상 해당 정렬을 사용하지만 항상 해당 정렬로 파티션을 생성하는 것은 아닙니다.

TL; DR : 1MiB가 최적의 정렬 인 경우 0 %를 지정하면 200MiB 이상의 디스크에서 작동합니다. 더 작은 디스크 또는 더 큰 정렬의 경우 0G를 지정하면 0 %가 작동하지 않는 곳에서 작동 할 수 있습니다. 이유에 대해서는 아래를 참조하십시오.

Parted는 파티션을 만들 때 정렬 제약 조건을 충족 시키려고하지만 요청한 값을 너무 많이 벗어나지 않습니다. "너무 많은"것으로 계산되는 것은 위치를 지정한 방법에 따라 다릅니다.

mkpart 명령에 시작 (또는 종료) 위치를 지정하면 내부적으로 허용 가능한 값 범위가 생성됩니다. 이 범위는 사용자가 지정한 값을 중심으로, 당신이 사용하는 반 단위 크기로 양쪽에 동일하게 연장 (즉, 내가 무슨 코드 읽기의견을 말할 양쪽에 하나 개의 전체 단위 크기를).

예를 들어 "10M"을 지정하면 9.5M과 10.5M 사이의 위치를 ​​사용하려고합니다. 백분율도 마찬가지입니다. 따라서 0 %를 지정하면 0 %에서 0.5 % 사이의 값을 사용합니다 (음수가되지는 않습니다).

단 하나의 예외는 두 단위의 제곱을 사용할 때 (예 : KiB와 1024, K와 반대) part는 정확한 위치를 지정하려고한다고 가정하고 지정한 정확한 값만 고려한다는 것입니다.

최적의 정렬은 일반적으로 1MiB 정렬 인 것처럼 보이기 때문에 K 및 M 장치는 종종 최적의 정렬에 도달하기에 충분한 공간이 없습니다. G로 위치를 지정하면 공간이 충분해야하지만 일반적으로 %도 좋습니다.

따라서 한계가 있지만 0 %가 일반적으로 작동하는 이유입니다.


답변의 실제 TLDR을 요약 할 수 있습니까? 허용 된 답변과 비교하여 다른 방식으로 정확히 더 잘 수행해야하는 것은 무엇입니까?
yurkennis

좋은 제안, 나는 TL; DR을 추가했습니다. 실제로, 0 %는 실제로 작은 디스크를 제외한 모든 디스크에서 작동한다고 생각하지만 내 대답은 그것이 정확히 어떻게 작동하는지에 대한 약간의 배경을 추가합니다.
Matthijs Kooijman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.