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_offsetalignment_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.