콘텐츠로 이동

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 구조
Restart Area (×2) 체크포인트 정보 (이중화)
Logging Area 순환 큐 (circular queue)

Logging Area 안에는 Redo/Undo 레코드, Commit 레코드, Checkpoint 레코드가 순차적으로 기록된다.

레코드설명
Redo변경 적용 방법 (커밋 후 재적용용)
Undo변경 취소 방법 (롤백용)
Commit트랜잭션 성공적 완료 표시
Checkpoint현재 활성 트랜잭션 상태 스냅샷

NTFS의 로깅 기능을 제공하는 컴포넌트이다. 로그 레코드 기록과 복구를 수행하며, 로그 공간 부족 시 I/O를 일시 중단하고 캐시를 플러시한 후 로그를 리셋한다.

파일 이름 변경 시나리오:

  1. 파일 이름 변경 트랜잭션 시작
  2. $LogFile에 “파일명 A→B 변경” Redo/Undo 기록
  3. MFT와 디렉토리 인덱스 수정 (메모리)
  4. Commit 레코드 기록
  5. 이 시점에서 충돌 발생
  6. 재부팅 시: Commit 레코드 확인 → Redo 적용 → 정상 상태 복원