NTFS 복구 메커니즘 (NTFS Recovery)
Jan 27, 2026 · Updated Feb 11, 2026
핵심 개념
섹션 제목: “핵심 개념”NTFS는 트랜잭션 로깅(저널링)을 통해 시스템 충돌 후에도 파일 시스템 메타데이터의 일관성을 빠르게 복구한다. UNIX의 fsck처럼 전체 디스크를 검사하면 대용량 볼륨에서 오래 걸리므로, 커밋된 트랜잭션과 미완료 트랜잭션을 구분하여 로그만 처리하는 방식을 사용한다.
비유하면, 은행 거래 장부와 같다. 각 거래를 장부에 먼저 기록하고, 그 다음 실제 계좌를 수정한다. 정전 시 장부를 보고 완료된 거래만 복원한다.
동작 원리
섹션 제목: “동작 원리”정상 동작 흐름
섹션 제목: “정상 동작 흐름”트랜잭션 처리 순서
1 트랜잭션 시작
2 로그 기록
Redo/Undo 레코드를 $LogFile에 기록 3 메타데이터 수정
메모리상에서 변경 4 Commit 기록
트랜잭션 완료 표시 5 체크포인트
5초 주기로 디스크에 기록 충돌 후 복구
섹션 제목: “충돌 후 복구”크래시 복구 순서
1 $LogFile 읽기
2 마지막 체크포인트 찾기
3 Redo
커밋된 트랜잭션의 변경 재적용 4 Undo
미커밋 트랜잭션의 변경 되돌리기 로그 파일 구조 ($LogFile)
섹션 제목: “로그 파일 구조 ($LogFile)”$LogFile 구조
Restart Area (×2) 체크포인트 정보 (이중화)
Logging Area 순환 큐 (circular queue)
Logging Area 안에는 Redo/Undo 레코드, Commit 레코드, Checkpoint 레코드가 순차적으로 기록된다.
로그 레코드 종류
섹션 제목: “로그 레코드 종류”| 레코드 | 설명 |
|---|---|
| Redo | 변경 적용 방법 (커밋 후 재적용용) |
| Undo | 변경 취소 방법 (롤백용) |
| Commit | 트랜잭션 성공적 완료 표시 |
| Checkpoint | 현재 활성 트랜잭션 상태 스냅샷 |
Log File Service (LFS)
섹션 제목: “Log File Service (LFS)”NTFS의 로깅 기능을 제공하는 컴포넌트이다. 로그 레코드 기록과 복구를 수행하며, 로그 공간 부족 시 I/O를 일시 중단하고 캐시를 플러시한 후 로그를 리셋한다.
파일 이름 변경 시나리오:
- 파일 이름 변경 트랜잭션 시작
- $LogFile에 “파일명 A→B 변경” Redo/Undo 기록
- MFT와 디렉토리 인덱스 수정 (메모리)
- Commit 레코드 기록
- 이 시점에서 충돌 발생
- 재부팅 시: Commit 레코드 확인 → Redo 적용 → 정상 상태 복원
관련 개념
섹션 제목: “관련 개념”- NTFS 구조 - $LogFile이 저장되는 NTFS 볼륨의 MFT 기반 구조
- 저널링 파일 시스템 - UNIX 계열 파일 시스템의 WAL 기반 저널링 기법으로, NTFS 복구와 유사한 접근
- ZFS (Zettabyte File System) - COW 방식으로 저널링 없이도 일관성을 보장하는 대안적 접근
- I/O Manager와 IRP (Windows) - NTFS 드라이버가 IRP를 처리하며 $LogFile에 트랜잭션을 기록
- UNIX 블록 버퍼 캐시 - NTFS 복구가 해결하는 dirty 캐시 손실 문제의 UNIX 대응물