EXT

Digital Forensic Wikipedia
(Ext2에서 넘어옴)
둘러보기로 가기 검색하러 가기

파일시스템 역사[편집]

리눅스의 가장 기본이 되고 오래된 파일 시스템은 미닉스 파일시스템이다. 미닉스는 1987년 앤드류 타넨바움(Andrew S.Tanenbaum)교수가 교육용 유닉스 클론으로 만든 오픈소스 운영체제이다. 처음 나온 것은 늘 그렇듯이 많은 제약사항을 가지고 있다. 우선 파일시스템의 최대 크기가 64MB이었으므로, 최대로 저장할 수 있는 파일 크기가 64MB밖에 되지 않았다. 또한 파일 이름의 최대 길이는 30자까지였으며, 가변 블록이나 타임스탬프 등이 지원되지 않았다. 이러한 미닉스 파일시스템의 제한으로 인해 사람들은 리눅스에서 새로운 파일시스템을 검토했고 작업을 시작했다. 그 결과 Linux에서는 미닉스 파일시스템을 기반으로 한 ext 파일시스템이 개발됐다. ext 파일시스템은 별도 액세스(separate access), 아이노드 수정(inode modification), 데이터수정 타임스탬프(data modification time stamps)에 대한 지원이 없었다. 후에 ext2 파일시스템으로 발전하면서 이러한 문제들은 해결됐다. 현재에 와서는 ext2에 저널링(Journaling) 개념을 도입시킨 ext3가 기본 파일시스템이다. 현재까지 네 번째 Extended File System(ext4)이 발표되었다. Ext4 파일시스템에는 성능, 확장성 및 신뢰성을 향상시킨 수많은 새 기능이 도입되었으며, 가장 눈에 띄는 특징은 ext4가 1EB(exabyte)의 파일시스템을 지원한다는 것이다.

파일시스템 특징[편집]

EXT(Extended File System)는 리눅스용 파일 시스템 가운데 하나로 현재 리눅스 배포 판에서 주 파일 시스템으로 사용되고 있다.


Ext2 파일시스템의 특징
특징 Ext2 Ext3 Ext4
도입일 1993년 1월 2001년 11월 불안정판 : 2006년 10월
안정판 : 2008년 10월
도입 운영체제 리눅스 리눅스 2.4.15 불안정판 : 리눅스 2.6.19
안정판 : 2.6.28
파티션 ID MBR : 0x83
GPT : EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
MBR : 0x83
GPT : EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
MBR : 0x83
GPT : EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
디렉터리 구조 - - Linked List, Hashed B-tree
파일 구조 Bitmap(여유 공간), Table(메타데이터) Bitmap(여유 공간), Table(메타데이터) extents, Bitmap
불량블록 구조 Table Table Table
최대 파일 크기 16GB - 2TB 16GB - 2TB 16TB
최대 파일 수 1018 가변 40억
최대 파일이름 길이 255 Byte 255 Byte 256Byte
최대 볼륨 크기 2TB - 32TB 2TB - 16TB 1EiB
날짜 사용권한 수정, 특성, 수정, 접근 수정, 특성, 수정, 접근 수정, 특성, 수정, 접근, 삭제, 작성
날짜 범위 1901.12.14 - 2038.01.18 1901.12.14 - 2038.01.18 1901.12.14 - 2515.04.25
날짜 정밀도 1초 1초 나노초
파일 시스템 권한 POSIX 유닉스 허가, 접근제어 리스트, 임의 보안 특성 POSIX
압축 지원여부 지원하지 않음 (패치를 통해 사용가능) 지원하지 않음 (비공식 패치를 통해 사용가능) 지원하지 않음
암호화 지원여부 지원하지 않음 지원하지 않음 (블록 장치 수준에서 제공됨) 지원하지 않음
운영 체제 리눅스, BSD, Windows(IFS), OS X(IFS) 리눅스, BSD, Windows(IFS) 리눅스, Windows(Ext2fsd)

[[구조 분석/EXT|구조 분석]][편집]

Ext 파일시스템은 크게 Boot Sector와 Block Group으로 구분된다. 블록은 기본적으로 데이터를 저장하는 단위를 나태나며, 저장 장치에서 한번의 I/O 과정에서 수행되는 단위가 된다. 블록의 사이즈는 파일시스템 생성 시 크기를 지정할 수 있다. Boot Sector는 보통 Block Group 0번 앞에 1MB를 차지하며, MBR(Master Boot Record)을 포함해 LILO(LInux Loader) 또는 GRUB(Grand Unified Bootloader) Boot Loader가 저장된다. 한편, 모든 Block Group들은 Super Block 및 Group Descriptor의 복사 본을 가짐으로써 파일시스템의 중요 메타데이터(Metadata) 정보를 보호한다. 또한, 모든 Block Group들은 마지막 Block Group을 제외하고는 모두 같은 블록 개수를 가진다.

Ext Filesystem Layout의 기본 형태



Block Group은 블록들의 모임이며, 크게 Super Block, Group Descriptor, Data Block Bitmap, inode Bitmap, inode Table, Data Blocks으로 구분된다. 맨 처음 블록그룹인 Block Group 0의 경우 Super Block 앞에 Boot Sector로 사용되는 1024byte의 예약된 공간을 가지고 있지만 일반적인 파티션에서는 Boot Sector가 거의 사용되지 않기 때문에 보통 ‘0’으로 채워져 있다.

Ext Filesystem Layout의 기본 형태



[[메타데이터/EXT|메타데이터]][편집]

EXT 파일시스템에서의 메타데이터는 Directory Entry를 통해 확인할 수 있다. Directory Entry는 파일 혹은 Directory의 이름을 저장하기 위해 사용하는 것으로 Directory에 할당된 블록에 위치하며 해당 파일이나 Directory가 위치한 inode의 주소를 포함하고 있다. Directory Entry의 구조는 /usr/include/linux/ext2_fs.h에서 확인이 가능하며 2가지 형식이 있고 어떤 형식을 사용할지는 Super Block에서 결정된다.



[[파일 추출 기법/EXT|파일 추출 기법]][편집]

Ext 파일시스템은 파일의 메타데이터 정보를 inode 구조를 통해 저장하고 있다. 따라서 inode 구조가 저장되는 위치를 파악하여 메타데이터를 확인 해볼 필요가 있다.

[[데이터 복구/EXT|데이터 복구]][편집]

파일시스템 시작 부분에 있는 Super Block 데이터 구조체는 Ext 파일 시스템의 기본적인 Layout 정보를 저장한다. 파일 내용을 연속적인 Sector들의 Group인 블록에 저장한다. 각 파일과 Directory의 메타데이터를 inode라는 데이터 구조체에 저장하며, inode는 고정된 크기를 갖고 inode Table에 위치한다. 각 Block Group에는 한 개의 inode Table이 있다. 파일의 부모 Directory Block에 위치한 Directory Entry 구조체는 파일 이름을 저장한다. 따라서 Directory Entry, inode, 블록들의 관계로 부터 데이터 복구를 할 수 있다.

Ext Filesystem Layout의 기본 형태



[[로그 & 저널 분석/EXT|로그 & 저널 분석]][편집]

저널링 기법은 데이터베이스의 기본적인 특징 중 하나인 데이터 백업체계를 파일 시스템에 구현한 것이라고 볼 수 있다. 저널링 기법은 Ext3부터 추가되었으며 Ext3,4에서 지원하는 저널링 모드는 3가지가 있다.

[[은폐 대응/EXT|은폐 대응]][편집]

파일 은폐 대응은 컴퓨터 사용자가 운영체제의 기본적인 숨긴 설정된 시스템 파일 이외에 의도적으로 데이터를 은닉하고자 한 가능성을 열어두고 그에 대한 꼼꼼한 분석을 하자는 데 그 의의가 있다.

참고문헌[편집]