USB 드라이브의 파티션이 자동으로 섹터를 올바르게 정렬하지 않습니다.

USB 드라이브의 파티션이 자동으로 섹터를 올바르게 정렬하지 않습니다.

USB 3 드라이브를 분할하려고 하는데 어떤 이유로 parted가 시작 섹터를 올바르게 설정하지 않습니다. 이 드라이브는 다른 여러 SATA 드라이브와 동일하며 유일한 차이점은 통합 2포트 허브가 있는 USB 3 인클로저 내부에 있다는 것입니다. 중요한 일인데도 안 할 거예요.

이전에 자주 사용했던 단계는 다음과 같습니다.

sudo parted /dev/sd?
mklabel gpt
mkpart primary 0% 100%
quit

다음은 마지막 2개 드라이브에 대한 fdisk -l 출력입니다.

Disk /dev/sdk: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: DB93D173-858A-475C-81CD-DB616E91C110

Device     Start         End     Sectors  Size Type
/dev/sdk1   2048 15628053134 15628051087  7.3T Linux filesystem


Disk /dev/sdl: 7.3 TiB, 8001563221504 bytes, 15628053167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: B3791850-76F8-4CE2-B1CC-DF40886292CE

Device     Start         End     Sectors  Size Type
/dev/sdl1  65535 15628000379 15627934845  7.3T Linux filesystem

Partition 1 does not start on physical sector boundary.

두 번째 드라이브에 문제가 있습니다.

일반적으로 몇 초밖에 걸리지 않지만 ext4로 포맷하는 데 오랜 시간이 걸리기 때문에(완료될 때까지 기다리지 않음) 성능이 크게 저하되는 것 같습니다. 왜 이런 일이 발생합니까? 어떻게 올바른 정렬을 얻을 수 있나요?

내가 생각할 수 있는 유일한 다른 차이점은 원래 파티션되지 않은 공간이 있는 ntfs로 포맷되었다는 것입니다. 또한 남은 파티션을 지우기 위해 이 명령을 실행했지만 dd if=/dev/zero of=/dev/sdl bs=512 count=10000운이 좋지 않았습니다.

최적 정렬을 사용해도 작동하지 않습니다.

sudo parted -a optimal /dev/sdl mkpart primary 0% 100%


Warning: You requested a partition from 0.00B to 8002GB (sectors 0..15628053166).
The closest location we can manage is 17.4kB to 1048kB (sectors 34..2047).
Is this still acceptable to you?

답변1

두 번째 드라이브의 최적 I/O 크기는 첫 번째 드라이브의 크기보다 훨씬 크므로 문제가 발생할 수 있습니다.이 글은 2013년 글입니다(최적 I/O + 정렬 오프셋) / 물리적 블록 크기 = 시작 슬라이스부터 시작하여 수동으로 파티션을 정렬하는 것이 좋습니다. 요즘 분리 작동 방식에 대한 단어를 읽는 것은 기본적으로 분리 작동 방식에 적용된 것으로 보입니다. 이제 매개변수에 대한 수학을 수행하면 8191.875가 시작 슬라이스로 반환되는데, 이는 유효한 섹터 주소가 아닐 수 있습니다.

제가 보기에는 USB 인클로저가 드라이브의 최적 I/O를 왜곡하고 있는 것 같습니다. 파티션을 만들 때 mkpart primary 2048s 100%.

기회가 있다면 USB 인클로저가 없는 컴퓨터에 드라이브를 연결하고 /sys/block/[drive]/queue/optimal_io_size드라이브가 있는지 확인하여 미리 확인할 수 있습니다. 일치하지 않으면 USB 셸이 드라이브 기능을 잘못 보고하는 것일 수 있습니다.

답변2

fdisk이것은 util-linux의 문제입니다. 오래 전에 업스트림에 보고했는데 수정되었습니다.

https://github.com/karelzak/util-linux/commit/acb7651f8897ae73d0f45dd75bc87630001c61b9

따라서 util-linux v2.27-rc1 이상에서 fdisk를 사용하는 경우파티션 생성, 이 문제가 발생하지 않습니다.

동일한 문제 가 있는지 잘 모르겠습니다 parted. 그렇다면 비슷한 해킹이 도입되어야 할 것입니다. (따라서 문제를 해결하려면 업스트림에 버그 보고서를 제출하세요.http://savannah.gnu.org/projects/parted/)

편집: 두 디스크 모두에서 GPT를 사용하고 있습니다. IIRC에서는 정렬을 계산하기 위해 최적의 I/O 크기를 사용하지 않고 대신 정적으로 기본값이 2048이고 이를 1 - 65536( -> ) 사이의 값 범위 gdisk로 설정할 수 있기 때문에 이 문제가 없습니다 .xl

관련 정보