콘텐츠로 이동

NTFS 구조 (NTFS Structure)

Jan 27, 2026 · Updated Feb 11, 2026

NTFS(New Technology File System)는 Windows의 기본 파일 시스템으로, MFT(Master File Table) 기반 구조와 다중 데이터 스트림을 지원한다. “모든 것은 파일이다” — 메타데이터조차 파일로 저장한다. FAT 파일 시스템이 지원하지 않는 보안(ACL), 대용량, 안정성(저널링)을 제공한다.

비유하면, MFT는 도서관 카탈로그이다. 각 카드(MFT Entry)에 책 정보(속성)가 기록되어 있고, 책이 작으면 카드에 직접 붙여두고(Resident), 크면 서가 위치(Run List)만 기록한다.

NTFS Volume 구조
Boot Sector 부트 코드, MFT 위치
MFT Master File Table
Log File 트랜잭션 저널
Data Area 실제 파일 데이터
  • 클러스터: 디스크 할당의 최소 단위 (기본 4KB)
  • LCN (Logical Cluster Number): 볼륨 시작부터의 클러스터 번호
  • VCN (Virtual Cluster Number): 파일 내 상대적 클러스터 번호

볼륨의 모든 파일을 설명하는 레코드 배열이다.

Entry설명
0$MFT - MFT 자체
1$MFTMirr - MFT 처음 16개 엔트리 미러
2$LogFile - 트랜잭션 로그
3$Volume - 볼륨 이름, NTFS 버전
4$AttrDef - 속성 정의 테이블
5. (루트 디렉토리)
6$Bitmap - 클러스터 할당 비트맵
7$Boot - 부트 섹터 및 부트 코드
8$BadClus - 불량 클러스터 목록
사용자 파일들
MFT Entry (1~4KB)
Header 엔트리 헤더
$STANDARD_INFORMATION 생성/수정 시간 (Resident)
$FILE_NAME 파일명, 부모 참조 (Resident)
$DATA 파일 내용 (Resident 또는 Non-resident)
$SECURITY_DESCRIPTOR ACL (공유 참조)
$DATA:thumbnail 명명된 스트림 (선택적)
속성 저장 방식
상주 (Resident)
MFT 내 직접 저장 추가 디스크 접근 불필요
비상주 (Non-resident)
별도 클러스터에 저장 MFT에 익스텐트 포인터

파일은 여러 개의 명명된 데이터 스트림을 가질 수 있다. filename:streamname으로 접근하며, Macintosh 리소스 포크, 썸네일, 메타데이터 등에 활용된다.

B+ 트리 구조로 파일명을 인덱스하여 O(log n) 검색을 제공한다. 디렉토리 리스팅 시 MFT 조회 없이 파일명, 크기, 시간 복사본을 직접 참조할 수 있다.

파일 생성 과정 (report.docx)
1 MFT 레코드 할당
새 파일용 MFT 엔트리 생성
2 속성 저장
파일명, 생성 시간, 보안 디스크립터
3 데이터 저장 (상주)
작은 파일 → MFT 내 직접 저장
4 데이터 이동 (비상주)
파일 커지면 → 별도 클러스터, MFT에 포인터