1. 파일 시스템이란?

파일 시스템(File System)은 운영체제가 데이터를 저장하고, 읽고, 관리할 수 있도록 해주는 저장 구조 방식입니다. 

쉽게 말하면, 하드디스크에 파일을 정리해 두는 규칙과 틀이라고 할 수 있습니다.

 

2. 왜 중요한가요?

● 리눅스에서의 파일 접근은 모두 파일 시스템 위에서 동작합니다.

● 파일 시스템이 깨지거나 잘못 구성되면 데이터 손실이 발생할 수 있습니다.

● 실무에서 디스크 파티션 구성, 마운트 관리, 성능 이슈 분석 등에서 매우 중요합니다.

 

3. 대표적인 리눅스 파일 시스템 종류

3-1. ext4(Fourth Extended File System)

개요

● 현재 대부분의 리눅스 배포판에서 기본 파일 시스템으로 사용

● ext3의 후속 버전으로 안정성과 성능 향상

특징

저널링 지원 : 시스템 오류 시 빠른 복구 가능

최대 파일 크기 : 16TB

최대 볼륨 크기 : 1EB (이론 상)

지연 할당(Delayed Allocation) : 성능 향상

백그라운드에서 자동 fsck 가능

사용 예

● Ubuntu, Debian, CentOS 등 거의 모든 리눅스 배포판에서 기본값

 

3-2. XFS (Extended File System by SGI)

개요 

● 고성능, 대용량 파일 처리에 최적화된 저널링 파일 시스템

● Red Hat 계열에서 주로 사용됨 (특히 CentOS, RHEL)

특징

고속 입출력(I/O) 처리에 강함

대형 파일대용량 파일 시스템 지원

● 실시간 디플래그(Defragmentaion) 가능

● xfs_growfs 명령어로 마운트 된 상태에서도 볼륨 확장 가능

단점

● 기본적으로 파일 시스템 축소는 지원하지 않음

사용 예

● RHEL, CentOS, Amazon Linux2 등

 

3-3. Btrfs (B-Tree File System)

개요

● "Better FS"라는 별명을 가진 차세대 파일 시스템

● 스냅샷, 압축, 체크섬 등 다양한 고급 기능 탑재

특징

스냅샷(Snapshot) 기능 내장 → 특정 시점 상태로 복구 가능

RAID 기능 통합 지원

서브볼륨(Subvolume) 기능으로 유연한 디렉터리 관리

데이터 및 메타 데이터 무결성 검사 지원

● 압축 기능 (zlib, lzo, zstd 등)

주의사항

● 여전히 파일 시스템 손상 이슈 보고됨 → 신중하게 사용해야 함

● 중요한 시스템에서는 신뢰성과 안정성을 우선 고려

사용 예

● openSUSE, 일부 Ubuntu 환경

 

3-4. VFAT (Virtual FAT) / FAT32

개요

● Windows와의 호환을 위해 사용되는 파일 시스템

● FAT32는 특히 USB 메모리나 SD카드에서 자주 사용됨

특징

● 리눅스 윈도 간 데이터 공유에 적합

파일 권한 관리 미지원 (Unix 방식 권한 없음)

파일 크기 제한 : 4GB

사용 예

● USB 드라이브, 외장 저장장치, EFI 시스템 파티션 등

 

3-5.NTFS (New Technology File System)

개요

● Windows에서 사용하는 대표적인 파일 시스템

● 리눅스에서도 ntfs-3g 패키지를 통해 마운트 및 읽기/쓰기 가능

특징

● 파일 권한 및 ACL 지원

● 대용량 파일, 압축, 암호화 지원

퍼포먼스는 ext4보다 떨어질 수 있음

사용 예

● 듀얼 부팅 환경에서 Windows 파티션 마운트할 때

 

요약 비교

파일 시스템  특징 쓰임새
ext4 안정성 높음, 범용적 대부분의 리눅스 시스템
xfs 고성능, 대용량 지원 RHEL/CentOS 기반 시스템
btrfs 스냅샷/압축/무결성 지원 실험적, 일부 서버/개발환경
vfat 간단, 윈도우 호환 USB, 외장장치
ntfs 윈도우 전용, 권한 지원 윈도우와 데이터 공유 시 사용

 

4. 파일 시스템의 구성 요소

Superblock: 전체 파일 시스템 정보를 담고 있는 메타 데이터

inode: 파일 자체의 정보(소유자, 크기, 퍼미션 등)를 저장

데이터 블록: 실제 파일 내용이 저장되는 공간

디렉터리 엔트리: 파일 이름과 inode 번호를 연결

 

5. 실습으로 알아보는 파일 시스템 명령어

현재 사용 중인 파일 시스템 확인하기

df -T
# -T 옵션은 마운트된 디렉터리의 파일 시스템 종류를 보여줍니다.

 

디스크 사용량 보기

df -h
# -h는 "human-readable"로, MB/GB 단위로 보기 좋게 출력합니다.

 

디스크/파티션 구조 보기

lsblk

 

파일 시스템 마운트 상태 확인

mount | grep "^/dev"
# 현재 마운트된 파일 시스템 목록 출력

 

특정 장치 수동 마운트하기

sudo mount /dev/sdb1 /mnt
# /dev/sb1 파티션은 /mnt 디렉터리에 연결 / 연결을 해제하려면 umount /mnt

 

마무리

파일 시스템은 단순한 저장공간이 아니라, 운영체제가 파일을 이해하는 방식 그 자체입니다. 

리눅스를 다루는 입장에서 꼬 이해하고 넘어가야 할 개념입니다.

마운트와 inode와 같은 주요 개념들은 이후 글에 포스팅하겠습니다. 감사합니다.

 

+ Recent posts