함께 배워가는 학생개발자
Ext Journaling 본문
Ext3, 4의 저널에 저장된 메타데이터를 사용한 파일 복구 개요
파일시스템 저널링은 디스크에 데이터를 쓰기 전에 모든 파일 시스템 변화의 로그를 보관할 수 있도록 하는 파일시스템 타입이다.
이 로그를 저널이라고 하며 보통 파일시스템의 할당된 공간에 있는 순환 로그이다. 저널을 이용하여 비정상적인 종료시 손상을 방지할 수 있다. 저널은 Ext뿐 만 아니라 다른 파일 시스템 NTFS, JFS, JFS2 등에도 사용된다.
* 파일 시스템 : 파일 시스템의 구조를 기술하며, 데이터 단위의 크기, 구조 오프셋, 마운트 정보, 그룹 디스크립터 등 정보가 포함된다.
* 메타 데이터 : 파일의 특징과 구조를 설명하는 정보를 포함한다. 이를 inode라고 한다. 파일 소유자(owner) 식별자, 파일 타입, 파일 접근 권한, 파일 크기 및 블록포인터의 정보를 가지고 있다.
Ext3 application layer에 대한 정보는 저널이라고 불린다. 이 구조는 파일 시스템에 변경사항을 저장하며 Ext2와 주요 차이점이다.
Ext3 저널링의 세 가지 모드를 제공하며, 차이점은 저널이 저장하는 데이터와 성능에 영향을 미치는 방법이다.
- Journal : 모든 파일 시스템 데이터 및 메타데이터 변경사항을 기록한다. Journaling 모드는 파일 시스템에서 변경된 내용의 손실 가능성을 최소화한다. 이 모드는 데이터가 두 번 써지기 때문에 (저널에 한 번, 파일 시스템에 한 번) 세 가지 모드 중에 가장 느린 단점이 있다.
- Ordered : 파일 시스템 메타데이터(INode)에 대한 변경 사항만 기록하되, 관련 파일 시스템 메타데이터를 변경하기 전에 업데이트를 디스크에 flush하여 저널이 데이터 쓰기와 동기화 되도록 한다. defulat 모드이다.
- Write back : 파일 시스템의 메타 데이터에 대한 변경 사항만 기록하지만 표준 파일 시스템 write process를 사용하여 파일 데이터 변경사항을 디스크에 write한다. 제일 빠르지만 파일 손실 가능성이 제일 크다.
저널의 첫번째 구조를 Journal Superblock이라고 하며 저널의 블록 크기, 저널이 스토리지에 사용 가능한 총 블록 수, 저널의 시작위치, 첫번째 트랜잭션의 시퀀스 번호, 첫번째 저널에 대한 정보를 가지고 있다. 그 다음 트랜잭션이 있고 저널에 대한 일반 구조 정보가 있다. 저널의 메커니즘은 트랜잭션의 순서를 사용하여(빨강, 파랑..) 파일 시스템의 변경 사항을 추적한다. 트린잭션 순서는 다음과 같이 구성된다.
- Descriptor block : 모든 트랜잭션의 시작 부분에 있는 블록이다.
- Metadata block : 각 트랜잭션마다 하나 이상의 메타데이터 블록이 있으며 변경 사항이 메타데이터 블록에 기록된다.
- Commit block : 저널 모드에 따라 성공적인 트랜잭션의 끝을 나타낸다.
- Revoke block : 작업 중에 비정상적인 오류가 발생하면 revoke block이 생성되고 일관성 검사 중에 복원해야 하는 파일 시스템 블록 목록이 유지된다.
빨간색, 파란색 각각을 트랜잭션이라고 한다.
저널링 메커니즘은 블록 level에서 작동하며 파일시스템의 메타데이터(INode)가 약간이라도 수정되면 그 INode가 있는 전체 블록이 저널에 복사된다.
* 저널 라이프 사이클
저널은 파일시스템이 해제되고 다시 마운트 될 때마다 다시 시작되거나 저널이 가득 찰 때마다 순환 list처럼 첫 번째 블록을 재사용하여 다시 시작한다.
파일 시스템이 마운트 될 때 저널 블록 1에서 시퀀스 번호가 증가하였고 일련의 파일이 파일 시스템에 복사되었다. 파일을 복사 한 후 시퀀스 번호가 순차적으로 증가한다. 마운트가 해지되면 다시 저널 블록 1부터 트랜잭션이 쌓아진다. 저널을 덮어 쓰면 이전 마운트에 사용된 이전 마운트의 나머지 트랜잭션이 사라지므로 주의한다. 이미지를 마운트 할 때는 읽기 전용 옵션을 사용해야 해시값이 변하지 않는다.
참고 : Taking advantage of Ext3 journaling file system in a forensic investigation
'현장실습' 카테고리의 다른 글
Ext4 파일시스템 구조 (0) | 2020.07.14 |
---|---|
저널 데이터 구조 (0) | 2020.07.13 |
파일시스템 Ext4 저널링 (0) | 2020.07.13 |
6/23 두번째날 (0) | 2020.06.23 |