이번 글에서는 Extents tree에 대해서 알아 볼 것이다.

Extents tree는 Ext4 파일시스템에서 새로 생긴 기능으로 이전 버전들의 블록 맵을 대체하는 기능이다.

제일 중요한 요점은 블록 할당을 연속으로 하려는 것이다. 

Extents tree에는 다른 tree들처럼 인덱스 노드와 리프노드가 존재하고 공통적인 헤더(12byte)가 존재한다.

[그림 1 - 헤더 오프셋]

만약 헤더에서 인덱스 노드로 정의되면 해당 노드는 아래와 같은 오프셋 구조를 가지게 된다.

[그림 2 - 인덱스 노드 오프셋]

또 헤더에서 리프노드로 정의되면 해당 노드는 아래와 같은 오프셋 구조를 가지게 된다.

[그림 3 - 리프 노드 오프셋]

아래는 Extents Tree의 전체적인 흐름을 가식화 한 것이다. 

 [그림 4 - Extents Tree(출처 : IBM 문서(cao_m.pdf))]

 

'[+] Forensic' 카테고리의 다른 글

File System - ReFS (2)  (0) 2012.03.13
File System - ReFS (1)  (0) 2012.03.12
File System - Ext4 (5)  (0) 2012.03.11
File System - Ext4 (4)  (0) 2012.03.11
File System - Ext4 (3)  (0) 2012.03.11
이번 글에서는 파일이나 디렉토리의 메타데이터를 저장하고 있는 inode 데이터 구조체에 대해 알아 볼 것이다.

Ext4 파일시스템 이전 버전들은 inode의 표준 크기가 128byte 이었는데 Ext4 파일시스템에서는 256byte로 늘어났다.

알고 있듯이 inode는 inode 테이블에 있고 inode 테이블 위치는 그룹 기술자에 정의되어 있다. 또 그룹 별 inode 수는 슈퍼 블록에 정의되어 있다.

아래는 Ext4 파일시스템 inode 오프셋 구조이다.

[그림 1 - inode 오프셋]

 - 모드 타입 : inode가 할당 된 파일이나 디렉토리의 타입과 권한을 나타내는 필드이며, Ext4 파일시스템 이전 버전들과 동일하다.
 
 - 플래그 : inode의 플래그를 나타내는 필드로 아래와 같은 플래그들이 설정 될 수 있다.

 [그림 2 - 플래그 목록]

오프셋 구조를 보면 156byte 까지만 나와 있는데 앞서 설명 할 때에는 inode 크기가 256byte라고 하였다. 

나머지 오프셋들은 현재 정확하지는 않지만 확장 속성을 위해서 쓰여질 것이라 보인다.

'[+] Forensic' 카테고리의 다른 글

File System - ReFS (1)  (0) 2012.03.12
File System - Ext4 (5)  (0) 2012.03.11
File System - Ext4 (4)  (0) 2012.03.11
File System - Ext4 (3)  (0) 2012.03.11
File System - Ext4 (2)  (0) 2012.03.09
계속해서 Ext4 파일시스템에 데이터 구조체들을 알아보자.

이번에는 그룹 기술자에 대해서 알아볼텐데, 그룹 기술자는 Ext4와 별반 다르지 않다. 하지만 64bit 기능이 활성화되면 크기가 64byte로 늘어나고 비 활성화라면 그 크기는 Ext4 파일시스템 이전 버전들과 동일하게 32byte이다.

그룹 기술자 오프셋 구조는 아래와 같으며 32byte를 포함하는 64byte 크기의 그룹 기술자만 알아보도록 하겠다.

[그림 1 - 그룹 기술자 오프셋]

 - 그룹 플래그 : 그룹 기술자에 대한 플래그 필드로 아래와 같은 플래그 목록들이 설정 될 수 있다.

[그림 2 - 그룹 플래그 목록]

필드는 많지만 결국 Ext4 파일시스템 이전 버전들의 그룹 기술자 오프셋 필드들이 나누어져 있고 내용은 특별히 변한게 없었다는 것을 알 수 있을 것이다.

 

'[+] Forensic' 카테고리의 다른 글

File System - Ext4 (5)  (0) 2012.03.11
File System - Ext4 (4)  (0) 2012.03.11
File System - Ext4 (3)  (0) 2012.03.11
File System - Ext4 (2)  (0) 2012.03.09
File System - Ext4 (1)  (0) 2012.03.09
이번 글에서는 Ext4의 전체적인 레이아웃과 슈퍼블록에 대해서 알아 볼 것이다.

Ext4도 결국 파일시스템 전체 레이아웃은 Ext4 파일시스템 이전버전들과 동일하다. 하지만 블록 그룹의 레이아웃이 약간 다르다.

[그림 1 - Ext4 블록 그룹 레이아웃]

 - Group 0 padding : 32(x86)bit 시스템 부트 섹터 등을 위한 영역이며, 크기는 1024byte이다.

 - Reserved GDT block : 파일시스템의 확장을 위해 예약되어 있는 영역이다.

 * 참고 : 보통 슈퍼블록, 데이터 블록 비트맵, inode 비트맵은 블록 1개 크기이다.

 이제 슈퍼블록을 알아보자.

[슈퍼블록]
Ext4에서도 슈퍼블록의 역할을 대부분 비슷하다. 슈퍼블록에는 sprase_super라는 플래그 기능이 있는데 이 플래그가 설정 되면 슈퍼블록 및 그룹 기술자 백업본은 그룹 번호, 0, 3, 5, 7에 존재하게 되며 플래그가 설정되어 있지 않으면 모든 그룹에 존재하게 된다. 아래는 슈퍼블록의 오프셋 구조이다.

[그림 1 - 슈퍼블록 오프셋]

 - 블록 크기 계산에 필요한 필드 : 블록 크기는 아래 공식으로 계산 할 수 있다.
     1)   2 ^ (10+해당 필드 값) 

 - 파일시스템 상태 플래그 : 파일시스템의 상태를 나타내는 필드로 Ext4 파일시스템 이전 버전들과 동일하다. 


 - 오류 감지 후 행위 플래그 : 오류 감지 후 어떠한 조치를 취해야 할지 결정 해주는 플래그가 설정되는 필드로 Ext4 파일시스템 이전 버전들과 동일하다.


 - OS 종류 : 해당 파일시스템을 생성한 OS 종류를 나타내는 필드로 Ext4 파일시스템 이전 버전들과 동일하다. 


 - 레벨 플래그 : 파일시스템 버전을 나타내는 필드로 Ext4 파일시스템 이전 버전들과 동일하다.

 - 호환 기능 세트 플래그 : 호환성 기능을 나타내는 필드로 Ext4 파일시스템 이전 버전들과는 조금 차이가 있다.

[그림 2 - 호환 기능 세트 플래그]

 - 비 호환 기능 세트 플래그 : 비 호환성 기능을 나타내는 필드이다.

[그림 3 - 비 호환 기능 세트 플래그]

 - 읽기 전용 호환 기능 세트 플래그 : 읽기 전용 호환 기능 세트 플래그를 나타내는 필드이다.

[그림 4 - 읽기 전용 호환 기능 세트 플래그]

 

 - 디렉토리 해시에 사용할 해시 알고리즘 : 디렉토리 해시 알고리즘을 나타내는 필드이다.

[그림 5 - 디렉토리 해시 알고리즘 플래그 목록]

 - 마운트 옵션 : 파일시스템이 마운트 될 때의 옵션을 결정하는 필드이다.

[그림 6 - 마운트 옵션 플래그]

 - 기타 플래그 : 비 필수 플래그를 나타내는 필드이다.

[그림 7 - 기타 플래그 목록]

 - 블록 그룹 크기 : 블록 그룹의 크기를 결정하는 필드로 아래 공식을 사용하여 블록 그룹의 크기를 구할 수 있다.
     1) 2 ^ 해당 필드 값 

 

'[+] Forensic' 카테고리의 다른 글

File System - Ext4 (4)  (0) 2012.03.11
File System - Ext4 (3)  (0) 2012.03.11
File System - Ext4 (2)  (0) 2012.03.09
File System - Ext4 (1)  (0) 2012.03.09
File System - UFS (9)  (0) 2012.03.08
이번 글 부터는 Ext4 파일시스템에 대하여 알아 볼 것이다.

Ext4 파일시스템은 Ext3 파일시스템의 개선버전으로 현재 대부분 리눅스에서 사용중이며 포렌식 분석 도구들도 해당 파일시스템 분석을 지원하고 있다.

많은 부분이 앞서 설명하였던 Ext 파일시스템과 동일하여 따로 파일시스템의 참조모델별로 분류하여 설명하지 않고 달라진 부분과 특징 등에 대해서 다루어 볼 것이다.

일단 Ext4 파일시스템에 특징 부터 알아보자.

[Ext4 특징]

 - 대용량 파일시스템 : Volume 크기는 1EiB, 파일 용량은 16TB까지 지원한다.

 - Extents : 이전 Ext 파일시스템은 Block mapping을 지원하였는데 Ext4 파일시스템 부터는 Extents 방식을 지원하여 블록 단편화 현상을 줄여준다.

 - 호환성 : Ext4 이전의 파일시스템을 Ext4형식으로 변경하여 Ext4 파일시스템에 마운트 하여 성능향상 상태로 사용 할 수 있다. 또 Ext4 파일시스템을 Ext4 이전 파일시스템에 마운하여 사용 할 수도 있다.

 * 참고 : Ext4 파일시스템에서 Block mapping 대신 Extents를 사용한다면 Ext4 이전 파일시스템에 마운트 될 수 없다.

 - 저널 체크섬 : 이전 Ext 파일시스템에는 없던 저널 체크섬이 추가되었다.

 - 64000개 서브 디렉토리 : Ext4 파일시스템 이전 버전들은 서브 디렉토리의 최대 개수가 32000개 였다. 하지만 이번 버전에서는 64000개로 늘어나 조금 더 많은 디렉토리를 생성 할 수 있게 되었다.

 - 온라인 조각 모음 : Ext4 파일시스템에서 새로 생긴 기능이다.

 - 파일시스템 검사 속도향상 : 파일시스템에서 사용하지 않는 부분을 건너띄고 검사하여 검사 속도가 향상되었다.

 - 타임스탬프 : Ext4 파일시스템 이전 버전에서는 초 단위로 1901년 12월 14일 ~ 2038년 1월 18일까지 시간을 기록 할 수 있었지만 Ext4 파일시스템부터는 나노초로 계산되며 1901년 12월 14일 ~ 2514년 4월 25일 까지 기록 할 수 있게 되었다.

 - 지연할당 : 해당 기능은 Ext4 파일시스템에서 새로 생긴 기능으로 어떤 파일에 대한 블록 할당을 최대로 지연하여 가능한 연속블록에 할당 되게끔 하는 기능이다.

 - 멀티블록할당 : Ext4 파일시스템 이전 버전에서는 파일 기록에 여러 블록이 필요하면 보통 떨어져 있는 블록들을 할당하여 파일을 기록하곤 했는데 Ext4 파일시스템 버전부터는 멀티블록할당자를 통해 블록 여러개를 동시에 할당하여 블록이 연속되어 할당 되게끔 한다. 또 이러한 기능으로 인해 블록 호출 회수가 줄어들어 할당 속도도 빨라졌다. 

 

'[+] Forensic' 카테고리의 다른 글

File System - Ext4 (3)  (0) 2012.03.11
File System - Ext4 (2)  (0) 2012.03.09
File System - Ext4 (1)  (0) 2012.03.09
File System - UFS (9)  (0) 2012.03.08
File System - UFS (8)  (0) 2012.03.07

+ Recent posts