Sep 12, 2007

ATA 방식 HDD에서의 용량한계와 극복

하드디스크 드라이브의 용량은 꾸준히 증가한다.

하드디스크는 지난 1980년 시게이트의 ST-506이라는 5.25", 풀 하이트(CD-ROM 드라이브 두께의 두배라고 생각하면 정확함)라는 거구에 6MB의 용량으로 세상에 첫선을 보인 이후로 지속적으로 그 용량이 늘어서 현재는 200GB에 이르는 초 대용량의 제품까지도 시장에 등장하고 있다.

흥미로운 것은 인텔의 공동창업자 중의 하나인 고든 무어가 지난 1965년에 언급한 '무어의 법칙(Moore's Law)'는 그가 지적한 반도체 업계 뿐만 아니라 스토리지 쪽에서도 유사하게 적용되고 있다. 그는 '매 18개월마다 반도체에 집적되는 트랜지스터의 수는 2배가 될 것이다'라고 하였는데, 이는 지금까지 거의 정확하게 유지되어 왔다. 그런데 이 법칙을 스토리지 디바이스에도 적용시켜 보면 신기할 정도로 정확하게 들어맞는다.

매 18개월마다 2배로 성장한다는 것을 1년마다 1.56배로 성장한다는 것으로 환산해서 계산할 경우 1980년에 6MB의 용량으로 등장한 하드디스크 드라이브는 2002년도에는 166GB가 되어야 한다. 이는 현재 판매되고 있는 최고용량의 하드디스크 드라이브의 용량과 대단히 유사하다.(맥스터에서는 160GB 하드디스크 드라이브를 출시한 바 있으며, 서버용 제품군에서도 풀 하이트로는 180GB 제품이, 일반 1" 프로파일로는 146GB 제품이 등장해 있다.) 이렇게, IT 계열 전반에 미치는 무어의 법칙이 스토리지에 지속적으로 적용될 경우, 4년 후에는 1TB(Terabyte : 1,000GB)의 용량에 달하는 하드디스크 드라이브가 만들어지게 된다.

이렇게 늘어만 가는 용량을 시스템이 따라가주지 못하면 어떻게 될까? 하드디스크 드라이브는 100GB짜리인데, 자신의 시스템은 단지 8GB밖에 인식하지 못한다면 상당한 낭패가 아닐 수 없다. 그러나 이러한 일은 종종 발생되어 왔고, 일부 사용자들은 지금까지 약 두세번에 걸쳐서 용량확장에 제동이 걸린 것을 경험했을 것이다.

용량의 계산과 BIOS 및 ATA 규격의 한계


용량의 계산, CHS


하드디스크의 용량을 계산하는 3요소는 CHS라고 불린다. CHS는 각각 실린더(Cylinder), 헤드(Head), 섹터(Sector)를 의미한다.



하드디스크 내부에는 데이터를 기록하는 금속재질(혹은 유리로 만들어진 것도 있으며, 최근 프라스틱 플래터도 개발되긴 했다.)의 원판이 존재하며 이를 플래터(platter)라고 부른다. 최신 제품의 경우 플래터당 40GB 혹은 60GB의 용량을 가지고 있는 것도 볼 수 있다. 하드디스크 드라이브의 내부에는 이러한 플래터가 적게는 한장에서 많게는 네장까지, 그리고 하프 하이트 하드디스크 드라이브의 경우는 열장까지 사용된다.(하프 하이트 하드디스크 드라이브는 이제 제조되지 않고 있다.)


플래터 상에서 데이터의 기록영역은 트랙과 섹터로 나뉘어진다. 트랙은 운동장에서 트랙이라는 것이 운동장 주변을 두르고 있는 것처럼, 플래터의 축을 중심으로 하는 동심원들을 의미한다. 가장 바깥쪽에 있는 것이 0번 트랙이며, 플래터의 중심으로 갈수록 트랙 번호는 증가한다. 섹터는 트랙을 나누어 놓은 것으로써, 하나의 섹터는 위 일러스트에서 보이듯, 자주색의 부채꼴 영역을 의미한다. 섹터는 1번부터 시작되서 반시계 방향으로 번호가 증가한다. 그래서 플래터 상에서 데이터가 있는 구역은 섹터 번호와 트랙 번호를 지정함으로써 알 수 있다.


그러나 플래터도 앞면과 뒷면이 있으며, 또한 플래터 자체가 여러장이기 때문에 데이터의 위치를 규정하기 위해서는 하나의 요소가 또 필요하다. 바로 헤드이다. 헤드는 플래터 표면의 정보를 읽어내고 정보를 기록하는 역할을 하는데, 하나의 헤드는 플래터의 한 면에서만 읽고 쓰는 것이 가능하며 따라서, 모든 면에 하나씩의 헤드가 필요하다. 맨 아래에 있는 것이 0번 헤드이며, 위로 올라갈수록 하나씩 증가한다. 그래서 플래터가 2개일 경우는 헤드는 4개 혹은 3개(마지막 면은 사용하지 않을경우)라는 식이다.


이렇게 여러장의 플래터를 다루기 때문에 트랙의 개념을 확장해서 실린더라는 개념이 사용된다. 실린더는 수직 방향으로 같은 위치에 있는 트랙들의 집합이며, 원통의 형태를 가진다고 보면 된다. 당연히 번호는 트랙과 같은 방법으로 매겨져서 가장 바깥쪽 실린더가 0번, 안쪽으로 들어갈수록 번호는 증가한다.


그래서, 하드디스크 내에서 데이터의 위치를 지정하는데에는 데이터의 기록면(헤드 번호), 기록되어 있는 트랙(실린더 번호), 기록된 섹터(섹터 번호)라는 세가지 정보가 필요하며, 이들 세가지 정보의 조합으로써 하드디스크 드라이브의 용량이 결정된다. 한개의 섹터에는 512byte가 들어가므로, 이를 바탕으로 CHS(Cylinder, Head, Sector) 수치를 알면 용량을 계산할 수 있다.


예를 들어서, 128개의 실린더와 8개의 헤드, 63개의 섹터를 가지는 하드디스크 드라이브라면 용량은 다음과 같이 계산된다.


128 × 8 × 63 x 512byte = 33,030,144byte = 32,256kB = 31.5MB


그러나 이러한 물리적 CHS 수치는 최근의 하드디스크 드라이브에서는 사실상 의미가 없어졌다. 기록밀도의 지속적인 증가로 인해서 트랙밀도 및 트랙의 선밀도 등이 급격하게 증가했을뿐더러 하드디스크 내부의 기록방법도 표준 레코딩 기법에서 존드-비트(zoned-bit) 레코딩으로 변경되었기 때문에 CHS 수치가 실제 하드디스크 드라이브의 CHS 수치와는 큰 차이를 보인다.



위의 일러스트 중 왼쪽은 표준 레코딩 기법을 의미한다. 하드디스크 드라이브의 전 영역에 걸쳐서 하나의 트랙에는 동일한 수의 섹터만이 존재한다. 이러한 방식을 사용하면 CHS 수치를 적용시키기는 쉽지만, 하드디스크의 외주 쪽에서는 데이터의 기록밀도가 낮아진다는 문제점이 있다. 이러한 문제점을 해결한 것이 존드-비트(zoned-bit) 레코딩 기법이다. 이 방법은 하드디스크의 전 영역에 걸쳐서 데이터의 기록밀도를 유사하게 유지하기 위해서 트랙마다 존재하는 섹터의 수가 틀리다. 위 일러스트를 보면, 가장 안쪽의 트랙에서는 동일한 숫자의 섹터만이 존재하지만, 바깥쪽으로 갈수록 존드 비트 레코딩에서는 하나의 트랙에 보다 많은 섹터가 존재한다. 이러한 방법을 통해서 전 영역에서의 데이터 기록밀도를 높게 유지함으로써 보다 높은 용량의 달성이 가능하다. 한편, 하드디스크 드라이브의 스핀들 모터의 RPM은 항상 일정하기 때문에 플래터가 한번 회전할 때 안쪽보다는 바깥쪽 트랙에서 보다 많은 섹터가 읽혀질 수 있다. 그래서 하드디스크 드라이브들은 바깥쪽에서의 데이터 전송속도가 더 빠르다.


얼마전 포스팅된 HDD 벤치마크의 데이터 전송률을 보면, 앞쪽에서의 데이터 전송이 뒤쪽보다 현격히 빨리 일어나는데, 이것은 앞쪽의 트랙(플래터에서는 바깥쪽)에서의 선속도가 더 빠르기 때문이다. 또한 갑자기 속도가 떨어지는 부분은 그 부분을 기점으로 트랙당 섹터의 숫자가 줄었다는 것이다.


BIOS와 ATA 규격에서의 한계


바이오스는 하드디스크 드라이브에 접근하기 위해서 13h의 인터럽트(int 13h)를 사용한다. int13h를 사용하면 하드디스크 드라이브에 섹터 단위의 접근이 가능해진다. 이렇게 섹터 단위에 접근하기 위해서 필요한 것이 바로 앞서 언급한 CHS이다. CHS를 사용한 데이터 위치정보(CHS 어드레싱)의 수치는 데이터가 있는 위치를 지정하며, 바이오스는 이를 사용해서 데이터를 찾아낸다.


그런데, 기존에 사용되던 AT 바이오스에서는 이러한 주소를 사용하기 위해서 총 24bit의 정보를 사용하였는데, 24bit의 정보는 실린더에 10bit, 헤드에 8bit, 섹터에 6bit 씩 할당된다. 결국, 바이오스 상에서 사용할 수 있는 CHS 수치는 다음과 같았다.



한편, ATA 규격 자체에도 한계가 존재한다.


ATA규격이 처음 발효되었을 당시, ATA-1 규격에서는 CHS 어드레싱을 위한 정보에 28bit를 사용하였다. 이 28bit의 정보는 실린더에 16bit, 헤드에 4bit, 섹터에 8bit가 사용되어서, ATA 규격이 허용할 수 있는 CHS 수치는 다음과 같았다.



이러한 두가지 한계점은 사용자가 쓸 수 있는 HDD용량에 새로운 한계점을 던져주었다. 어떠한 배리어가 생겼나를 다음 페이지에서 살펴보자.

Capacity Barrier


1. 528MB Barrier


528MB 배리어는 사용자가 가장 먼저 마주쳤던 장벽이었다. 하드디스크 드라이브를 528MB까지밖에 쓸수가 없다니, 그것도 시스템이 528MB 이외의 부분을 인식하지 못해서 쓰지 못한다는 것은 사용자들의 입장에서는 상당히 당황스러운 문제였다.


앞 페이지에서 살펴보았던 CHS 바이오스 상의 한계와 ATA 규격상의 한계를 비교해보도록 하자.



사용자는 ATA 방식의 하드디스크를 시스템에 연결하고, 시스템의 바이오스는 CHS 어드레싱을 사용해서 하드디스크에 접근한다. 이러한 구조 상에서 발생한 문제는 바로 용량제한이었다. ATA 규격상에서 아무리 실린더를 65536개까지 지원할 수 있다고 하더라도 CHS 바이오스는 1024개의 바이오스만을 인식할 수 있었다. 그 결과, 사용할 수 있는 실린더의 수는 1024개로 제한되어 버리고 만다. 마찬가지로, 헤드와 섹터에 있어서도 각각 16개와 63개로 제한이 걸린다.


그 결과, 하드디스크 드라이브가 가질 수 있었던 한계는 실린더 1024개, 헤드 16개, 섹터 63개가 된다. 이를 바탕으로 용량을 계산해보자.


1024 × 16 × 63 x 512byte = 528,432,304byte


즉, 여기서 약 528MB라는 용량제한이 생겨버린 것이다. 이를 돌파하기 위해서 'CHS 변수 전환(CHS parameter translation)'이라는 방법이 사용되었다. 하드디스크의 물리적인 CHS 수치를 무시하고 이것을 시스템에서 허용되는 수치로 변경하는 것이다.(구형 시스템의 바이오스를 보면 하드디스크 드라이브의 설정 항목 중 마지막 항목에 'normal, large, LBA'의 세가지 항목이 존재했다. 이 중에 normal이 바로 위에 언급되어 있는 일반적인 CHS 방식 어드레싱이고, large가 지금 이야기하는 CHS 변수전환을 사용한 어드레싱이다.)


CHS 변수 전환의 원리는 매우 간단하다. 만약, 하드디스크 드라이브가 가지고 있는 CHS 값이 각각 2048, 16, 63일 때, 이것은 일반적인 CHS 방식 접근으로는 실린더의 수치에서 걸려서 용량을 제대로 인식하지 못한다. 그러나 CHS 변수전환을 적용하여, 이를 1024, 32, 63으로 전환하면, 전체 섹터의 수는 그대로 유지하면서 하드디스크를 그대로 인식시킬 수 있었다. 1993년~1994년 혹은 그 이후에 만들어진 제품들에는 변수전환 방법이 적용되어서 528MB를 초과하는 용량의 제품을 사용할 수 있거나, 혹은 바이오스의 업그레이드를 통해서 지원할 수 있었다.


2. 8.4GB Barrier


CHS 변수전환을 통해서 528MB의 배리어는 해결했지만, 하드디스크 드라이브의 용량은 꾸준히 늘어서 새로운 장벽을 만들어냈는데, 바로 8.4GB 배리어이다.


CHS 변수전환을 사용한다고 해도 결국은 CHS 바이오스 상에서 지원할 수 있는 전체 실린더/헤드/섹터 수까지만 지원할 수 있다는 것이 문제였다. CHS 바이오스는 실린더, 헤드, 섹터를 최대 1024개, 256개, 63개까지 사용할 수 있었는데, 이것을 계산하면 바로 8.4GB가 된다.


1024 × 256 × 63 × 512byte = 8,455,716,864byte


이러한 장벽을 넘기 위해서 만들어진 것이 LBA(Logical Block Address) 인터페이스이다. LBA 인터페이스가 적용되면, 바이오스는 기존의 CHS 방식 대신 LBA 방식을 사용해서 하드디스크 드라이브에 접근한다.


LBA(Logical Block Address)는 그 이름 그대로, 물리적, 혹은 논리적(변수전환된) CHS 수치를 무시하고 하드디스크 전체를 하나의 영역으로 보면서 이 안에서 일련의 주소를 가지는 블록을 만든다. 그리고 이러한 블록의 주소를 지정하기 위한 정보로써 28bit를 사용한다.



그 결과, 본래 바이오스가 가지고 있는 CHS 한계와는 상관없이 ATA 규격이 가지는 한계까지를 모두 사용할 수 있다. 28bit가 사용된 것은 ATA 규격에서 정의하고 있는 CHS 수치에 28bit의 정보가 사용되기 때문이다. 그리고, 섹터의 수는 0이 아닌 1부터 시작되기 때문에 256개가 아닌 255개가 되며, 이와 호환성을 유지하기 위해서 LBA 방식의 어드레싱에서 사용할 수 있는 주소의 총 개수는 다음과 같이 정해진다.


216 × 24 × (28 - 1) = 220 × (28 - 1) = 267,386,880


LBA 방식은 1994년 및 그 이후에 만들어진 바이오스들이라면, 적용되어 있거나 혹은 바이오스의 업그레이드를 통해서 지원이 가능하다.


3. 137GB Barrier


사실, LBA 방식이 적용될 때까지만 해도 137GB라는 것은 멀고 먼 곳처럼 생각되었으나, 어느새, 사용자들이 사용하는 하드디스크 드라이브의 용량은 100GB로 치닫고 있고, 대용량 제품군에서는 160GB짜리도 등장하고 있다. 위에서 언급한 LBA의 주소에 사용되는 정보는 총 28bit, 그리고 CHS 수치와 호환성을 유지하기 위해서 220 × (28 - 1) 개의 주소를 사용할 수 있다고 하였다. 그러면 LBA는 하드디스크 드라이브를 어디까지 지원할 수 있는것일까?


220 × (28 - 1) x 512byte = 136,902,082,560byte


결국 136GB라는 새로운 배리어가 만들어지는 것이다. 이것은 ATA 규격 자체의 한계이기 때문에 CHS 변수전환이나 LBA 같은 어드레싱 방법의 변경 등으로는 극복할 수가 없었다. 그래서 이것은 ATA의 새로운 규격에 포함되었는데, 그것이 바로 ATA-6이다.


ATA-5(Ultra-ATA/66)까지는 초기 ATA 하드디스크 드라이브가 만들어질 때의 한계를 그대로 갖고있었다. ATA-6(Ultra-ATA/100)에서는 이러한 한계를 극복하기 위해서 하드디스크 자체 내에서도 물리적인 실린더/헤드/섹터의 수를 무시하고 총 48bit의 정보를 주소를 정하기 위해서 사용한다. 그래서 실제로 사용가능한 주소의 수가 248개(281,474,976,710,656개)가 되었다. 이로써 137GB 배리어를 지나서 보다 높은 용량의 하드디스크 드라이브를 만들 수 있는 것이다.


그러나, 문제는 바이오스이다. 137GB 배리어는 이제, 하드디스크 드라이브 뿐만 아니라 바이오스상의 지원도 제한해버린다. 결국, ATA-6이라는 새로운 규격으로 인해서 하드디스크 드라이브의 용량제한은 일단 사라졌으나, 이렇게 하드디스크 드라이브의 용량을 늘린다고 해도 결국은 바이오스가 지원하지 못하는, 마치 528MB 배리어와 비슷한 현상이 발생한 것이다.


지난 1996년 피닉스 바이오스(Pheonix BIOS)사는 이러한 사태를 예상하고 미국의 국립 정보기술 위원회(National Commitee on Information Technology Standard : NCITS)에 새로운 바이오스 규격인 "확장 디스크 드라이브 규격(Enhanced Disk Drive Specification : EDD)"을 제안하였다. EDD 바이오스는 LBA를 확장한 것으로써, 주소 정보에 사용할 수 있는 정보의 크기가 28bit에서 64bit로 증가하였다. 결국, 바이오스는 264개까지의 섹터를 어드레싱할 수 있게 되었다.


264개는 ATA-6에서 지정한 248개보다도 훨씬 많은 것이기 때문에 EDD가 적용된 바이오스라면 현존하는 모든 ATA 방식 하드디스크 드라이브를 인식할 수 있다. 당연히, 처음 제안한 피닉스사가 이를 제일 먼저 사용하였으며, 이후 1998년부터 다른 바이오스 제조사들에서도 이를 적용하기 시작하였다.


따라서, 1998년 이후 출시된 바이오스라면 약간의 수정(바이오스 업그레이드)으로 고용량 하드디스크 드라이브를 지원할 수 있다.



앞으로 나타날 새로운 용량장벽


지금까지, 사용자들이 겪어왔던 세가지 용량 장벽과 그 원인 및 극복방법에 대해서 이야기해보았다. 그러면 앞으로는 어떠한 배리어가 등장할까? 그리고 언제쯤 나타나게 될까?


1. 144PB Barrier


바로 앞서 언급한 내용이다. ATA-6에서 48bit의 주소정보를 가지고 있으므로, 섹터의 수는 총 248개가 된다. 또한 이것은 기존의 CHS 방식을 무시하는 것이므로 CHS에서의 트랙당섹터 수에 맞추기 위해 수치를 수정한다던가 하는 것이 불필요하므로, 248개를 모두 사용할 수 있다. 그러면 이것을 사용해서 만들어낼 수 있는 용량은 어느정도일까?


248 × 512byte = 281,474,976,710,656 × 512byte = 144,115,188,075,855,872byte


이제 숫자가 하도 커져서 거의 감이 안오는데(-_-;;) 이는 144PB(P : Peta의 약자. 1015에 해당)의, 대단히 거대한 용량이다. 현재 최대용량인 160GB의 90만배(-_-)에 달한다. 앞서 언급한 용량증가추세(1년에 1.58배) 대로 계산하면(log1.58900000) 30년이 나오니, 최소한 앞으로 30년간은 새로운 하드디스크 용량 배리어가 생길 걱정은 안해도 될 것 같다.


2. 9.4ZB Barrier


이 역시 앞서의 글을 잘 읽으신 사용자라면 충분히 예상할 수 있는 부분이다. 앞서, EDD 바이오스가 264개의 섹터에 접근할 수 있다고 하였다. 결국 144PB의 배리어를 넘으면 EDD 바이오스에 의해서 생기는 배리어에 맞닥뜨리게 된다. 264개의 섹터라고 하였는데, 과연 어느정도의 용량일까.


264 × 512byte = 18,446,744,073,709,551,616 × 512byte = 9,444,732,965,739,290,427,392byte


숫자가 정말, 정말 커져서 감이 더더욱 안오게 되었다. 여하튼 EDD 바이오스로 인해서 생기는 용량 장벽은 바로 9.44ZB( Z : Zeta의 약자. 1021에 해당)인 것이다. 현재 최대용량인 160GB의 590억배(-_-;;;;)이며, ATA-6 표준에 의해서 만들어지는 용량장벽인 144PB에 비하면 65,536배라는 어마어마한 용량이다. 이것은 우리가 앞으로 몇년 후에 만날 수 있을까. 다시 계산해보자.


log1.5859029581035 = log 59029581035 / log 1.58 ≒ 54.2


54.2년이다. -_-; 필자가 늙어죽을때 쯤이면 9.4ZB의 배리어에 도달한다는 이야기인데, 이정도라면 더이상 용량한계는 걱정하지 않아도 무방하지 않을까?


출처 : Mr.Y 기자 | mistery@technoa.co.kr
기사 작성일 : 2002-06-21 오후 5:05:42