
내 하드 드라이브가 해당 섹터에 물리적 4096바이트 블록 크기를 사용하는 경우 4096바이트 논리적 블록 크기를 사용하는 방법에 대해 읽었습니다. 그래서 방금 예비 하드 드라이브에 하나를 만들려고 했는데 마지막 프롬프트에서 나타나는 경고를 이해하지 못합니다. 아래를 참조하세요.
~$ cat /sys/class/block/sda/queue/physical_block_size
4096
~$ cat /sys/class/block/sda/queue/logical_block_size
512
server@Server:~$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA WDC WD30EFRX-68A (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) mkpart primary 4096B 3001GB
Warning: You requested a partition from 4096B to 3001GB.
The closest location we can manage is 17.4kB to 3001GB.
Is this still acceptable to you?
Yes/No? n
왜 4096 블록 크기를 사용할 수 없나요?
답변1
물리적 및 논리적 블록(섹터) 크기는 모두 디스크 하드웨어에 따라 결정되며 변경할 수 없습니다. 오늘날 대부분의 하드 디스크는 512바이트 논리 섹터를 사용하지만 현재 4096바이트 논리 섹터를 사용하는 일부 고급 디스크에 대해 들어본 적이 있습니다. 일부 외부 인클로저는 논리 섹터 크기를 4096바이트로 다시 매핑합니다.
512바이트 논리 섹터와 4096바이트 물리 섹터를 결합하면 파티션이 8섹터의 배수로 정렬되지 않은 경우 성능 문제가 발생할 수 있습니다. 오늘날 대부분의 파티셔닝 도구는 이를 자동으로 처리합니다. 실제로 일반적으로 2048 섹터(1MiB)의 배수로 정렬됩니다. 물론 이는 8 섹터의 배수이므로 잘 작동합니다. (2048 섹터 정렬을 사용하면 8보다 큰 2의 거듭제곱 값에 대한 정렬이 필요한 많은 RAID 및 SSD 제품에서도 작동하므로 2048이 기본값입니다.) 이전 도구는 "실린더" 경계에 정렬됩니다. 먼 과거(1980년대)에는 실린더 정렬이 성능상의 이점을 가져왔습니다. 그러나 "실린더"는 편리한 허구가 되었고, 다음에는 불편한 허구가 되었으며, 그 다음에는 심각한 문제가 되었습니다. Linux 도구는 이러한 변경 사항에 다소 느리게 조정되었지만 오늘날 모든 주요 프로그램은 실린더를 무시하고 기본적으로 2048 섹터 정렬을 사용합니다.
원하는 대로 정렬 값을 조정할 수 있습니다 . 전문가 메뉴로 이동하려면 gdisk
입력한 다음 정렬 값을 변경하려면 입력해야 합니다. 이 옵션은x
d
전문가'이유가 있는 메뉴: 수행 중인 작업을 완전히 이해하지 못하는 경우 이 기능을 사용하여 문제를 해결하기보다는 문제를 일으킬 가능성이 더 높습니다. 전문가라도 2048 섹터에서 8 섹터 정렬로 변경하여 공간을 절약하는 것은 미미하므로(1MiB 미만) 나조차도 이 작업을 거의 수행하지 않습니다. (저는 gdisk
님의 작성자입니다.)
답변2
Warning: You requested a partition from 4096B to 3001GB.
The closest location we can manage is 17.4kB to 3001GB.
Is this still acceptable to you?
이것이 말하는 것은 드라이브 시작 부분의 다른 사항(파티션 구성표 등에 관한 메타데이터)으로 인해 디스크 시작 부분에 가장 가까운 크기가 17.4kB 인치라는 것입니다.~하지 않다이것을 원한다; 4KiB 경계에서 시작하기를 원합니다. 따라서 취소하고 다시 시도해야 합니다. 이번에는 해당 지점 이후의 첫 번째 4096B 경계에서 파티션을 시작하도록 요청합니다(20480B 시도).
이 작업을 수동으로 수행해야 하는 이유는 낮은 수준의 파티셔닝 도구를 사용하고 있기 때문입니다. 다음과 같은 더 높은 수준의 도구갈라진자동으로 파티션의 시작 부분을 라운드 숫자에 맞춰 정렬합니다. 요즘 이러한 도구는 파티션을 1MiB(1024x1024바이트)의 배수로 정렬합니다. 이는 512바이트, 4096바이트 경계를 모두 깔끔하게 해결하고 USB 플래시 드라이브와 같은 블록과 정렬하기 때문입니다.
답변3
parted
백분율을 단위로 사용하여 계산을 그대로 두십시오 .
mkpart primary 0% 100%
정렬된 파티션이 생성되어야 합니다.
(parted) print
Model: ATA SAMSUNG MZ7LM3T8 (scsi)
Disk /dev/sdb: 3841GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 3841GB 3841GB primary
답변4
GPT에서는 저장하려면 디스크의 처음 34개 섹터가 필요합니다.
- 첫 번째 섹터(LBA 0)의 보호 MBR,
- 두 번째 섹터(LBA 1)의 기본 GPT 헤더,
- 다음 32개 섹터(LBA 2 - LBA 33)에 최대 128개의 파티션 테이블 항목
이 섹터는 예약되어 있으며 다른 데이터는 이 섹터에 저장될 수 없으며 파티션은 어느 곳에서도 시작할 수 없습니다.
512B = 17408B = 17.4kB 크기의 34개 섹터
그렇기 때문에 경고가 표시됩니다 The closest location we can manage is 17.4kB to 3001GB
.
여기에서 진행하면 안 됩니다. 파티션 정렬이 잘못될 수 있습니다. 이는 이미 받은 다른 답변에서 다루었습니다.
또한 디스크의 마지막 33개 섹터는 기본 GPT 헤더 및 파티션 테이블 항목의 복사본을 보관하기 위해 예약되어 있습니다.