1. 저널링 (Journaling) 이란?
ㅇ 시스템의 변경 사항을 기록(log 또는 journal) 하여,
- 오류나 장애 발생 시에, 데이터를 일관성 있게 복구할 수 있도록 하는 기법
. 주로, 복원 가능한 정보 만을 저널 로그에 남기는 수단에 의함
2. 파일시스템 저널링 (Journaling File System)
ㅇ 디스크에 저장된 파일시스템 메타데이터의 변경 사항을 저널에 먼저 기록한 뒤 반영하는 방식.
- 例) ext3/ext4 (Linux), NTFS (Windows), XFS, JFS 등
ㅇ 기본 동작 과정
- 파일 생성, 삭제, 이름 변경 등 메타데이터 변경 요청 발생하면,
- 해당 변경 내용을 저널 영역(Journal area)에 순차적으로 기록하고,
- 저널 기록이 완료되면, 실제 파일시스템 구조에 반영
- 만일, 시스템이 비정상 종료되면, 부팅 시 저널 내용 만을 읽어, 미완료된 작업 만 복구
ㅇ 장점
- 비정상 종료 후에도 빠른 복구 (fsck 등 긴 검사 불필요)
- 파일시스템 일관성(consistency) 유지
ㅇ 단점 : 매번 파일 갱신 시간이 길어짐
3. 데이터베이스 저널링 (Database Journaling / Logging)
ㅇ 데이터베이스의 트랜잭션(작업 단위) 수행 기록을 남겨,
- (이런 기록 행위를, 보통 "로그(log)" 또는 "트랜잭션 로그(transaction log)"라고 부름)
- 장애 발생 시에, 트랜잭션 단위로 롤백(rollback) 또는 재실행(redo) 가능하게 하는 기술
ㅇ 기본 동작 과정
- DBMS는 변경을 적용하기 전, 저널 로그 파일에 먼저 기록 : (Write-Ahead Logging, WAL)
- 시스템 장애 시, 저널 로그를 이용해,
. 완료된 트랜잭션은, redo(재적용)
. 미완료 트랜잭션은, undo(취소)
ㅇ 저널 로그 종류
- Redo Log : 커밋 완료된 트랜잭션의 변경사항 재적용용
- Undo Log : 미완료 트랜잭션의 변경사항 되돌리기용
- Checkpoint Log : 특정 시점의 데이터베이스 상태 스냅샷 기록 (복구 성능 향상용)
4. [요약 비교] (범례 : ① 파일시스템 저널링, ② 데이터베이스 저널링
ㅇ 보호 대상 : ① 파일시스템 구조 보호, ② 트랜잭션 단위 복구
ㅇ 기록 대상 : ① 상태 변경 전후 정보, ② 메타데이터 및 일부 데이터 블록
ㅇ 기록 시점 : ① 변경 전, ② 변경 전 (WAL 원칙)
ㅇ 복구 단위 : ① 파일 단위, ② 트랜잭션 단위