1. 파일 시스템의 역할 #
- 데이터를 저장하고, 탐색하고, 보호하는 계층
- 저장 장치(HDD, SSD 등)의 추상화 계층을 제공
- 운영체제는 파일 시스템을 통해 파일/디렉토리를 관리함
2. inode와 디렉터리 구조 #
inode (Index Node) #
- 파일의 metadata를 저장하는 구조체
- 각 파일은 고유한 inode 번호를 가짐 (inode table에 저장)
포함 정보 | 예시 |
---|---|
파일 크기 | 512KB |
생성/수정/접근 시간 | stat 명령으로 확인 |
접근 권한 | rwxr-xr– |
링크 수 | hard link 개수 |
디스크 블록 위치 정보 | 직접/간접 블록 주소 포함 |
=> inode는 filename은 저장하지 않음 -> directory entry가 filename과 inode 번호를 매핑
디렉터리 구조 #
- 디렉터리 = (파일명 <-> inode 번호)의 목록
- 계층적 트리 구조 (/, /home, /home/user/file.txt)
3. 파일 할당 방식 #
1) 연속 할당 (Continguous Allocation) #
연속된 디스크 블록에 파일 저장
장점 | 단점 |
---|---|
빠른 접근 | 파일 크기 변경 어려움, 외부 단편화 |
-> CD-ROM 등 읽기 전용 미디어에 적합
2) 연결 할당 (Linked Allocation) #
- 각 블록이 다음 블록의 포인터를 포함
장점 단점 파일 크기 동적 변경 가능 임의 접근 속도 느림 (랜덤 액세스 불가)
-> FAT (File Allocation Table)이 대표적인 예
3) 인덱스 할당 (Indexed Allocation) #
- 별도의 인덱스 블록에 모든 데이터 블록 주소 저장
장점 단점 빠른 임의 접근 인덱스 블록의 크기 제한 있음
-> Unix 파일 시스템이 대표적 (inode 내부가 인덱스 역할)
Unix inode 구조 - 직접/간접 블록 #
블록 | 설명 |
---|---|
직접 블록 (0~11) | 바로 데이터 블록 주소 |
단일 간접 블록 | 포인터 → 데이터 블록 주소들 |
이중 간접 블록 | 포인터 → 포인터 → 데이터 블록 |
삼중 간접 블록 | 포인터 ×3 → 매우 큰 파일 지원 |
📌 수백 MB ~ 수십 GB 크기 파일도 확장 가능
4. 파일 접근 권한 및 접근 제어 #
Unix 퍼미션 구조 (rwx) #
- 세 그룹으로 분리: 소유자 / 그룹 / 기타 사용자
- 각 그룹에 대해 read(r), write(w), execute(x) 권한 부여
예시 의미 -rwxr-xr– 소유자: rwx, 그룹: r-x, 기타: r– chmod 755 file rwxr-xr-x 권한 설정
접근 제어 확장 (ACL, Capability) #
- ACL: 파일별로 사용자마다 세밀한 권한 설정
- Capabilities: 커널에서 수행할 수 있는 동작 단위 권한화
5. 실무 예시 #
시스템 | 특징 |
---|---|
ext4 (Linux) | inode 기반, 저널링 지원, 성숙한 안정성 |
FAT32 (USB 등) | 연결 할당 방식, 단순하지만 한계 있음 |
NTFS (Windows) | 인덱스 + ACL 기반, 대용량/보안 지원 |
ZFS / Btrfs | Copy-on-Write, 스냅샷, 체크섬 포함 |
6. 자주 묻는 면접 질문 #
Q1. inode는 어떤 정보를 가지고 있나요?
A.
- 파일의 메타데이터(크기, 생성/수정 시각, 권한, 링크 수, 디스크 블록 위치)를 저장하며, 파일명은 포함되지 않습니다. 파일명은 디렉토리 엔트리에서 inode 번호와 매핑됩니다.
Q2. 연속/연결/인덱스 할당의 차이를 설명해주세요.
A.
방식 | 접근 성능 | 파일 크기 유연성 | 단편화 |
---|---|---|---|
연속 | 빠름 (임의 접근 가능) | 낮음 | 외부 단편화 |
연결 | 느림 (순차 접근만) | 높음 | 없음 |
인덱스 | 빠름 (임의 접근 가능) | 높음 | 거의 없음 |
Q3. 대용량 파일을 inode로 어떻게 저장하나요?
A.
- Unix inode는 직접 블록으로 시작하여, 단일 → 이중 → 삼중 간접 블록으로 확장할 수 있으며, 이를 통해 수십 GB까지의 대용량 파일을 관리할 수 있습니다.
Q4. 파일 시스템에서 ‘파일명’은 어디에 저장되나요?
A.
- 디렉토리 엔트리에 저장됩니다. 디렉토리는 (파일명 → inode 번호) 매핑 테이블이며, 실제 파일 정보는 해당 inode에 있음.