카테고리 없음

[cs] 파일 시스템

sihanni 2025. 7. 4. 17:29

파일의 정의

"데이터를 저장하고 관리하기 위한 논리적인 단위"

운영체제와 하드웨어가 데이터를 읽고 쓸 수 있도록 구조화된 데이터의 집합

저장 장치(하드 디스크, SSD, USB 등)에 저장된 이름을 가진 데이터의 집합

일반적으로 프로그램이나 사용자가 생성하고 사용하는 문자, 숫자, 이진 데이터 등을 포함하는 단위

 

파일의 구성요소

  • 파일 이름 : 파일을 구별하기 위한 고유한 이름 (image.jpg, hello.txt 등)
  • 파일 경로 : 파일이 저장된 위치를 나타내는 문자열 
  • 파일 데이터 : 실제 저장된 정보 (텍스트, 이미지, 코드, 이진 데이터 등)
  • 파일 메타데이터 : 운영체제가 관리하는 정보, 파일의 속성 포함 (생성 시간, 수정 시간, 접근 권한, 크기, 소유자 등)

파일의 특징

  • 영속성 : 휘발성인 메모리와 달리, 전원이 꺼져도 데이터가 유지됨
  • 이름 : 고유한 식별자로 접근 가능
  • 시퀀스 접근 : 데이터를 순차적으로 접근 가능
  • 임의 접근 : 특정 위치(offset)로 바로 접근 가능 (ex.  .seek() 사용)

파일의 종류

  • 텍스트 파일 : 사람이 읽을 수 있는 문자열 저장 (.txt, .csv, .html 등)
  • 바이너리 파일 : 기계가 처리할 수 있는 이진 형식 (.exe, .jpg, .mp4, .pdf 등)

 

파일 시스템

운영체제는 파일시스템을 통해 파일을 저장하고 관리한다.

파일 시스템은 운영체제가 디스크에 데이터를 저장하고, 관리하며, 읽어오는 방식을 말한다.

단순히 파일을 저장한다는 개념이 아닌, 어디에, 어떻게, 어떤 구조로, 어떤 속성을 가지고 저장할지를 정해주는 구조이자 규칙

 

운영체제는 파일에 대한 정보를 디렉토리와 i-node(리눅스 계열) 등을 통해 추적하고, 파일 접근 시 이를 바탕으로 데이터를 입출력한다.

 

파일 시스템에 대해 이해하고 있어야하는 이유

  • 로그 관리 : logrotate, inode 부족 문제 해결
  • 디스크 I/O 병목 원인 분석 : iostat, iotop, df -i
  • 스토리지 설계 : SSD vs HDD, 쓰기 병목, 캐시 정책 등
  • Docker 볼륨, k8s PVC 등도 모두 결국 파일 시스템 위에서 돌아감

 

운영체제에서의 역할

  • 파일/디렉토리 구조 유지 (ls, cd 같은 명령의 기반)
  • 파일의 이름, 크기, 권한, 위치 등의 메타데이터 관리
  • 저장 공간 할당 및 회수 (allocation/free)
  • 디스크 블록 관리
  • I/O 버퍼링 및 캐시
  • 보안 및 접근 제어

파일 시스템의 구성 요소

  • 디렉토리
    • 파일을 논리적으로 묶는 계층적 구조
  • 파일
    • 이름, 크기, 위치, 속성(권한 등)을 가진 데이터 묶음
  • * inode (index node)
    • 파일의 메타데이터(크기, 소유자, 퍼미션, 실제 데이터 위치)를 저장하는 구조
  • 블록
    • 실제 데이터가 저장되는 고정 크기의 저장 단위 (예: 4KB)
  • 저널(journal)
    • (옵션) 시스템 장애 대비를 위한 로그 기록 영역

디렉토리 구조

  • 대부분의 파일 시스템은 트리 구조의 디렉토리(폴더) 시스템을 지원
  • 루트 ( / ) 디렉토리를 기준으로 하위 디렉토리들이 계층적으로 구성됨
  • macOS, Linux 등은 모두 단일 루트 디렉토리 구조

 

inode 

inode는 파일 시스템에서 파일의 실제 메타데이터를 저장하는 데이터 구조체

파일 이름은 inode에 저장되지 않는다. 파일 이름은 디렉토리 엔트리에 저장되고 inode 번호를 참조한다.

항목 예시
파일 크기 1048576 bytes
생성/수정/접근 시간 2024-07-04T17:17:17
퍼미션 rwxr--r--
소유자/그룹 UID, GID
데이터 블록 주소 [123, 124, 125, ...]

 

읽기 예시

1. 사용자가 "cat /home/user/data.txt" 실행
2. 디렉토리 탐색 → 파일 이름 → inode 번호 찾음
3. inode 읽어서 실제 데이터 블록 위치 확인
4. 블록을 디스크에서 메모리로 로드 → 출력

 

주요 파일 시스템 종류

파일 시스템 설명 주 사용처
ext4 Linux에서 기본 사용. 저널링, 대용량 지원 Ubuntu, CentOS 등
NTFS 윈도우의 기본 파일 시스템. 접근 권한, 암호화 지원 Windows
FAT32/ exFAT 호환성이 좋지만 기능이 제한적 USB, 외장 디스크
APFS macOS에서 사용하는 최신 파일 시스템. 
스냅샷, 암호화 강점
macOS, iOS
XFS, Btrfs 고성능 서버, 고급 기능 (스냅샷, 압축 등) 서버, NAS

 

파일 시스템의 고급 기능

  • 저널링 : 변경 기록을 따로 저장해 장애 시 복구 기능
  • 스냅샷 : 파일 시스템의 시점 복사본을 생성
  • 트림 (TRIM) : SSD에서 삭제된 데이터 블록을 OS가 디바이스에 알리는 명령
  • 압축/암호화 : 일부 파일 시스템에서 기본 제공 (ex: Btrfs, APFS)