파일시스템을 알아보기 위해 먼저 파일에 대해서 알아보자
파일이란, 논리적인 저장 단위이고 관련된 정보들의 집합을 의미
- 파일은 Record와 Block의 형태로 비휘발성 저장장치에 저장된다.
Ex.
[20230001][홍길동 ][3][CS01] → 레코드 1
[20230002][이영희 ][2][DS01] → 레코드 2
[20230003][김민수 ][1][EE02] → 레코드 3
512바이트 파일에 위의 정보가 저장되어있다면 각각은 Record를 의미함
그리고, 만약 1 Block의 크기가 512바이트라면 디스크는 김민수 정보를 찾기위해서 레코드 3을 읽는게 아니라 파일 전체를 가져와서 읽음
Ex.
만약, 블록의 크기가 4KB이고, 파일의 크기가 1KB일때, 4개의 파일(A,B,C,D)이 존재함
그렇다면, A파일을 읽긱 위해서 블록단위를 가져오기 위해 A,B,C,D 파일을 모두 불러오나?
그렇지 않음
A의 파일(1KB)만 가져오고 나머지 3KB는 사용하지 않음(낭비) -> 내부 단편화
- 왜?
- 하나의 블록에 여러 파일이 들어가면 다른 파일의 데이터가 노출 될 수 있음
- 또한, 파일 수정 및 삭제 시에 다른 파일에게 영향을 미칠 수 있음
파일시스템이란, 보조기억장치에서 파일을 쉽게 사용할 수 있도록 관리하는 방법
- 수많은 파일을 쉽게 관리하는 방법
연속된 저장 공간을 하나 이상의 독립적인 영역으로 나눠서 사용할 수 있는 규칙
- 하나의 디스크안에 여러 파티션을 두어서 사용


색인이란, 데이터를 빠르게 찾기위해 키->위치 형태로 저장해놓은 보조 구조
Directory 구조란, 파일을 적절하게 그룹화하여, Directory를 빠르고 편리하게 사용할 수 있게 하기 위한 구조를 의미
Directory란, 메타데이터 중 일부를 보관하는 파일
Ex. 윈도우의 폴더
그렇다.
Directory에는 파일의 이름과 inode 번호만 저장함
이 inode에 진짜 메타데이터(실제 데이터 위치를 포함)가 존재
=> 결과적으로 실제 데이터를 찾기 위해서는 Directory -> inode 번호 -> inode -> 실제 데이터 위치 -> 실제 데이터
inode란, 파일의 메타데이터와 실제 데이터의 위치 정보를 담고있는 구조체
- 리눅스/유닉스 계열의 파일시스템에서 사용됨
- 테이블 형태(속성 - 값)

가장 간단함
하나의 파일은 하나의 디렉토리 하위에 존재
이름이 유일해야함
다른 사용자라도, 이름이 같으면 안됨
Naming, Grouping Problem 존재

각 사용자 별도 별도의 Directory를 소유
서로 다른 사용자는 동일한 이름의 Directory 이름 설정 가능
유저를 나타내는 Directory와 각각의 유저들이 소유한 Directory를 의미하는 것으로 나뉨
Grouping Problem 존재



| 항목 | FAT32 | NTFS | ext4 | UFS |
|---|---|---|---|---|
| 요약 설명 | 오래된, 단순한 파일 시스템 (USB 등에 아직 사용됨) | Windows에서 사용하는 기능 많은 최신 파일 시스템 | Linux에서 가장 널리 쓰이는 안정적 파일 시스템 | UNIX 계열 OS에서 쓰이는 전통적인 파일 시스템 |
| 사용 OS | DOS, Windows, USB 등 | Windows (기본) | Linux (Ubuntu, CentOS 등) | UNIX 계열 (FreeBSD, Solaris 등) |
| 개발 시기 | 1977년(FAT), 1996년(FAT32) | 1993년~ | 2008년 | 1983년 |
| 최대 파일 크기 | 4GB | 16TB 이상 | 16TB 이상 | 1TB 이상 (버전에 따라 다름) |
| 최대 볼륨 크기 | 8TB | 256TB 이상 | 1EB 이상 | 수 TB~EB (버전에 따라 다름) |
| 저널링 지원 | ❌ 없음 | ✅ 있음 | ✅ 있음 | ✅ 있음 |
| 보안 기능 | ❌ 없음 | ✅ 파일/폴더 권한, 암호화 등 | ✅ 리눅스 권한, ACL 등 | ✅ POSIX 권한 |
| 주 사용 용도 | USB, 외장하드, 레거시 장비 | Windows 시스템 디스크, 고급 파일 관리용 | 리눅스 서버, 개발 환경 등 | UNIX 시스템, 서버, 네트워크 장비 등 |
저널링이란, 파일시스템이 파일을 변경하는 과정에서 디스크에 반영되기 전에 미리 저널이라는 공간에 기록하는 방식을 의미
- 갑자기 시스테 다운 되었을때의 복구 or 롤백을 위해
- 데이터 무결성 유지