파일 시스템 (inode, 디스크, FAT)
운영체제가 메모리와 CPU를 관리하는 만큼이나 중요한 책임이 영속적인 데이터를 안전하게 보관하는 일이다. 프로세스는 종료되면 사라지지만 사용자가 만든 파일과 시스템 설정은 다음 부팅 후에도 그대로 남아 있어야 하며, 그 보관 책임을 지는 운영체제 모듈이 바로 파일 시스템(File System)이다. 본 글은 파일 시스템의 정의·계층 구조·inode 모델·대표 구현체(FAT·NTFS·ext4) 비교, 그리고 디스크 스케줄링까지 세심하게 정리한다(출처: 위키백과 — File system). 제가 학교 OS 실습에서 ls -li로 inode 번호를 처음 본 후로는 같은 파일이 두 경로에서 같은 inode를 공유하는 하드 링크의 동작이 비로소 손에 잡혔다.

파일 시스템의 정의와 계층 구조
파일 시스템이란 디스크·SSD 같은 보조 기억장치에 데이터를 파일과 디렉터리라는 추상적 단위로 조직화하는 운영체제의 하위 시스템이다. 사용자는 디스크의 물리적 구조(섹터·실린더·플래터)를 알 필요 없이 파일 이름과 경로만으로 데이터를 다루며, 그 뒤에서 파일 시스템이 블록 할당·디렉터리 관리·접근 권한 검사·동기화를 모두 책임진다. 여기서 블록(block)이란 파일 시스템이 디스크를 일정한 크기 단위로 나누어 관리하는 가장 작은 할당 단위를 가리키며, 일반적으로 4KB가 표준이다.
파일 시스템은 일반적으로 세 가지 계층으로 분리된다. 시험과 실무 모두에서 자주 출제되는 영역이다.
| 계층 | 책임 | 대표 구성 |
|---|---|---|
| 논리 파일 시스템 | 파일 메타데이터·디렉터리·권한 | inode, 디렉터리 항목 |
| 파일 구성 모듈 | 논리 블록 → 물리 블록 변환 | 블록 할당 정책 |
| 기본 파일 시스템 | 디스크 드라이버와 통신 | 섹터 단위 R/W |
파일 시스템의 핵심 자료구조는 두 가지다. 첫째, 디렉터리(Directory)는 파일 이름과 그 파일의 메타데이터(또는 inode 번호) 사이의 매핑을 저장하는 특수 파일이다. 둘째, 파일 메타데이터(File Metadata)는 파일의 크기·소유자·권한·접근 시각·실제 데이터 블록 위치 등을 담는 자료구조이다. 두 구조의 결합 방식이 파일 시스템의 종류를 가른다.
# Linux에서 파일 메타데이터 확인
$ stat report.txt
File: report.txt
Size: 2048 Blocks: 8 IO Block: 4096
Device: ... Inode: 8472133 Links: 1
Access: (0644/-rw-r--r--) Uid: ... Gid: ...
Access: 2026-05-19 14:23:11
Modify: 2026-05-18 09:15:42
Change: 2026-05-18 09:15:42
여기서 inode 번호가 파일 시스템에서 그 파일을 고유하게 식별하는 정수 ID이며, 사용자가 보는 파일 "이름"과는 분리되어 있다. 같은 inode가 두 개의 디렉터리 항목과 연결되는 게 하드 링크이고, 이름만 다른 파일이 다른 inode를 가리키면 그건 별개의 파일이다. 솔직히 제 경험상 이 단순한 분리(이름 ≠ 파일 본체)가 처음에는 헷갈렸는데, ln으로 하드 링크를 만들어 본 후 같은 inode를 두 이름이 공유하는 모습을 본 후로는 비로소 손에 잡혔다.
inode와 FAT — 두 가지 파일 시스템 모델
파일 시스템의 메타데이터 관리 방식은 크게 두 가지 모델로 나뉜다. inode 모델과 FAT 모델이며, 둘의 차이가 결국 ext4·NTFS·FAT32 같은 실전 파일 시스템의 성능과 특성을 결정한다.
inode 모델(유닉스 계열)은 각 파일마다 inode라는 고정 크기 자료구조를 두고, 그 안에 파일의 모든 메타데이터와 데이터 블록의 위치 목록을 담는다. inode는 디렉터리와 완전히 분리되어 있으며, 디렉터리는 단지 "이름 → inode 번호" 매핑만 저장한다. 이 분리 덕분에 하드 링크가 자연스럽게 가능해지고, 큰 파일을 다룰 때도 디렉터리 검색 성능이 떨어지지 않는다는 강점이 있다.
inode 구조 (간략)
┌─────────────────────────────┐
│ 모드(권한) · 소유자 · 크기 │
│ 접근·수정·변경 시각 │
│ 직접 블록 포인터 × 12 │ → 디스크 블록 12개 직접
│ 간접 블록 포인터 │ → 블록 주소를 담은 블록
│ 이중 간접 포인터 │ → 간접 블록의 주소
│ 삼중 간접 포인터 │ → 매우 큰 파일용
└─────────────────────────────┘
여기서 직접·간접 포인터란 한 inode가 직접 가리킬 수 있는 데이터 블록 수에 한계가 있어, 큰 파일은 "블록의 주소를 담은 블록(간접 블록)"을 추가로 거쳐 가는 트리형 구조를 의미한다. 4KB 블록 기준으로 직접 12개 + 간접 한 단계만 거쳐도 수 MB까지 표현 가능하며, 삼중 간접까지 가면 TB급 파일도 다룰 수 있다.
FAT 모델(Windows·USB 표준)은 디스크 전체에 하나의 거대한 표(FAT = File Allocation Table)를 두고, 각 블록의 "다음 블록 번호"를 기록해 연결리스트처럼 추적하는 방식이다. 단순하고 호환성이 압도적이라는 강점이 있어 USB 메모리·SD 카드·작은 임베디드 시스템에서 사실상 표준이지만, 큰 파일을 다룰 때 표 순회 비용이 크고 단편화에 취약하다는 단점이 있다(출처: 위키백과 — File Allocation Table).
| 비교 항목 | inode (ext4·XFS) | FAT (FAT32·exFAT) |
|---|---|---|
| 메타데이터 위치 | 각 파일마다 분리 | 디스크 전체에 하나의 표 |
| 큰 파일 성능 | 좋음 (간접 블록) | 나쁨 (긴 체인 순회) |
| 하드 링크 | 가능 | 불가능 |
| 권한 관리 | 풍부 (Unix 권한) | 매우 단순 |
| 호환성 | Linux·macOS 중심 | 거의 모든 OS |
| 대표 채택 | Linux ext4·XFS·Btrfs | USB·SD카드·EFI 시스템 파티션 |
NTFS(Windows의 기본 파일 시스템)는 두 모델의 장점을 결합한 형태로, MFT(Master File Table)라는 분산된 표를 두고 각 파일에 inode와 유사한 레코드를 부여한다. 대형 파일·저널링·압축·암호화 같은 현대 기능을 모두 갖추고 있어 Windows의 기본 선택이 되었다.
디스크 스케줄링과 파일 시스템의 신뢰성
디스크는 RAM보다 약 10만 배 느린 저장 매체이므로, 디스크 요청을 어떤 순서로 처리하느냐가 전체 시스템 응답성에 큰 영향을 준다. 시험에서 자주 출제되는 디스크 스케줄링 알고리즘은 다음 다섯 가지이다.
| 알고리즘 | 동작 | 강점 / 약점 |
|---|---|---|
| FCFS | 요청 도착 순서 | 단순 / 평균 탐색 길이 큼 |
| SSTF | 현재 헤드에서 가장 가까운 트랙 우선 | 평균 탐색 짧음 / 기아 가능 |
| SCAN(엘리베이터) | 한 방향으로 끝까지 갔다 반대 방향으로 | 공평 / 양 끝은 불리 |
| C-SCAN | 한 방향만 처리 후 시작점 복귀 | 균일한 대기 시간 |
| LOOK / C-LOOK | 마지막 요청까지만 가고 회귀 | SCAN의 효율 개선 |
여기서 SSTF(Shortest Seek Time First)란 현재 디스크 헤드 위치에서 가장 가까운 요청을 우선 처리하는 알고리즘으로, 평균 탐색 길이는 가장 짧지만 멀리 있는 요청이 영원히 처리되지 못하는 기아 상태가 발생할 수 있다. 솔직히 이건 예상 밖이었는데, 학교 시뮬레이션에서 같은 요청열에 FCFS·SSTF·SCAN을 모두 돌려 본 후 평균 탐색 길이가 280·64·100으로 떨어지는 모습을 본 후로는 "디스크 스케줄링 한 줄의 차이가 사용자 체감 응답 시간에 직결된다"는 사실을 받아들였다.
파일 시스템의 신뢰성을 위한 핵심 기능이 저널링(Journaling)이다. 저널링이란 파일 시스템 변경을 실제로 적용하기 전에 로그(저널)에 먼저 기록해 두는 기법으로, 시스템이 중간에 갑자기 꺼져도 부팅 시 저널을 다시 재생해 일관된 상태로 복구할 수 있게 만든다. ext4·NTFS·XFS가 모두 저널링을 채택하고 있으며, 저널링이 없는 FAT32는 갑작스러운 전원 차단에 데이터가 손상될 위험이 상대적으로 크다. 마지막으로 시험 답안에서 자주 쓰이는 정형 표현을 정리하면, "파일 시스템은 보조 기억장치에 데이터를 파일·디렉터리로 조직화하는 운영체제 모듈이며, inode 모델(Unix 계열)과 FAT 모델(Windows·USB)로 크게 나뉜다. 디스크 요청은 FCFS·SSTF·SCAN·C-SCAN·LOOK 같은 디스크 스케줄링 알고리즘으로 정렬되며, 저널링은 갑작스러운 종료에도 일관성을 보장하는 표준 기능이다"는 두 문장이 표준 답안 표현으로 통한다.
메타 디스크립션: 파일 시스템의 계층 구조와 inode·FAT 두 가지 모델 비교, NTFS·ext4 같은 실전 파일 시스템의 차이, 그리고 디스크 스케줄링 5종(FCFS·SSTF·SCAN·C-SCAN·LOOK)과 저널링까지 OS 입문자 관점에서 세심하게 정리합니다.