메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

FAT 파일시스템(2) - 구조

한빛미디어

|

2006-07-06

|

by HANBIT

18,274

제공: 한빛미디어 네트워크 기사
저자: 정준석
출처: IT EXPERT, 임베디드 개발자를 위한 파일시스템의 원리와 실습 Chapter 3. 중에서



FAT 파일시스템은 데이터를 관리하기 위해서 하드디스크를 여러 영역으로 나누어서 사용하고 있다. 이 절에서는 FAT 파일시스템이 하드디스크를 어떻게 나누어서 사용하고 있는가와 각각의 영역에 대한 기본적인 내용을 살펴본다.




[그림 3-2] FAT16 파일시스템의 구조



[그림 3-3] FAT32 파일시스템의 구조


FAT 파일시스템의 구조

FAT16과 FAT32는 기본적인 구조에서 거의 비슷하나 다른 점이 몇 가지 있다. 위 그림에서 보듯이 가장 큰 차이점은FAT16은 루트 디렉토리 영역이 따로 존재한다는 것이다. FAT16에서 루트 디렉토리 영역은 하위 디렉토리들과 달리 반드시 FAT #2 영역 뒤에 와야 하지만 FAT32는 루트 디렉토리 역시 일반 디렉토리 중의 하나로 간주하기 때문에 데이터 영역 어디에 오든지 상관이 없게 되었다.

참고로 위의 그림에서는 편의상 부트 레코드 영역이나 예약된 영역이 실제 비율보다 크게 그려져 있는데, 실제로 각 영역별 할당 비율을 보면 부트 레코드나 예약된 영역은 매우 작기 때문에 정확히 비율대로 그림을 그리면 거의 안 보이게 된다. 때문에 설명에 도움이 되도록 크게 그려놓았다. 각 영역에 대해서는 다음 절부터 하나하나 자세하게 살펴볼 것이다. 일단 여기에서는 전체적인 내용을 간단히 살펴보자.

부트 레코드(Boot Record)

이 영역은 볼륨의 첫 번째 섹터를 의미한다. 또한 예약된(Reserved) 영역의 첫 번째 섹터를 의미하기도 한다. 이 영역에는Windows를 부팅시키기 위한 기계어 코드와FAT 파일시스템의 여러 설정 값들이 담겨 있다. 이 영역은 BIOS Parameter Block(BPB)이라고도 한다. 이 영역은 크기가 1섹터밖에 안 되는 작은 영역이지만Windows가FAT 파일시스템을인식하는데 가장 중요한 역할을 담당한다. Windows는 볼륨을 인식하려고 할 때 우선 부트 레코드를 읽어서 분석을 하기 때문이다. 만약 볼륨의 내용이 완벽히 살아 있어도 부트 레코드 섹터를 실수로 지워버린다면Windows는 해당 볼륨을 인식할 수 없다. 이 영역에 대해 한 가지 주목해야 할 점은 Boot Record 형태가 FAT16과 FAT32가 약간 다르다는 점이다. 이것에 대해서는 나중에 자세히 살펴볼 것이다.

예약된(Reserved) 영역

이 영역은 미래를 위해 예약해 놓은 영역이다. 보통 FAT16인 경우에는 1섹터를, FAT32인 경우에는 32섹터를 할당한다. FAT16의 경우 예약된 영역의 크기가 1섹터라면 부트 레코드가 1섹터를 차지하므로 부트 레코드 다음에 바로FAT 영역이 오게 된다. 이 영역은 미래를 위해 예약되어 있는 영역으로 사용되지 않는 영역이다. 만약 여러분이 자신만의 특별한 정보를 기록하고 싶다면 이 영역이 적절할 것이다. 단 FAT32의 경우 예약된 영역 안에 몇 개의 섹터를 사용하여 정보를 저장하고 있으므로 그것과 겹치지 않게 유의해야 한다.

FAT #1 영역과 FAT #2 영역

FAT 영역은 클러스터들을 관리하는 테이블이 모여 있는 공간이다. FAT 영역을 통해서 어떤 클러스터가 비어 있는지, 어떤 파일에 어떤 클러스터가 연결되어 있는지를 알 수 있게 된다. 만약 이 영역에 조금이라도 손상이 가게 된다면 돌이킬 수 없는 큰 재앙이 온다. Microsoft 엔지니어들도 이러한 사실을 잘 알고 있었는지, FAT 영역의 백업본을 한 개 이상 만들어 두게 해놓았다. FAT #1 영역과 FAT #2 영역은 동일한 내용을 담고 있다. FAT #2 영역은 일종의 백업본으로 FAT #1에 손상이 갔을 경우를 대비해서 만들어 놓은 것이다. FAT 영역은 최소 1개 이상 되어야 하며, 3개를 만들어도 된다. 전 세계의 많은FAT 코드는 보통 2개의 영역을 만든다.

루트 디렉토리 영역(FAT16에만 존재)

FAT16에서는 루트 디렉토리의 위치가 무조건 FAT #2 영역 뒤쪽으로 고정되어 있다(위치는 고정되어 있지만 크기는 가변적일 수 있다). 이 방식은 루트 디렉토리가 어디에 있는지를 조사할 필요가 없어서개발의편의성이증가하게되는장점이있지만, 루트 디렉토리의 파일개수 제한 등 단점이 있어서 FAT32에서는 구조가 바뀌었다.FAT32에서는 루트 디렉토리가 데이터 영역 어디에 와도 상관이 없으며, 단지 그 위치를 부트 레코드에 기록하고 있을 뿐이다. 이 방법의 유일한 단점은 부트 레코드가 망가지면 루트 디렉토리를 찾아내기가 매우 힘들다는 것이다. 이러한 문제에 대한 대책으로 대부분의 FAT 코드들이 FAT32인 경우라도 FAT #2 영역 바로 뒤에 루트 디렉토리를 위치시킨다. 그렇기 때문에 부트 레코드가 망가져서 루트 디렉토리의 위치를알수없게되어버린경우에도간단히찾을수있게된다.

데이터 영역(파일과 디렉토리)

이 영역에는 파일 또는 디렉토리가 저장되어 있다. 이 영역은 지금까지 봐왔던 영역들이 전부 섹터(Sector) 단위로 읽기/쓰기를 했던 것과는 다르게 클러스터(Cluster)라고 불리는 논리적인 단위로 읽기/쓰기가 된다.

사용하지 않는(Unused) 영역

이 영역은 물리적으로는 사용해도 상관없지만, FAT 파일시스템이 볼륨을 구조화시키는 과정에서 잉여분이 조금 남는 영역이다. 이 영역은 버려진다는 생각에 조금 아까울 수도 있지만, 실제로 보면 매우 적은 양이므로 무시할 수 있을 정도이다.

영역별 정리




[표 3-5] FAT 파일시스템의 영역별 크기와 접근 단위


위 표는 지금까지 설명한 각 영역의 크기와 접근 단위를 나열한 것이다. 데이터 영역을 제외한 다른 영역들은 데이터 영역을 관리할 목적으로 사용되므로 작으면 작을수록 좋다. 데이터 영역을 제외한 다른 영역들은 모두 섹터 단위로 읽기/쓰기가 이루어진다.
TAG :
댓글 입력
자료실

최근 본 상품0