섹터 주소 지정 방식
저장매체는 섹터라는 최소한의 데이터 저장단위를 사용한다. 섹터는 일반적으로 512byte이다. 이러한 섹터들은 하드디스크 물리적인 구조 내에 존재하는데 특정 파일을 읽고자 한다면 해당 섹터를 읽어야 한다. 섹터는 각각 주소값을 가지고 있기 때문에 해당 주소로 접근하여 각 섹터를 읽어오면 될 것이다.
섹터의 주소를 지정하는 방식은 조그만한 변화를 거쳐왔다. 초기에 사용된 것이 CHS 주소 지정 방식이고 이후 LBA 주소 지정 방식이 사용되고 있다.
CHS 주소 지정 방식
CHS(Cylinder-Head-Sector) 주소 지정 방식은 실린더(Cylinder), 헤드(Head), 섹터(Sector) 구조를 기반으로 주소를 지정하는 방식이다.
다음은 하드디스크의 물리적인 구조이다.
위 그림에서 보면 3개의 플래터로 구성되어 있다. 헤드가 6개인 것을 보아 플래터는 양면 모두 사용되도록 만들어졌다.
만약 어떤 파일의 시작 섹터 위치가 CHS(21,3,20)이라고 하자. 운영체제에 의해서 해당 파일의 읽기 명령이 내려지면 커널은 하드디스크 컨트롤러에 명령을 내린다. 각각의 C, H, S에 대해 명령을 받은 컨트롤러는 하드디스크의 3번째 헤드를 21번째 실린더, 20번째 섹터에 위치시킨다. 이후 읽기 명령이 발생하면 해당 위치부터 데이터를 읽게 된다.
이처럼 물리적인 구조에 기반한 주소 방식이 CHS 방식이다. 하지만 용량에 제한이 존재하였다. 결국 다른 주소 지정 방식을 사용하게 되었는데 그 방식이 LBA 방식이다.
LBA 주소 지정 방식
LBA(Logical Block Addressing) 방식은 하드디스크의 구조적인 정보를 이용하지 않고 단순히 0부터 시작되는 숫자로 이루어져 있다. 하드디스크 내부에 존재하는 모든 섹터들을 일렬로 늘어뜨린 후 논리적인 번호를 매겼다고 생각하면 된다. 특정 파일을 읽기 위해 해당 파일의 논리적인 섹터번호를 얻었다면, 이 논리적인 번호를 물리적인 위치 값으로 변환해야 한다. 하지만 이것에 대해서는 디스크 컨트롤러가 해주기 때문에 신경 쓸 필요가 없다.
LBA가 CHS와 전혀 별개로 생겨난 것은 아니다. 다만, CHS가 먼저 사용되었고, 이후 한계점으로 인해 LBA가 주목받기 시작한 것이다.
최근 동향
최근에는 대부분의 디스크는 ZBR(Zone Bit Recording)을 사용한다. ZBR은 플래터의 트랙 길이가 내부보다 외부가 더 길다는 점에 착안해 트랙의 길이가 길수록 더 많은 섹터를 할당하는 방식이다.
이전에는 모든 트랙은 같은 섹터로 이루어져 있었다. 따라서 ZBR을 쓰는 디스크는 ZBR에 따른 각 트랙당 섹터의 수를 알고 있어야 정확한 계산이 가능하다.