본문 바로가기

Ext4 파일시스템

File System - Ext4 (5) 이번 글에서는 Extents tree에 대해서 알아 볼 것이다. Extents tree는 Ext4 파일시스템에서 새로 생긴 기능으로 이전 버전들의 블록 맵을 대체하는 기능이다. 제일 중요한 요점은 블록 할당을 연속으로 하려는 것이다. Extents tree에는 다른 tree들처럼 인덱스 노드와 리프노드가 존재하고 공통적인 헤더(12byte)가 존재한다. [그림 1 - 헤더 오프셋] 만약 헤더에서 인덱스 노드로 정의되면 해당 노드는 아래와 같은 오프셋 구조를 가지게 된다. [그림 2 - 인덱스 노드 오프셋] 또 헤더에서 리프노드로 정의되면 해당 노드는 아래와 같은 오프셋 구조를 가지게 된다. [그림 3 - 리프 노드 오프셋] 아래는 Extents Tree의 전체적인 흐름을 가식화 한 것이다. [그림 4 -.. 더보기
File System - Ext4 (3) 계속해서 Ext4 파일시스템에 데이터 구조체들을 알아보자. 이번에는 그룹 기술자에 대해서 알아볼텐데, 그룹 기술자는 Ext4와 별반 다르지 않다. 하지만 64bit 기능이 활성화되면 크기가 64byte로 늘어나고 비 활성화라면 그 크기는 Ext4 파일시스템 이전 버전들과 동일하게 32byte이다. 그룹 기술자 오프셋 구조는 아래와 같으며 32byte를 포함하는 64byte 크기의 그룹 기술자만 알아보도록 하겠다. [그림 1 - 그룹 기술자 오프셋] - 그룹 플래그 : 그룹 기술자에 대한 플래그 필드로 아래와 같은 플래그 목록들이 설정 될 수 있다. [그림 2 - 그룹 플래그 목록] 필드는 많지만 결국 Ext4 파일시스템 이전 버전들의 그룹 기술자 오프셋 필드들이 나누어져 있고 내용은 특별히 변한게 없었다.. 더보기
File System - Ext4 (2) 이번 글에서는 Ext4의 전체적인 레이아웃과 슈퍼블록에 대해서 알아 볼 것이다. Ext4도 결국 파일시스템 전체 레이아웃은 Ext4 파일시스템 이전버전들과 동일하다. 하지만 블록 그룹의 레이아웃이 약간 다르다. [그림 1 - Ext4 블록 그룹 레이아웃] - Group 0 padding : 32(x86)bit 시스템 부트 섹터 등을 위한 영역이며, 크기는 1024byte이다. - Reserved GDT block : 파일시스템의 확장을 위해 예약되어 있는 영역이다. * 참고 : 보통 슈퍼블록, 데이터 블록 비트맵, inode 비트맵은 블록 1개 크기이다. 이제 슈퍼블록을 알아보자. [슈퍼블록] Ext4에서도 슈퍼블록의 역할을 대부분 비슷하다. 슈퍼블록에는 sprase_super라는 플래그 기능이 있는데 .. 더보기