FAT 파일 시스템
FAT 종류 |
최대 표현 가능한 클러스터 |
FAT12 |
2^12 - 12 |
FAT16 |
2^16 - 12 |
FAT32 |
2^28 - 12 |
FAT32가 28비트만 사용할 수 있는 이유는 예약된 4비트가 다른 용도로 사용되기 때문이다.
다음은 FAT 파일 시스템의 추상적 구조이다.
Reserved Area |
FAT Area |
Data Area |
FAT - Reserved Area
FAT 종류 |
Reseved Area size |
FAT12 / FAT16 | 1 |
FAT32 |
32 |
예약된 영역(Reserved Area)은 FAT 파일 시스템에서 맨 앞에 위치한다.
예약된 영역은 다음과 같은 섹터로 구분된다.
Boot Sector | FS Infomation (FAT32 only) | More reserved sector (optional) |
부트 섹터는 0, 7 섹터에 존재한다 7 섹터는 부트 섹터의 백업본이다.
첫 3 byte는 0x003 || 0x005A의 부트 코드로 점프하기 위한 명령어가 위치한다.
BPB 영역은 클러스터의 크기, FAT 크기, 루트 디렉터리 위치, 총 섹터 수 등의 파일 시스템 정보를 기록한 영역이다.
이후는 부트 코드 영역으로 점프 명령어에 의해 실행이 되고 BPB 정보를 참조하여 파일 시스템을 부팅한다.
다음은 BPB 영역의 구조이다.
FTA - Reserved Area - FS Infomation Sector
FSINFO(FS Information Sector)는 1번째 섹터에 저장되고 7섹터에 내용을 백업한다.
이 위치는 BPB에 정의되어 있기 때문에 임의로 지정이 가능하다.
FSINFO는 OS에게 비할 당 클러스터 첫 주소와 전체 비할당 클러스터의 수를 알려준다. 이는 다음번에 저장하게 될 주소를 제공함으로서 파일을 빠르게 할당할 수 있고 전체 비할당 클러스터 수를 통해 할당 가능 여부도 알 수 있다.
다음은 FSINFO의 구조이다.
FAT - Reserved Area - More reserved sector
추가적인 예약된 영역(More reserved sector)은 부트 섹터의 부트 코드 영역이 부족할 경우 추가적으로 사용할 수 있는 섹터이다. 2번 섹터에 저장하고 8번 섹터에 백업한다.
sector |
내용 섹터 |
백업 섹터 |
Boot Sector | 0 | 6 |
FSINFO |
1 |
7 |
More Reserved Sector |
2 |
8 |
기본적으로 FAT32는 0, 1, 2, 6, 7, 8 섹터를 사용한다.
FAT32는 항상 32섹터를 가지지 않는다. 장치 타입이나 소프트웨어에 따라 변할 수 있기 때문에 Reserved Area 영역의 섹터 수를 확인 후 접근하도록 한다.
FAT - FAT Area
FAT 영역은 다음과 같이 두 영역으로 나눌 수 있다.
Reserved Area |
FAT #1 | FAT #2 |
Data Area |
두 번째 영역은 첫 번째 영역이 손실되었을 경우 사용하기 위한 백업본이다.
FAT Area는 데이터 영역에 저장된 파일들의 할당 관계를 표시한다.
FAT12/16은 2 byte, FAT32는 4 byte를 통해 데이터 영역의 시작 클러스터부터 마지막 클러스터까지 할당 관계를 표시한다. FAT 영역의 4 byte가 데이터 영역의 클러스터와 대응한다는 의미이다.
FAT 엔트리
앞서 말한 FAT12/16은 2 byte, FAT32는 4 byte의 데이터를 FAT 엔트리라고 한다.
데이터 영역은 2번 클러스터부터 시작한다. 그 이유는 0, 1 클러스터는 사전에 예약된 자리이기 때문이다.
첫 번째 클러스터는 미디어 타입, 두 번째 클러스터는 파티션 상태를 나타낸다.
연결 방식은 다음과 같다.
다음은 추가적인 클러스터의 값이다.