FAT32·NTFS·ext4로 보는 파일 시스템 구조와 저널링
FAT32, NTFS, ext4의 구조와 용도, 계층형 디렉토리·링크·저널링 동작 방식을 정리한다.
2026-08-14 · 최초 발행 2026-01-16
저장 장치 위의 데이터를 파일로 다루는 방식
파일 시스템은 스토리지 장치에 데이터를 배치하고 찾아가는 규칙을 운영체제에 제공한다. 파일과 디렉토리를 만들고, 데이터 블록을 할당하며, 소유자·권한·타임스탬프 같은 메타데이터를 관리하는 역할이 여기에 들어간다.
이름 공간도 파일 시스템의 일부다. 계층형 디렉토리, 파일 이름과 경로, 심볼릭 링크와 하드 링크를 통해 사용자는 데이터 블록의 위치 대신 논리적인 이름으로 파일을 다룬다. 사용자와 그룹의 권한, ACL, 일관성 검사, 저널링, 백업과 복구 역시 같은 계층에서 관리된다.
일반적인 내부 구성은 부트 블록, 슈퍼 블록, 아이노드 또는 파일 테이블, 데이터 블록으로 나뉜다. 부트 블록은 첫 번째 블록에 부트로더 코드와 파일 시스템 식별 정보를 담는다. 슈퍼 블록에는 블록 크기, 총 블록 수, 빈 블록 정보 같은 파일 시스템 메타데이터가 기록된다. 아이노드 테이블은 소유자·권한·타임스탬프와 데이터 블록 포인터를 보관하고, 데이터 블록에는 실제 파일 내용과 디렉토리 엔트리가 들어간다.
FAT32의 단순한 할당 테이블
FAT32는 파일 할당 테이블(FAT)에 클러스터 체인 정보를 기록하는 파일 시스템이다. 32비트 주소 체계를 사용하며, 최대 볼륨 크기는 2TB(실제 8TB), 최대 파일 크기는 4GB다.
파일은 보통 4KB-32KB 크기의 클러스터 단위로 저장된다. 이 방식은 내부 단편화를 만들 수 있다. 디렉토리 엔트리에는 8.3 형식 또는 Long File Name의 파일 이름, 시작 클러스터 번호, 파일 크기·속성·타임스탬프가 담긴다.
파일을 읽을 때는 디렉토리에서 시작 클러스터를 찾은 뒤 FAT를 따라 다음 클러스터 번호를 조회한다. EOF(End of File) 마커가 나올 때까지 체인을 반복하며 각 클러스터의 데이터를 읽는다.
FAT32의 강점은 구조가 단순하고 USB, SD 카드 등에서 호환성이 넓으며 오버헤드가 낮다는 점이다. 반면 4GB 파일 크기 제한이 있고 파일 권한을 지원하지 않으며, 단편화와 대용량 파일 시스템 처리에 취약하다. 저널링이 없어 데이터 손실 위험도 고려해야 한다.
USB 플래시 드라이브, SD 카드, 디지털 카메라, 레거시 시스템 호환이 필요한 환경이 대표적인 적용 대상이다.
NTFS는 MFT와 권한 체계로 파일을 관리한다
NTFS는 Windows 환경을 위한 기능을 넓게 제공한다. 이론상 파일 크기는 16EB이며 볼륨 크기는 256TB(실제 더 큼)다. 파일 권한과 ACL, EFS 파일 암호화, 파일 압축, 디스크 쿼터를 지원한다.
메타데이터 저널링은 트랜잭션 기반으로 동작하며 빠른 복구를 돕는다. 대체 데이터 스트림(ADS)은 하나의 파일에 여러 데이터 스트림을 저장하고 메타데이터를 확장할 수 있지만, 악성코드를 숨기는 보안 위험이 될 수도 있다.
MFT(Master File Table)는 NTFS의 중심 데이터 구조다. 모든 파일과 디렉토리에 MFT 엔트리가 할당되고, 엔트리 크기는 1KB이며 속성 기반으로 저장된다. 엔트리에는 타임스탬프와 속성 플래그를 담는 표준 정보, 하나 이상의 파일 이름, 파일 내용 또는 데이터 런(Run) 리스트, 권한 정보인 보안 디스크립터가 포함된다.
작은 파일은 MFT 엔트리 안에 상주 데이터(Resident Data)로 저장되어 빠르게 접근할 수 있으며, 보통 900바이트 이하가 여기에 해당한다. 큰 파일은 비상주 데이터(Non-Resident Data)로 별도 클러스터에 저장되고, MFT에는 시작 위치와 길이로 된 데이터 런이 남는다. 단편화되면 여러 런이 존재할 수 있다.
ACL은 사용자와 그룹별로 세밀한 권한과 상속 규칙을 설정하고 감사 로그를 남길 수 있게 한다. EFS는 공개키 기반의 파일 수준 투명 암호화를 제공하며 사용자 인증서와 연동된다. 디스크 쿼터는 사용자별 용량 제한, 초과 경고, 하드·소프트 제한을 다룬다.
NTFS는 대용량 파일과 볼륨, 권한 관리, 압축과 암호화, 저널링이 필요한 환경에 맞는다. 다만 Windows 외 운영체제에서는 쓰기 지원이 제한될 수 있고, 구조가 복잡하며 소형 장치에는 오버헤드가 부담이 될 수 있다. Windows 시스템 드라이브, Windows 전용 외장 하드 드라이브, 엔터프라이즈 파일 서버, 데이터베이스 스토리지가 적용 사례다.
ext4의 익스텐트와 아이노드
ext4는 Linux의 표준 파일 시스템으로, 초기 ext에서 ext2의 성능 개선과 저널링 부재, ext3의 저널링 추가를 거쳐 대용량 지원과 성능 향상을 목표로 발전했다. 최대 파일 크기는 16TB, 최대 볼륨 크기는 1EB다. 익스텐트 기반 할당, 지연 할당, 저널 체크섬, 온라인 조각 모음을 제공한다.
익스텐트(Extent)는 연속된 블록들을 하나의 단위로 표현한다. 시작 블록 번호, 블록 개수, 논리적 블록 번호로 구성되며, 메타데이터를 줄이고 대용량 파일을 효율적으로 관리하면서 단편화를 낮추고 I/O를 빠르게 한다.
기존: 블록 100, 101, 102, ..., 199 (100개 항목)
익스텐트: (시작: 100, 길이: 100) (1개 항목)
아이노드(Inode)는 파일 메타데이터를 저장하는 자료구조다. 파일 타입, rwxr-xr-x 권한, 소유자 UID와 그룹 GID, 파일 크기, 생성·수정·접근 타임스탬프, 링크 수, 데이터 블록 포인터가 여기에 저장된다. 데이터 블록 포인터는 직접 블록 포인터 12개와 1단계·2단계·3단계 간접 포인터로 구성된다.
대용량 디렉토리에서는 해시 트리 인덱스(HTree)가 해시 기반 검색으로 O(log n) 시간 복잡도를 제공한다. 디렉토리 엔트리는 아이노드 번호, 엔트리 길이, 파일 이름 길이, 파일 타입, 파일 이름을 가진다.
지연 할당은 실제 쓰기 시점까지 블록 할당을 미뤄 연속 블록 할당 가능성을 높이고 쓰기 성능을 개선한다. 다중 블록 할당은 한 번에 여러 블록을 할당해 시스템 콜을 줄인다. 사전 할당은 파일 생성 시 공간을 미리 확보하는 방식이며 fallocate() 시스템 콜을 사용하고 동영상 녹화 등에 유용하다.
ext4는 성능, 안정성, 신뢰성, 대용량 파일·볼륨 지원, 온라인 조각 모음, ext3·ext2 하위 호환성을 제공한다. Windows와 macOS에서 네이티브로 지원되지 않고, NTFS에 비해 권한 관리 기능이 제한적이며, Btrfs와 달리 스냅샷을 지원하지 않는 점은 제약이다. Linux 시스템 파티션, 서버 데이터 스토리지, NAS 장치, 임베디드 시스템에서 사용된다.
경로와 링크가 만드는 이름 공간
파일 시스템의 논리적 조직은 트리 구조다. Unix/Linux는 / 하나를 모든 파일의 시작점으로 쓰는 단일 루트 구조이고, Windows는 C:, D:처럼 다중 루트를 사용한다.
절대 경로는 /home/user/file.txt처럼 루트에서 출발하고, 상대 경로는 ../parent/file.txt처럼 현재 위치를 기준으로 한다. .은 현재 디렉토리, ..은 상위 디렉토리, ~는 Unix/Linux의 홈 디렉토리를 뜻한다.
디렉토리 생성과 삭제에는 mkdir, rmdir, rm -r를 사용한다. 탐색에는 cd, ls, pwd가 쓰이며, 조건 기반 검색은 find, 인덱스 기반 빠른 검색은 locate가 담당한다.
하드 링크는 동일한 아이노드를 가리키므로 원본과 같은 권한을 갖는다. 디렉토리에는 연결할 수 없고 파일 시스템 경계도 넘을 수 없다. 심볼릭 링크는 경로를 가리키는 특수 파일이라 디렉토리와 다른 파일 시스템을 가리킬 수 있지만, 원본이 삭제되면 깨진 링크가 된다.
장애 뒤 일관성을 복구하는 저널링
파일 생성 도중 시스템 장애가 나면 메타데이터는 갱신됐지만 데이터는 기록을 마치지 못한 불일치 상태가 생길 수 있다. 저널링은 파일 시스템 변경 사항을 로그에 먼저 기록하는 트랜잭션 기반 접근으로, 이런 장애 뒤 빠른 복구를 지원한다.
data=journal 모드는 메타데이터와 데이터를 모두 저널링한다. 가장 안전하지만 성능 오버헤드가 크며 ext3/ext4에서 사용할 수 있다. data=ordered는 메타데이터만 저널링하되 데이터를 먼저 쓴 뒤 메타데이터 저널을 기록하는 방식으로, ext3/ext4의 기본값이다. data=writeback도 메타데이터만 저널링하지만 데이터와 메타데이터 순서를 보장하지 않으며 가장 빠르고 덜 안전하다.
정상 쓰기에서는 저널 영역에 트랜잭션 시작을 기록하고, 변경 사항인 메타데이터 또는 데이터를 저널에 기록한 뒤 커밋한다. 이후 실제 파일 시스템 영역에 쓰고 저널에서 해당 트랜잭션을 제거한다.
복구 시에는 부팅 과정에서 저널을 검사해 커밋됐지만 적용되지 않은 트랜잭션을 찾고, 이를 재생(Replay)해 파일 시스템 일관성을 복구한다. 이 과정은 fsck를 불필요하게 하거나 단축하고 빠른 부팅을 돕는다. 장점은 수 초 단위의 빠른 복구와 데이터 일관성, 시스템 안정성이다. 대신 이중 쓰기로 인한 쓰기 성능 저하, 추가 디스크 공간, 복잡도 증가를 감수해야 한다.
ext3/ext4는 JBD(Journaling Block Device)를 사용하며 세 가지 모드를 선택할 수 있다. NTFS는 $LogFile에 트랜잭션을 기록하는 메타데이터 저널링을 사용한다. XFS도 메타데이터 저널링을 제공하며 고성능 서버 환경에 쓰인다. Btrfs와 ZFS는 Copy-on-Write 기반으로 스냅샷과 통합된다.
파일 시스템별 선택 지점
| 파일 시스템 | 최대 파일 | 최대 볼륨 | 저널링 | 권한 관리 | 주 사용 환경 |
|---|---|---|---|---|---|
| FAT32 | 4GB | 2TB | 없음 | 없음 | USB, SD 카드 |
| NTFS | 16EB | 256TB | 있음 | ACL | Windows |
| ext4 | 16TB | 1EB | 있음 | POSIX | Linux |
| exFAT | 16EB | 128PB | 없음 | 제한적 | 대용량 USB |
| Btrfs | 16EB | 16EB | 있음 | POSIX | Linux (최신) |
Copy-on-Write 계열 파일 시스템
Btrfs(B-Tree File System)는 Copy-on-Write, 스냅샷과 클론, 서브볼륨, 온라인 조각 모음, 데이터 체크섬, RAID를 제공한다.
ZFS(Zettabyte File System)는 파일 시스템과 볼륨 관리자를 통합하고, End-to-End 체크섬, 자동 복구, 압축과 중복 제거, 강력한 스냅샷을 제공한다.
APFS(Apple File System)는 macOS와 iOS의 표준 파일 시스템이다. 강력한 암호화, 공간 공유, 스냅샷, SSD 최적화를 특징으로 한다.
FAT32는 휴대용 저장 장치의 단순한 호환성 요구에 맞고, NTFS는 Windows 환경에서 권한 관리와 대용량 파일 처리를 담당한다. ext4는 Linux에서 안정적인 기본 선택지다. 여기에 계층형 디렉토리와 링크가 데이터를 논리적으로 조직하고, 저널링 및 Copy-on-Write 기반 파일 시스템이 장애 복구와 현대 스토리지 기능의 기반을 이룬다.