본문 바로가기

(비정기) Dlbo's Post

파일시스템 - 06. MFT가 무엇인가?(1)


원래 일요일 포스팅 예정이었습니다만,

공익 정신이상 후임 녀석때문에 일요일 땜빵 뛰게 되어서 상당히 좀 부실합니다;

---------------------------------------------------------------------------------------------------------------

MFT란 Master File Table의 약자로, FAT의 파일 엔트리와 비슷한 개념입니다.

다만, NTFS에서는 루트 디렉토리 등의 엔트리에 관한 내용이 없으며, B+ 트리 알고리즘 등으로 인해

엔트리 검색 형태 등에서 차이가 납니다.

훨씬 개선된 검색속도를 가지며, 클러스터의 크기가 64비트로 월등히 크다는 점을 감안할때 상당히 유용하지요.

엔트리의 대체물로 볼 수 있기 때문에 이 MFT에도 번호가 존재하며, 0~15번의 16개 MFT에 대해서는

이미 예약된 형태가 존재합니다.

이를 메타 데이터 파일(Meta Data File)이라고 부르며, 아래 리스트와 같습니다.

  1. $MFT                           MFT를 담고 있는 메타 데이터 파일
  2. $MFTMirr                     FAT엔트리가 비상용으로 2개 이상인것과 같음. 파일 손상시 대체할 미러
  3. $LogFile                       트랜잭션 저널로 파일 변화의 기록
  4. $Volume                      볼륨의 레이블, 버전 등의 정보를 가진 파일
  5. $AttrDef                        인자, 이름, 크기등 여러 속성을 가진 파일
  6. .                                  FAT의 루트 디렉터리. 아무리 잘난 NTFS라지만 있는게 유리함.
  7. $Bitmap                       파일시스템의 클러스터 할당 정보, 그림파일 아님.
  8. $Boot                           부트영역 정보
  9. $BadClus                     배드클러스터 정보
  10. $Secure                       파일 보안, 접근 권한 제어
  11. $Upcase                      모든 유니코드 대문자 저장... 왜지?
  12. $Extend                       윈도우면 아무것도 없음. 파일시스템의 확장을 위한 영역
  13. ~15. 예약된 영역(사용하지 않음)

이 외에도 16 ~ 24번까지 미래를 위해 임시로 비워둔 친구들이 있고,

윈도 2000부터 추가된 4개의 MFT친구들이 있습니다.

이 친구들은 일반 파일 영역에서 아무데나 자유롭게 배치되지요.

이 메타 데이터 파일들은 하드디스크에 실존 데이터 파일로 존재합니다.

간단히 말해서, FAT의 단점인 "엔트리영역은 언터쳐블"을 극복시킨 방법이 파일 시스템 내용의 전체 파일화 라는거지요.

그래도 맥 파일 시스템처럼 파티션을 나누는 부분 빼고 전부 다 쓸 수 있는 수준은 아니지만요.
(맥 파일 시스템은 부트코드가 롬바이오스에 붙어있답니다;;;)

일반적으로 FAT에서는 데이터 영역의 최초 부분이 루트 디렉터리였으나, 이제 NTFS에서는 그런 구분 안해도 됩니다.

루트 디렉터리 또한 일반 파일로 아무 곳에나 자리잡을 수 있으며, 저 메타 데이터 파일들도 어디든 자리잡을 수 있습니다.

다만, 부트 레코드 영역에서 0번 MFT 엔트리의 위치만 정확하게 기록되어 있다면 말이지요.

-------------------------------------------------------------------------------------------------------------------

;;; 일단 여러번에 걸쳐서 올리도록 하겠습니다;