파일 시스템

파일 시스템은 운영 체제가 데이터를 저장하고 검색하는 방법을 제어하는 데 사용하는 방법 및 데이터 구조로, 하드 드라이브 또는 SSD와 같은 저장 장치에서 파일과 디렉토리를 구성하며 명명 규칙, 액세스 권한 및 데이터 구성을 결정합니다.

파일 시스템(FS)은 운영 체제(OS)가 데이터의 저장 및 검색 방법을 제어하는 데 사용하는 방법 및 데이터 구조입니다. 이는 하드 드라이브, SSD 또는 USB 드라이브와 같은 저장 장치에서 파일과 디렉토리를 계층적 또는 다른 구조화된 방식으로 구성하는 데이터 관리의 기반입니다. 파일 시스템의 주요 기능에는 파일 및 디렉토리 생성, 삭제, 읽기, 쓰기 및 구성이 포함됩니다. 파일 이름, 크기, 생성 날짜, 수정 날짜, 권한 및 소유권과 같은 파일 메타데이터를 관리합니다. 다양한 파일 시스템은 연속 할당, 연결 할당 또는 인덱스 할당과 같은 다양한 데이터 할당 기술을 사용하며, 각 기술은 고유한 성능 및 단편화 특성을 가집니다. 디렉토리 구조는 플랫, 계층적 또는 조합일 수 있습니다. 파일 시스템 설계의 주요 고려 사항에는 성능(처리량 및 지연 시간), 안정성(데이터 무결성, 내결함성), 확장성(많은 수의 파일 및 대용량 파일 처리), 보안(액세스 제어) 및 다양한 운영 체제와의 호환성이 포함됩니다. 예로는 이동식 미디어용의 간단한 FAT 변형부터 NTFS, ext4, APFS와 같은 복잡한 저널링 파일 시스템 및 HDFS 또는 Ceph와 같은 분산 파일 시스템까지 다양합니다.

        graph LR
  Center["파일 시스템"]:::main
  Rel_database["database"]:::related -.-> Center
  click Rel_database "/terms/database"
  Rel_caching["caching"]:::related -.-> Center
  click Rel_caching "/terms/caching"
  Rel_arweave["arweave"]:::related -.-> Center
  click Rel_arweave "/terms/arweave"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5살도 이해할 수 있게 설명

컴퓨터 저장 장치의 사서라고 생각하세요. 모든 책(파일)이 어디에 있는지 정확히 알고, 누가 읽을 수 있는지 추적하고, 올바른 장소에 다시 놓이도록 합니다.

🤓 Expert Deep Dive

파일 시스템은 물리적 저장 매체를 추상화하여 네임스페이스(디렉토리) 내에 구성된 명명된 데이터 컬렉션(파일)의 논리적 보기를 제공합니다. 핵심 구성 요소에는 메타데이터와 데이터 블록에 대한 포인터를 저장하는 아이노드(또는 동등한 구조)와 이름을 아이노드에 매핑하는 디렉토리 항목이 포함됩니다. 할당 전략은 성능과 단편화에 상당한 영향을 미칩니다. 연속 할당은 높은 순차 읽기 성능을 제공하지만 외부 단편화로 어려움을 겪습니다. 연결 할당은 외부 단편화를 피하지만 임의 액세스 성능이 좋지 않고 포인터 손상에 취약합니다. 인덱스 할당(예: Unix 파일 블록)은 균형을 제공하지만 직접/간접 블록 방식은 파일 크기를 제한할 수 있습니다. 저널링(예: ext4, NTFS)은 커밋 전에 의도된 메타데이터 변경 사항을 기록하여 충돌 후 파일 시스템 일관성을 보장함으로써 안정성을 향상시킵니다. 복사 후 쓰기(CoW) 파일 시스템(예: ZFS, Btrfs)은 데이터를 제자리에 덮어쓰지 않고 새 복사본을 만들어 데이터 무결성을 더욱 향상시키며 효율적인 스냅샷 및 데이터 스크러빙을 가능하게 합니다. 분산 파일 시스템(예: HDFS, GlusterFS)은 여러 노드에 데이터를 스트라이핑하여 확장성 및 내결함성을 해결하며, 정교한 일관성 모델 및 네트워크 프로토콜이 필요합니다.

📚 출처