Parted를 사용하여 Advanced Format HDD에서 파티션을 올바르게 정렬


15

먼저 파티션 시작 및 종료 비율을 지정하여 parted를 사용하여 새 GPT 테이블에 올바르게 정렬 된 파티션을 만듭니다.

# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) mkpart primary 0% 1%
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  2097kB  1049kB               primary

(parted) quit

이 디스크는 고급 형식을 사용하지만 실제 섹터 크기 4096B를 Parted로 올바르게보고합니다 . 섹터를 단위로 사용하여 다시 살펴 보겠습니다.

# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 5860533168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End    Size   File system  Name     Flags
 1      2048s  4095s  2048s               primary

(parted) quit
  • 왜에서 파티션을 시작 했 2048s하지 34s가능한 첫 번째 부문은 이는 ?
  • 34s실제 섹터 크기가 4096B논리 섹터 (파티션에서 지정한 것) 인 섹터 크기가512B . 적절히 정렬 된 시작 섹터는 8(물리 섹터 크기 / 논리 섹터 크기 =이므로 8) 나눌 수 있습니다. 그러나 이것은 40s첫 번째로 올바르게 정렬 된 시작 섹터이지만 아직 사용되지 않은 것입니다. 왜?

제대로 정렬 된 파티션을 만들려고하면 100MiB40s새로운 GPT 파티션 테이블에서 시작 용량 :

# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) mkpart primary 40s 204839s
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
(parted) unit MiB
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 2861588MiB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End     Size    File system  Name     Flags
 1      0.02MiB  100MiB  100MiB  fat32        primary

(parted)
(parted) unit s
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 5860533168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End      Size     File system  Name     Flags
 1      40s    204839s  204800s  fat32        primary

(parted)
  • 그래도 Warning: The resulting partition is not properly aligned for best performance.경고 메시지가 표시 40s되며 204840 ( 204839s+ 1)은 모두8 있습니다. 왜?

답변:


23

Parted는 지나치게 보수적입니다. 요즘 일반적인 방법은 1MiB (2048 섹터) 경계에서 파티션을 정렬하는 것입니다. 이는 Advanced Format 디스크, 정렬이 필요한 특정 유형의 RAID 설정 및 대부분의 SSD에서 작동하기 때문입니다. 어드밴스드 포맷 디스크의 경우 정렬이 8의 배수에있는 한 괜찮습니다. 2048의 배수는 8의 배수입니다. 손실 된 디스크 공간은 뿌듯합니다-내가 한 경우 전체 디스크 공간의 0.0000336 % 수학은 맞았으며 아무것도 잘못 입력하지 않았습니다. 따라서 걱정하지 마십시오. 1MiB 정렬 만 사용하십시오.


예, 손실 된 디스크 공간은 중요하지 않습니다. 나는 단지 내가 올바르게 이해했다는 것을 알고 싶었습니다. 현재 Parted의 소스 코드를 확인하고 있지만 시간보다 약간 오래 걸립니다. 계속해서 1MiB 정렬을 사용하겠습니다. 다시 도와 주셔서 감사합니다!
— 삭제됨

1
이것은 parted의 보수성 일뿐만 아니라 Linux 블록 레이어의 한계라는 것을 언급 할 가치가 있습니다. ATA 드라이브는 optimal_io_size힌트를 제공하지 않습니다 . 따라서, "기존의"ATA를 제공하지 않는 장치를 구별 할 수있는 방법이 없습니다 alignment_offset및 alignment_offset디폴트가 0이 그 것들 alignment_offset=0. fdisk / parted는 해당 드라이브에 1MB 파티션 정렬 을 사용합니다.
— roolebo

1
분할 된 커밋 에서 참조한 것처럼 숫자 자체의 1MB 파티션 정렬은 Windows Vista 동작 에서 비롯된 것 같습니다 .
— roolebo

1

나는 아마도 리눅스에서 동시에 최적 의 최소 정렬 검사를 parted통과하지 못할 상황에 올 수 있다고 덧붙일 것이다 .

그 이유는 인 parted에 의존하는 (적어도 버전 3.2로) libblkid차례로에서 값을보고 /sys/block/<disk>/queue/minimum_io_size하고 /sys/block/<disk>/queue/optimal_io_size(참조 IO-limits.txt을 ).

따라서 고급 포맷 디스크의 경우 전자는 4k와 같은 것일 수 있지만 후자는 약간의 가치를 가질 수 있습니다 65535 * 512 == 33553920.

이제 소스 코드를 보면 "적절한"또는 "최상의 성능"정렬은 parted.c :: partition_align_check () 의 공식에 의해 정의됩니다 .

part->geom.start % pa->grain_size == pa->offset, 

grain_size위의 I / O 블록 크기 에서 비롯된 부분 은 geom.start파티션 오프셋이며 정렬 오프셋 pa->offset은 종종 0입니다.

기본적으로 parted는 1MiB를 최적으로 가정하고 ~ 4k를 최소 (약간 간단하지는 않음) 블록 크기로 가정하므로 이러한 값은 서로 관련이 있습니다. 그러나 libblkid달리 결정 parted하면 신뢰하는 경향이 있으며 기본값 1MiB를에있는 값으로 바꿉니다 /sys/block/<disk>/queue/optimal_io_size. (동시에 /sys/block/<disk>/queue/minimum_io_size4096B도 똑같이 줄 것입니다.)

이 경우, 분할 된 최적 점검은 최소한의 점검 과 동시에 통과 되지 않으므로 약간 혼란 스러울 수 있습니다.

이를 염두에두고 의심이가는 경우 살펴보십시오. queue/optimal_io_size and을queue/minimum_io_size 전자가 후자로 나눌 수없는 경우 parted의 경고를 무시하고 최적 의 검사 또는 최소한의 검사 로 가고 싶은지 스스로 결정 하십시오. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.