리눅스 운영체제는 다양한 파일 시스템을 지원합니다
그중에서 이번에는 저널링 파일 시스템에 대해 정리했습니다
저널링 파일 시스템은 디스크에 파일 변경 작업을 적용하기 전에
저널이라는 로그 영역에 변경내용을 먼저 기록해두는 파일 시스템입니다
리눅스 운영체제가 전원 차단, 시스템 충돌 등의 문제로 갑자기 종료되어
파일 시스템이 멈추면 데이터의 일관성이 깨질 수 있습니다
이때 저널링 파일 시스템은 변경 작업을 먼저 로그에 기록한 뒤
디스크에 반영하기 때문에, 장애 발생 시에도 빠르게 복구할 수 있습니다
저널링 파일 시스템은 다음 방식으로 동작합니다
1. 파일에 변경이 생기면 저널 영역에 변경내용을 기록합니다
2. 로그가 안전하게 기록되면 실제 파일 시스템에 반영합니다
3. 반영이 끝나면 저널 로그는 제거됩니다
4. 시스템 장애 시, 저널에 기록된 로그를 기반으로 복구를 수행합니다
리눅스 초기에 사용하던 ext2 파일 시스템의 경우 오류가 발생하면
어떤 파일 작업이 완료되었고 중단되었는지 알 수 없었습니다
따라서 이를 복구하기 위해 fsck(file system check) 명령을 직접 관리자가 입력해야했습니다
fsck는 검사해야하는 영역이 많기 때문에, 동작하는데 많은 시간이 걸리는 단점이 존재했습니다
이러한 과거의 단점을 저널링 파일 시스템을 통해 보완하였습니다
시스템이 파일을 실제로 수정하기 전에, 저널 로그에 변경 내용을 먼저 기록하므로
오류발생 시에도 fcsk없이 로그만 검사해 빠르게 복구할 수 있습니다
따라서 데이터 손실 위험도 줄이면서 복구 시간도 단축되는 장점을 얻게 되었습니다
로그에 저장하는 과정에서 저널링 오버헤드가 발생하기 때문에 성능 자체는 저하됩니다
또한 저널 영역자체가 손상되면 복구가 어렵다는 단점도 존재합니다
하지만 그럼에도 저널 로그를 바탕으로 빠르고 안정적인 파일 시스템 환경을 구축할 수 있습니다
따라서 대부분의 최신 리눅스 버전은 저널링 기능이 포함된 ext3, ext4, XFS와 같은
파일 시스템을 기본으로 채택하고 있습니다