물리적 섹터 크기가 4096이고 논리적 크기가 512바이트인 일부 HDD 디스크가 있습니다. SATA 디스크입니다. 이제 Linux에서 512바이트가 아닌 4kiB를 논리 섹터 크기로 사용하고 싶습니다. 이 목표를 어떻게 달성할 수 있나요? 이 디스크를 4kiB 모드에서만 실행되도록 전환할 수 있습니까?
내가 생성한 모든 파티션이 4kiB로 정렬되었는지 어떻게 확인합니까? 4kiB 정렬을 위해 특정 파티션의 시작 및 끝 섹터 번호를 수동으로 계산해야 합니까?
저는 Linux를 사용하고 때로는 Windows를 사용합니다. 저는 주로 Windows fdisk가 아닌 Linux fdisk를 사용하여 파티션을 만듭니다. "fdisk -b 4096"을 사용하는 것만으로도 충분할까요? 글쎄요... 아마도 그렇지 않을 것입니다. Linux는 주어진 디스크에 사용할 섹터 크기를 어떻게 알 수 있습니까?
답변1
레거시 MS-DOS 호환 모드를 강제하는 옵션을 사용하거나 전문가 모드를 사용하여 파티션의 시작과 끝에 정확한 LBA 블록 번호를 지정하지 않는 한, 대부분의 최신 파티션 도구(Linux 등)는 기본적으로 파티션을 여러 개의 파티션으로 나눕니다. 1MB 정렬. 이는 최신 Windows가 수행하는 기능이기도 하며, 4kB 섹터 크기와 최적의 성능을 위해 더 큰 2제곱으로 정렬해야 하는 다양한 SSD 및 SAN 저장 장치와의 호환성을 보장합니다.
이를 사용하여 lsblk -t
각 파티션의 정렬 오프셋을 확인할 수 있습니다. 열의 값이 ALIGNMENT
0이면 파티션은 커널이 아는 한 최적으로 정렬되어야 합니다.
드라이브 섹터 크기를 전환하려면 먼저 드라이브가 논리 섹터 크기 재구성을 지원하는지 확인해야 합니다.논리 섹터 크기를 변경하면 디스크의 모든 기존 데이터를 사용할 수 없게 될 가능성이 높으므로 디스크를 완전히 다시 분할하고 모든 파일 시스템을 처음부터 다시 만들어야 합니다.이는 hdparm --set-sector-size 4096 /dev/sdX
섹터 크기를 변경하는 "표준" 방법이지만 공급업체별 도구가 있는 경우 일반적으로 특정 디스크에 특별한 공급업체별 단계가 필요한 경우를 대비하여 해당 도구를 사용하는 것을 선호합니다.
NVMe SSD에서는 nvme id-ns -H /dev/nvmeXnY
무엇보다도 SDD에서 지원하는 섹터 크기, 각 섹터 크기와 관련된 LBA 형식 번호 및 현재 사용되는 섹터 크기를 알려줍니다. 섹터 크기를 변경하고 필요한 크기가 실제로 지원되는 경우 nvme format --lbaf=<number> /dev/nvmeXnY
특정 NVMe 네임스페이스를 다른 섹터 크기로 다시 포맷할 수 있습니다.
답변2
블록 카운터의 너비는 32이므로 이 카운터를 사용하여 512B 섹터로 나눈 최대 2TB의 디스크 공간을 처리할 수 있습니다. 따라서 최소. 최신 디스크의 주소 지정 가능 부분을 클러스터라고 하며 일반적으로 4096 = 8 x 512바이트입니다. 내부 버퍼와 프로그램이 여전히 512B 섹터를 처리하지만 이는 논리적인 설명일 뿐입니다. 다음 내용을 man fdisk
읽을 수 있습니다.최근 커널은 섹터 크기를 알고 있습니다. 이 옵션은 이전 커널에서만 사용하거나 커널을 덮어쓰는 것이 좋습니다.(주로 Linux에서는) 기본 구성을 변경할 필요가 없습니다.