본문 바로가기

(비정기) Dlbo's Post

파일시스템 - 08. MFT가 무엇인가?(3)


아앍.

미칠꺼 같아요 정신없어서 ㄱ-

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

각 MFT에 대해 정보를 알려면 이 MFT의 헤더를 읽어야 합니다.

그리고 이 MFT의 헤더에 속성들이 들어가있지요.

..............


...............

MFT 헤더가 아니고 MFT의 엔트리에 들어있습니다 -_-;

낚이는 분 있을까봐;

MFT는 MFT Entry Header 부분과 빈 공간으로 나뉘고,

빈 공간에 속성이 들어가서 이 MFT의 성격을 결정해 줍니다.

이 속성에 파일의 데이터, MFT의 성격 등이 모두 들어가 있는 것이지요.

이 속성에 대한 접근은 속성으로 접근합니다.(?)

MFT의 상세 속성을 알아볼까요?

차례로 번호, 이름, 역할을 기재합니다.

 속성 번호  이름  역할
 16  $STANDARD_INFORMATION  마지막 접근시간, 생성시간 등의 파일에 대한 기초적인 정보를 저장
 32  $ATTRIBUTE_LIST  속성들의 리스트 저장. 속성들에 대한 접근시 사용.
 48  $FILE_NAME  파일의 이름을 저장.
 64  $VOLUME_VERSION  볼륨에 대한 정보.
 80  $OBJECT_id  16바이트 파일이나 디렉터리에 대한 값.
 96  $SECURITY_DESCRIPTOR  파일 접근 제어/보안 제어
 96  $VOLUME_NAME  볼륨의 이름
 112  $VOLUME_INFORMATION  볼륨의 정보
 128  $DATA  파일의 내용
 144  $INDEX_ROOT  인덱스 트리의 루트에 관한 정보
 160  $INDEX_ALLOCATION  인덱스 트리의 내용 노드들
 176  $BITMAP  할당 정보 관리. 비트맵 그림 아님!
 192  $SYMBOLIC_LINK  SOFT LINK 정보이나, 건드릴 일이 없음.
 192  $REPARSE_POINT  위의 속성 관련임. 역시 건드릴 일 없음.
 208  $EA_INFORMATION  OS/2와의 호환용
 224  $EA  위와 동일
 256  $LOGGED_UTILITY_STREAM  NT스테이션 2000 이후의 버젼에서 속성 암호화와 관련된 키값.

$ATTRIBUTE_LIST 속성이 속성들에 대해 접근하는 방법을 제시해 줍니다.

그래서 속성에 대한 접근은 속성으로 한다는 오묘한 말을 했지요.

-_-;

여기서, MFT 내용의 구성은 아래와 같이 이루어져서, MFT가 최종 완성이 됩니다.

MFT Entry header - 속성 Header - 속성 내용 - 속성 Header - 속성 내용 - 0xFFFFFFFF

0xFFFFFFFF는 이 엔트리가 끝난다는 End Marker이고, MFT 엔트리의 지정 크기를 넘어설 경우는 마지막 부분에 자동으로 위치하며,

채워야 하나 기록하지 못한 속성값은 다른 MFT 엔트리에 기록합니다.

또한, MFT 속성은 2개 꼴랑 있는것으로 끝나는 것이 아니며, 원하는 만큼 기록이 가능합니다.

MFT 엔트리가 MFT Entry Header/MFT Content로 구성되고,

MFT Content가 여러개의 속성으로 구성되며,

속성은 속성 Header/속성 Content로 구성된다고 보면 됩니다.

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

끝내 MFT에 대해 다 얘기하긴 했지만, 코드는 안짜보고 넘어가네요;

그림도 없고, 뭔가 내용도 대충 휘갈긴것 같고;

일단 파일시스템에 관한 내용은 여기서 끝내도록 하고, 앞으로 비정기적으로 안드로이드 개발중인 것으로 종종 때우겠습니다;