FAT(File Allocation Table)이라는 용어는 이름 그대로 파일의 할당 정보를 표현한 테이블이다. FAT라는 용어는 MS-DOS 때부터 쓰여 왔는데, Windows로 넘어가면서 파일시스템 자체를 가리키는 용어가 되었다. FAT의 의미상의 혼동이 올 수 있으므로 앞으로 테이블은 "FAT 영역", 파일시스템은 "FAT 파일시스템" 으로 구분해서 표기하겠다.

FAT 파일시스템은 구조가 간단하다는 장점 때문에 일반 시스템 외에도 메모리 카드, 디지털 카메라, 플래시 메모리 등에 널리사용되고 있다. FAT 파일시스템은 크게 FAT12, FAT16, FAT32 로 나눌 수 있다. FAT 뒤의 숫자는 비트 수로 최대 표현 가능한 클러스터의 수를 의미한다.

FAT 형식 최대 표현 가능한 클러스터 수
 FAT12  4,084 (2^12 – 12)
 FAT16  65,524 (2^16 – 12)
 FAT32  268,435,444 (2^28 - 12)

FAT12는 12비트를 사용하여 클러스터를 표현할 수 있기 때문에 최대 4,096(2^12)개의 클러스터를 표현할 수 있다. 하지만 000h, 001h, FF6h~FFFh 값은 사용하지 않거나 다른 목적으로예약되어 있기 때문에 최대 4,084(^12 – 12)개의 클러스터를 표현할 수 있다. FAT16의 경우에도 예약된 클러스터를 제외하면 최대 65,524(2^16 – 12) 개의 클러스터를 표현할 수 있고, FAT32는 268,435,444(2^28 – 12)개의 클러스터를 표현할 수 있다. FAT32에서 28비트만 사용하는 이유는 4비트가 사전에 예약되어 다른 용도로 사용되기 때문이다.

이러한 변천과정은 당연히 저장매체의 용량이 기하급수적으로 커져가면서 파일시스템이 그 용량을 표현하지 못했기 때문에 비트 수를 증가시킨 것이다. 하지만 이러한 비트 수 증가에도 FAT32는 최대 2TB 의 용량까지만 표현가능하다. 클러스터의 크기를 32KB로 하면 8TB 까지 표현가능하지만 MBR 구조의 비트 수 제한으로 최대 2TB 까지만 표현가능하다.

2TB 는 과거에는 꿈의 용량이었지만 현재는 손에 잡히는 용량이며, 이 용량 또한 넘어서는 제품이 속속들이 개발되고 있다. 이러한 상황에서 FAT32를 사용하기는 무리이기 때문에, FAT32를 확장한 exFAT가 제안되었다. 이는 Windows Embedded CE 6.0부터 사용되었는데 현재는 Windows Vista Sevice Pack 1부터는 기본으로 지원하며, Windows XP에서는 패치를 통해 사용 가능하다.

exFAT는 클러스터 표현 비트를 64비트로 확장시켰으며, 비트맵을 사용하여 클러스터를 효율적으로 관리한다. 이외에도 FAT32에서 제한되었던 많은 기능이 추가되었다. exFAT에 대해서는 추후에 다시 자세히 살펴볼 예정이다.

다음은 FAT 파일시스템의 추상적인 구조를 보여준다. FAT 파일시스템은 크게 예약된 영역(Reserved Area), FAT 영역(FAT Area), 데이터 영역(Data Area)로 나눌 수 있다. 각 영역의 자세한 내용은 다음 포스팅부터 자세히 살펴볼 것이다.

 

Tagged with:
 
  • Haskell

    “가르키는” -> “가리키는” //2번째 줄 끝 부근
    맞춤법 교정 부탁드립니다. 잘보고 갑니다. :-)

    • proneer

      오호… 감사합니다. ^^