드라이브 내에서 위치에 액세스하는 방법에는 두 가지가 있습니다. 하나는 CHS 체계이고 다른 하나는 LBA 체계입니다.
CHS는 실린더, 헤드, 섹터를 나타내며 드라이브에서 읽거나 쓸 위치를 결정하는 가장 낮은 수준의 방법입니다. 실린더 x, 헤드 y 및 섹터 z를 사용하고 메모리의 주소 (버퍼)에서 해당 위치의 내용을 읽거나 쓰도록 지시합니다. 물리적 실린더와 판독 헤드가있는 (전통적인 회전식 녹) 하드 드라이브의 실제 물리적 구성 요소에서 파생됩니다. 섹터는 주소 지정이 가능한 가장 작은 단위이며 전통적으로 512 바이트로 고정되었습니다.
LBA는 드라이브가 오프셋에 의해 섹터 주소를 읽고 섹터 주소에 기록하는 논리 바이트 주소 지정입니다. 예를 들어 디스크에서 123837 번째 섹터를 읽거나 디스크에서 123734 번째 섹터에 기록합니다 (0부터 시작).
문제? 이러한 각 값은 범위가 제한됩니다. 실제로 CHS가 얼마나 제한되어 있었기 때문에 LBA를 도입해야했습니다. CHS의 경우 C (실린더)의 가능한 값은 1023이며 H (헤드)는 최대 255 개이고 S (섹터)는 최대 63 개까지 가능합니다. 즉, 최대 1024 개의 실린더 x 255 헤드 x 64를 가질 수 있습니다. 섹터 x 512 바이트는 전통적인 CHS 형식으로 매핑되어 총 8GiB 미만을 제공합니다! CHS를 사용하면 8GiB보다 큰 디스크에 액세스 할 수 없습니다!
따라서 LBA에는 32 비트 제한이 도입되어 디스크 크기에 2 ^ 32 x 512 바이트 또는 2TiB 제한이 있습니다. 이는 MBR 디스크가 CHS 및 LBA를 사용하여 파티션 크기를 지정하기 때문에 2TiB를 초과 할 수없는 이유입니다. 2TiB 이상을 지원하십시오.
LPT를 64 비트로 확장하여 2 ^ 64 x 512 바이트에서 필요한 것보다 훨씬 많은 것을 제공하는 GPT 파티셔닝 구성표와 같이 더 새롭고 더 나은 옵션이 도입되었습니다. 그러나 많은 레거시가 있습니다. 하드웨어 및 레거시 운영 체제 및 레거시 BIOS 구현 및 레거시 드라이버는 UEFI 또는 GPT를 지원하지 않으며 많은 사람들이 전체 스택을 다시 작성하지 않고도 2TiB 제한을 초과하도록보다 쉽게 업그레이드 할 수있는 기능을 원합니다. 기스로부터. 그리고 마침내 우리는 4096 섹터 크기에 도달합니다.
위에서 논의한 모든 제한 사항에서 하나의 고정 된 가정이 섹터 크기라는 것을 보라. 첫날부터 512 바이트였으며 그 이후로 계속 유지되었습니다. 그러나 최근 하드 디스크 제조업체는 전통적인 CHS 또는 32 비트 LBA를 사용하여 섹터 크기를 512 바이트 대신 4096 (4k)로 간단히 대체 할 수있는 기회가 있다는 것을 깨달았습니다. OS가 LBA 1 (LBA 0이 첫 번째이기 때문에)을 요청하여 "디스크의 두 번째 섹터를 알려주십시오"라고 말하면 바이트 512-1023이 아니라 바이트 4096-8191이됩니다.
갑자기 2TiB 제한이 MBR을 버리지 않고 UEFI 또는 GPT로 전환하지 않고도 2 ^ 32 x 4096 바이트 또는 16TiB로 업그레이드되었습니다!
유일한 발견은 OS가 512 바이트 섹터 대신 4096 섹터를 사용하는 매직 디스크임을 인식하지 못하면 불일치가 발생한다는 것입니다. OS에서 "이봐, 디스크, xxx를 상쇄하기 위해이 512 바이트를 쓰십시오"라고 말할 때마다 디스크는 4096 바이트 를 사용하여 512 바이트를 저장합니다. 바이트 단위로 통신하지 않기 때문에 섹터에서 통신하기 때문에 메모리 언더 플로).
따라서 현재 BIOS (때로는)에는 최신 디스크에서 사용하는 기본 4096 바이트 섹터 크기 대신 512 바이트 섹터 크기를 사용하도록 수동으로 지정할 수있는 옵션이 포함되어 있습니다. "좋은 옛날"과 마찬가지로 MBR 시스템에서 디스크의 2TiB. 그러나 4k를 인식하는 최신 OS는이 모든 것을 활용하여이 마법을 사용하여 4096 바이트 청크를 읽고 쓸 수 있습니다!
(추가 이점은 한 번에 4096 바이트를 읽고 쓰는 경우 4GiB의 데이터를 읽거나 쓰는 작업이 적기 때문에 작업 속도가 훨씬 빠르다는 것입니다.)