컴퓨팅 시스템에서 저널링(Journaling)이란, 주로 저장 장치(Storage) 시스템에서 데이터의 무결성(Integrity)과 장애 복구(Crash Recovery) 시간을 보장하기 위해, 실제 데이터를 변경하기 전에 그 변경 이력(트랜잭션)을 디스크의 저널(Journal)이라는 특정 영역에 미리 기록하는 기술을 의미합니다.
이는 데이터베이스 관리 시스템(DBMS)의 로그 기록(Logging) 기법과 유사하게, 원자성(Atomicity)을 확보하고 시스템 충돌 시 일관성(Consistency) 있는 상태로의 복구(Recovery)를 신속하게 수행하는 것을 목적으로 합니다.
저널링은 파일 시스템에 가해지는 일련의 변경 작업(예: 파일 생성, 삭제, 이름 변경 등)을 하나의 트랜잭션(Transaction)으로 간주하고, 이 트랜잭션의 원자성(Atomicity)을 보장하는 것을 목표로 합니다.
저널링 파일 시스템(Journaling File System, 예: Ext3, Ext4, NTFS, XFS)에서의 데이터 변경은 크게 세 단계를 거쳐 원자성을 확보합니다.
저널링 시스템은 성능과 안정성의 균형을 위해 저널에 무엇을 기록할지에 따라 세 가지 주요 모드를 가집니다.
| 모드 | 기록 대상 | 성능 | 안정성 | 설명 |
|---|---|---|---|---|
| Writeback | 메타데이터만 | 가장 높음 | 가장 낮음 | 실제 데이터는 저널에 기록하지 않고 바로 메인 파일 시스템에 기록. 충돌 시 메타데이터는 일관성이 보장되지만, 실제 데이터와 메타데이터의 불일치(Data Inconsistency) 발생 가능. |
| Ordered | 메타데이터만 | 중간 | 중간 | 메타데이터를 저널에 커밋하기 전에 실제 데이터를 메인 파일 시스템에 먼저 쓰도록 순서를 강제함. 메타데이터와 데이터의 불일치 가능성을 최소화. (Ext3의 기본 모드) |
| Data | 메타데이터 & 실제 데이터 | 가장 낮음 | 가장 높음 | 모든 변경 사항(메타데이터와 실제 데이터)을 저널에 기록한 후 메인 파일 시스템에 반영. 가장 높은 안정성을 제공하나, 모든 쓰기가 이중으로 발생하므로 성능 오버헤드가 가장 큼. |
시스템 충돌(예: 정전) 발생 시, 저널링 파일 시스템은 파일 시스템 검사(fsck)를 수행하는 대신 저널 영역만 검사하여 훨씬 빠르게 복구를 완료합니다.
이러한 Write-Ahead Logging (WAL, 선행 기록 로깅) 원칙을 통해, 시스템 중단 이후에도 빠른 시간 내에 일관성 있는 상태(Consistent State)로 복구되어 파일 시스템 검사(fsck, File System Check)에 소요되는 시간을 획기적으로 단축합니다.