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와 같은 주요 개념들은 이후 글에 포스팅하겠습니다. 감사합니다.
'linux' 카테고리의 다른 글
| 리눅스 성능 모니터링 도구 모음 (2) | 2025.05.29 |
|---|---|
| logrotate로 로그 관리하기 & journalctl과의 차이점 (0) | 2025.05.21 |
| 리눅스 로그 관리 - /var/log와 주요 로그 파일 정리 (0) | 2025.05.21 |
| crontab 실습 - 자동화 예제로 익히기 (1) | 2025.05.20 |
| crontab으로 작업 자동화 하기 - 개념과 기본 문법 (0) | 2025.05.20 |