목차
1 리눅스의 파일시스템
2 ext4 (extended file system 4)
2.1 기본 특징
2.2 전체 구조
1 리눅스의 파일시스템
리눅스의 파일시스템은 데이터를 저장하고 관리하기 위한 계층적인 구조를 갖는다. 단일 트리구조를 갖고, 다른 파일시스템을 마운트하면 이 단일 트리에 연결된다.
- 파일 시스템의 개념
- 파일은 데이터를 저장하는 기본 단위로 다양한 형식으로 존재한다.
- 디렉터리는 파일을 저장하고 관리하기 위한 컨테이너 역할을 한다. 다른 디렉터리나 파일을 포함할 수 있다.
- 루트 디렉터리(/)는 리눅스 파일시스템의 최상위 디렉터리로, 리눅스에서 모든 디렉터리와 파일은 루트(/) 아래에 위치한다.
- 파일 경로(path)는 파일이나 디렉터리의 위치를 나타내는 문자열로, 절대 경로와 상대 경로가 있다.
- 파일 시스템의 특징
- 리눅스 파일시스템은 모든 디렉터리와 파일이 루트(/) 아래에 열결된 트리구조를 갖추고 있다.
- 마운트(mount)를 통해 새로운 파일시스템을 이 트리에 연결할 수 있다.
- 각 파일과 디렉터리에는 권한(permission)이 있고, 소유자/그룹/기타 사용자에 대해 읽기/쓰기/실행 권한을 설정할 수 있다.
- 다른 파일을 참조하는 심볼릭 링크(symbolic link)라는 것이 있다. 이는 윈도우의 바로가기와 비슷한 역할을 한다.
- 리눅스 배포판마다 다르지만, 우분투 및 대부분의 리눅스는 기본 파일시스템으로 ext4를 사용한다.
2 ext4 (extended file system 4)
2.1 기본 특징
ext4는 Linux에서 기본으로 쓰이는 파일시스템으로, 대부분의 리눅스 배포판에서 이를 기본 파일시스템으로 채택했다.
저널링 파일시스템으로, 시스템 문제 발생 시 데이터 무결성을 복구하는 데 도움을 준다. ext2, ext3에서 향상된 버전의 파일시스템이고, 하위 호환성이 있어서 ext2와 ext3 볼륨을 마운트할 수 있다.
2.2 전체 구조
디스크를 논리적 단위인 블록의 집합으로 본다. 블록의 크기는 일반적으로 4KB이다.
- 부트 블록(Boot Block)
위의 그림에서 볼 수 있듯이 디스크의 시작 부분에 위치해서 보통 1KB로 1024바이트의 크기를 차지한다. 부트로더(bootloader)가 저장되어 있고, 시스템 부팅에 필요한 초기 코드를 포함한다. 부팅을 위해 사용하는 구조로, ext4 구조와는 관련이 없다. - 슈퍼블록(Superblock)
ext4에는 파일시스템 전체의 중요한 정보를 저장하는 슈퍼블록이 있다. 일반적으로 부트 블록 뒤(1024번부터)에 위치한다.
파일 시스템의 크기, 블록 크기, 할당 상태, 사용 가능한 공간, 파일 시스템 상태 등의 정보를 포함하고 있다. 또한 중요한 역할을 하기 때문에 슈퍼블록의 복제본이 디스크의 여러 곳에 백업되어 있다. - 블록 그룹(Block Group)
ext4 파일시스템은 디스크를 여러 블록 그룹으로 나눈다. 블록 그룹은 여러 블록으로 이루어져 있다. 블록 그룹을 통해 파일 시스템의 데이터를 효율적으로 관리하고, 특정 파일 또는 디렉터리가 가까운 블록에 저장되도록 보장한다.
각 블록 그룹은 위의 구조를 띈다. 슈퍼 블록이 있고, 그룹 디스크립터, 블록 비트맵, 아이노드 비트맵, 아이노드 테이블(각 inode의 메타데이터를 저장) 등이 존재한다. 그리고 파일이나 디렉터리의 실제 데이터가 저장되는 데이터 블록도 포함된다.- 블록 그룹에 속하는 블록의 개수
각 블록 그룹의 블록의 수는 8 * 블록 하나의 바이트 크기이다. 블록의 크기가 4 KB(4096 bytes)이면, 블룩 그룹은 8 * 4096 = 32768 개의 블록을 갖는다.
- 블록 그룹에 속하는 블록의 개수
- 그룹 디스크립터(Group Descriptor Table)
그룹 디스크립터는 각 블록 그룹에 대한 메타데이터(슈퍼블록의 백업 위치, 비트맵 위치 등)를 저장한다. - 블록 비트맵(Block Bitmap)
그룹 내 블록의 사용 상태를 비트로 나타낸다. 사용 중인 블록은 1로 표시한다. - 아이노드(inode)
ext4는 inode를 통해 파일과 디렉터리를 관리한다. 각 파일과 디렉터리는 고유한 inode를 가지며, inode에는 파일인지 디렉터리인지 구분할 수 있는 파일 타입 정보도 포함되어 있다.
inode에는 파일 타입 정보 외에도 파일 크기, 소유자, 권한, 생성 시간, 수정 시간, 데이터 블록 포인터 정보 등이 포함되어 있다. - 아이노드 비트맵(Inode Bitmap)
블록 그룹내에 여러 아이노드가 있고, 이 아이노드의 사용 상태를 비트로 나타낸다. 사용 중인 아이노드는 1로 표시한다.
다음 포스트에서는 ext4의 블록 포인터 구조와 Extent, Journaling 등에 대해 작성할 예정이다.
'Linux > 파일 시스템(File System)' 카테고리의 다른 글
[파일시스템] 파일 시스템(File System)이란? (2) | 2024.11.23 |
---|