2025. 3. 4. 15:01ㆍLinux File System
🐧 Linux EXT4 파일 시스템 개요 및 역사
🔍 1. 파일 시스템이란?
파일 시스템은 데이터를 저장하고 관리하는 구조로, 다음과 같은 기능을 수행해요.
📂 데이터 저장 → 파일과 폴더를 저장하고 검색 📂
📑 네임스페이스 → 파일 및 디렉터리 명명 규칙 제공
🔒 보안 모델 → 파일 접근 권한 관리
🔧 API 제공 → 파일 및 디렉터리 조작을 위한 시스템 호출 지원
🖥️ 소프트웨어 구현 → 위 기능을 실행하는 프로그램
EXT4는 리눅스에서 가장 많이 쓰이는 파일 시스템이에요. 🎯
🏛️ 2. EXT 파일 시스템의 역사
EXT 파일 시스템은 리눅스 운영 체제에서 데이터를 효율적으로 관리하기 위해 발전해 왔어요.
📜 (1) Minix 파일 시스템 (1987년)
- 리눅스 초기에는 Minix 파일 시스템 사용
- 제한: 파일 크기 및 성능 제약
🛠️ (2) EXT (Extended Filesystem) (1992년)
- Rémy Card가 개발
- Minix의 한계를 극복했지만, 금방 EXT2로 대체됨
🚀 (3) EXT2 (Second Extended Filesystem) (1993년)
- 리눅스에서 오랫동안 기본 파일 시스템
- 블록 그룹 개념 도입 → 속도 & 안정성 개선
- ❌ 단점: 저널링 기능 없음 → 시스템 충돌 후 복구 시간이 김
⚡ (4) EXT3 (Third Extended Filesystem) (2001년)
- ✅ EXT2 + 저널링 기능 추가 → 빠른 복구 가능
- 🔁 기존 EXT2에서 tune2fs -j 명령으로 쉽게 업그레이드 가능
- 저널링 모드:
- Ordered → 데이터가 먼저 기록된 후 메타데이터를 커밋 (기본값)
- Writeback → 메타데이터만 저널링 (성능 최적화)
- Journal → 모든 데이터를 저널링 (최대 안정성)
🏆 (5) EXT4 (Fourth Extended Filesystem) (2008년)
- ✅ 현재 리눅스의 기본 파일 시스템
- 성능 🚀, 안정성 🛡️, 확장성 📈, 조각화 최소화 🔧
🎯 3. EXT4의 주요 특징 및 개선점
🚀 (1) 성능 향상
- Extents (연속 블록 할당) → 파일 조각화 최소화
- 멀티 블록 할당 → 여러 블록을 한 번에 할당하여 속도 향상
- 지연 할당(Delayed allocation) → 데이터 크기 확정 후 할당하여 성능 최적화
🛡️ (2) 안정성 향상
- 저널링 메타데이터 체크섬 추가 → 손상 감지 가능
- fsck (파일 시스템 검사) 속도 개선 → 빠른 오류 복구
📈 (3) 확장성 향상
- 파일 최대 크기 16TiB, 파일 시스템 최대 1EiB 지원
- 수십만 개의 파일이 있는 디렉터리도 빠르게 탐색
🔧 (4) 조각화 최소화
- 새로운 파일 할당 방식으로 조각화 방지
- 파일을 디스크에 골고루 배치하여 성능 유지
🏗️ 4. EXT4 구조 분석
🏛️ (1) EXT4 디스크 레이아웃
EXT4는 블록 그룹(Block Group) 단위로 데이터를 저장해요.
📌 슈퍼블록(Superblock) → 파일 시스템의 전체 정보 저장
📌 그룹 디스크립터(Group Descriptor) → 블록 그룹 메타데이터 관리
📌 비트맵(Bitmap) → 사용 중인 블록 및 inode 추적
📌 인덱스 노드 테이블(Inode Table) → 파일 메타데이터 저장
📌 데이터 블록(Data Blocks) → 파일의 실제 데이터 저장
🗂️ (2) EXT4의 inode 구조
📌 inode(인덱스 노드)는 파일 메타데이터를 저장하는 구조에요.
- 파일 소유자(User & Group ID)
- 파일 타입 및 권한
- 파일 크기 & 시간 정보 (생성, 수정, 접근)
- 12개 직접 포인터, 싱글/더블/트리플 간접 포인터 포함
📂 포인터 구조:
- 직접 포인터 (Direct Pointers) → 작은 파일 저장
- 단일 간접 포인터 (Single Indirect Pointers) → 중간 크기 파일 저장
- 이중 간접 포인터 (Double Indirect Pointers) → 대형 파일 저장
- 삼중 간접 포인터 (Triple Indirect Pointers) → 초대형 파일 저장
🔄 5. EXT4 파일 시스템 조각화 관리
기존 NTFS나 FAT 파일 시스템은 조각화가 심해서 주기적인 디스크 조각 모음(Defragmentation) 이 필요했어요. 하지만 EXT4는 📂 파일을 저장할 때 조각화를 최소화하는 전략을 사용해서 굳이 조각 모음을 하지 않아도 돼요.
🔹 파일 저장 시 충분한 여유 공간 확보
🔹 디스크 조각화를 사전에 방지하는 지연 할당 (Delayed Allocation)
🔍 조각화 확인 및 관리 명령어
✅ 파일 시스템 조각화 확인:
fsck -fn /dev/sda1
✅ 특정 파일 조각화 확인:
filefrag -v /path/to/file
✅ 파일 조각화 최소화 (EXT4 전용 도구):
e4defrag /path/to/file
📢 완전한 조각 모음 방법:
1️⃣ 백업 후 파일 삭제
2️⃣ 파일 시스템을 새로 포맷 (mkfs 사용)
3️⃣ 백업 데이터를 다시 복사
🏁 6. 결론
🏆 EXT4는 현재 리눅스의 표준 파일 시스템
⚡ 빠른 성능 & 높은 안정성 제공
🛡️ 저널링으로 데이터 손실 방지
📈 대용량 파일 & 서버에서도 안정적으로 동작
🔧 조각화 방지로 디스크 성능 유지
💡 "리눅스에서는 특별한 이유가 없으면 EXT4를 사용하자!" 💡
🐧 리눅스를 제대로 활용하려면 파일 시스템에 대한 이해는 필수! 💪
'Linux File System' 카테고리의 다른 글
inode (0) | 2025.03.04 |
---|---|
Linux File System (0) | 2025.03.04 |