[컴퓨터과학] 운영체제(OS) - 파일 시스템 (FAT, inode, VFS)

Kyung Jae, Cheong·2024년 11월 2일
post-thumbnail

운영체제(OS) - File System

1. 파일 시스템이란?

파일 시스템은 운영체제가 저장매체에 파일을 읽고 쓰기 위한 자료구조와 알고리즘입니다.

  • 각 파일 시스템은 저장매체에 파일을 효율적으로 저장하고, 빠르게 접근할 수 있도록 다양한 구조와 방식을 제공합니다.

파일 시스템의 필요성

파일 시스템이 필요한 이유는 다음과 같습니다:

  • 데이터 조직화: 데이터의 효율적인 저장과 관리를 위해 구조화된 방식이 필요합니다.
  • 저장 및 검색 효율성: 빠르고 효율적인 파일 읽기 및 쓰기 작업이 가능합니다.
  • 데이터 보호: 파일 시스템은 권한과 접근 제어를 통해 데이터 보호를 강화합니다.

2. 파일 시스템의 종류

파일 시스템은 FAT, inode 기반 파일 시스템 등 다양한 방식으로 구현될 수 있으며, 각 방식은 특정한 목적과 특성을 가지고 있습니다.

  • 이 포스팅에서는 대표적인 파일 시스템인 FATinode 파일 시스템을 다루도록 하겠습니다.

2.1 FAT 파일 시스템

FAT(File Allocation Table)Windows와 같은 운영체제에서 사용되는 대표적인 파일 시스템입니다.

  • FAT파일 할당 테이블을 통해 각 파일의 위치를 추적합니다.

2.1.1 구조:

  • 파일 할당 테이블: 파일의 클러스터 위치를 저장하는 테이블로, 파일의 연결 리스트 형태로 각 클러스터의 다음 위치를 추적합니다.
  • 클러스터: 데이터를 저장하는 기본 단위입니다.

2.1.2 특징:

  • 단순하고, 소규모 저장 장치에 적합하지만, 파일의 조각화가 심해질 수 있습니다.
  • FAT32exFAT 등 변형된 구조를 통해서 단점들을 보완하며 다양한 용도에 맞게 발전해 왔습니다.

2.1.3 단점:

  • 대용량 파일 시스템으로 사용하기에는 한계가 있으며, 파일이 조각화되기 쉽습니다.

2.1.4 FAT 파일 시스템 장단점 요약

장점단점
구조가 단순하고, 소형 저장 장치에 적합대용량 파일에 비효율적이며, 조각화 발생
다양한 운영체제에서 호환 가능파일을 저장할 수 있는 크기의 제한 존재
메모리 오버헤드가 적음파일 위치를 찾는 데 시간이 오래 걸릴 수 있음

2.2 inode 방식 파일 시스템

inode 기반 파일 시스템리눅스 및 유닉스 계열 운영체제에서 주로 사용됩니다.

  • 각 파일은 고유한 inode 번호를 가지고 있으며, inode를 통해 파일의 메타 데이터와 데이터 블록을 추적합니다.

2.2.1 inode 파일 시스템 기본 구조

  • 수퍼 블록(Super Block): 파일 시스템 전체의 정보를 저장합니다.
  • 아이노드 블록(inode Block): 파일의 메타 정보를 저장하는 블록입니다.
  • 데이터 블록(Data Block): 실제 파일 데이터가 저장되는 영역입니다.

2.2.2 inode와 파일

  • 파일 이름과 inode 번호가 매칭되어, 파일 이름을 통해 inode 번호를 찾고, inode를 기반으로 파일에 접근합니다.
  • inode는 파일의 메타 데이터(파일 권한, 소유자 정보, 파일 크기, 생성 시간 등)를 저장하며, 실제 데이터 위치inode에 기록됩니다.

2.2.3 inode 방식 파일 시스템 장단점

  • 장점:
    • 파일이 저장될 데이터 블록을 독립적으로 관리하여 조각화 문제를 줄일 수 있습니다.
    • 대용량 파일을 효율적으로 관리할 수 있으며, 메타 데이터 접근 속도가 빠릅니다.
  • 단점:
    • inode 블록의 수가 제한되어 있어 많은 수의 파일을 다룰 때 inode 부족 문제가 발생할 수 있습니다.
    • 디렉토리 엔트리에서 inode 번호를 찾는 추가 단계가 있어, 파일 시스템의 구조가 상대적으로 복잡합니다.

2.2.4 inode 구조

inode는 각 파일에 대해 다음과 같은 정보를 포함합니다:

  • 파일 권한(Mode)
  • 소유자 정보(Owner)
  • 파일 크기(Size)
  • 시간 관련 정보(Timestamp)
    • 생성, 수정, 접근 시간
  • 데이터 블록 위치 정보
    • 데이터 블록 포인터는 파일의 실제 데이터를 저장하는 데이터 블록의 주소를 가리킵니다. 일반적으로 다음과 같이 구성됩니다:
      • Direct Blocks:
        • 48KB 이하의 작은 파일은 직접 데이터 블록을 가리키는 여러 개의 직접 포인터를 사용합니다. 각 포인터는 하나의 데이터 블록을 가리킵니다.
      • Single Indirect Block:
        • 직접 블록으로 표현하기 어려운 큰 파일(48KB ~ 4MB)을 위해, 간접 포인터를 사용하여 한 블록 안에 여러 데이터 블록의 주소를 저장할 수 있습니다.
        • 하나의 간접 포인터당 대략 1024개의 데이터 블록을 저장 할 수 있습니다
      • Double Indirect Block: 더 큰 파일(4GB)을 위해, 이중 간접 포인터를 사용합니다. 한 블록이 또 다른 블록을 가리키며, 그 블록이 여러 데이터 블록의 주소를 저장합니다.
      • Triple Indirect Block: 매우 큰 파일(4TB)을 지원하기 위해, 삼중 간접 포인터를 사용합니다. 세 단계를 거쳐 데이터를 참조할 수 있도록 설계된 구조입니다.
    • 이러한 데이터 블록 포인터 구조를 통해 inode는 작은 파일부터 대용량 파일까지 다양한 크기의 파일을 효율적으로 관리할 수 있습니다.
      • Direct Blocks는 빠르게 데이터를 접근할 수 있도록 돕고, 간접 포인터는 대용량 파일에 필요한 추가적인 블록을 관리하는 데 유용합니다.

이러한 정보를 통해 파일 시스템빠르게 파일을 찾고 필요한 메타 데이터를 제공합니다.

3. 디렉토리 엔트리와 파일 탐색

디렉토리 엔트리(Directory Entry)파일 이름inode 번호를 매칭하여, 파일 이름을 통해 해당 파일의 inode를 찾는 역할을 합니다.

예를 들어, 리눅스에서 /home/ubuntu/link.txt 파일을 찾는 과정은 다음과 같습니다:

  1. 루트 디렉토리('/')에서 home 디렉토리inode를 탐색합니다.
  2. home 디렉토리에서 ubuntu 디렉토리inode를 찾습니다.
  3. ubuntu 디렉토리에서 link.txtinode 번호를 찾아 파일에 접근합니다.

4. 가상 파일 시스템(Virtual File System, VFS)

가상 파일 시스템(VFS)은 운영체제가 다양한 파일 시스템을 통일된 인터페이스로 관리할 수 있도록 도와주는 계층입니다.

  • VFS의 역할:
    • 네트워크 장치외부 장치를 포함한 다양한 파일 시스템을 동일한 인터페이스로 접근합니다.
    • 파일 시스템 독립적인 함수(예: read, write)를 제공하여, 하위 파일 시스템의 종류에 상관없이 운영체제가 파일을 다룰 수 있게 합니다.
  • 예시:
    • 로컬 디스크네트워크 드라이브파일 시스템이 다를 경우에도, 사용자는 동일한 방식으로 파일을 접근할 수 있습니다.

VFS의 유연성과 확장성

  • 가상 파일 시스템은 하드웨어에 독립적인 파일 시스템 접근을 가능하게 해주어, 다양한 파일 시스템을 운영체제 내에서 동일한 인터페이스로 접근할 수 있도록 지원합니다.
  • 이를 통해 네트워크 파일 시스템, 로컬 파일 시스템, 그리고 외부 저장 장치에 대한 파일 접근이 일관성 있는 방식으로 이루어질 수 있습니다.
  • 이로 인해 운영체제의 유연성과 확장성이 크게 향상되며, 여러 파일 시스템을 통합적으로 관리할 수 있습니다.

마무리

이번 포스팅에서는 FATinode 파일 시스템을 통해 파일 시스템의 주요 개념과 구조를 살펴보았습니다.

  • FAT 파일 시스템단순한 구조와 관리 용이성으로 인해 널리 사용되었으나, 조각화 문제대용량 파일 관리 한계가 있었습니다.
  • 반면, inode 기반 파일 시스템대용량 파일을 효율적으로 관리하고 메타 데이터 접근 속도가 빠르다는 장점이 있지만, inode 블록 수의 제한이 단점으로 작용할 수 있습니다.

이러한 파일 시스템의 차이점은 저장 매체의 용도와 운영체제에 따라 적합한 파일 시스템을 선택할 때 중요한 요소가 됩니다.

또한, 파일시스템은 가상 파일 시스템(VFS)을 통해 다양한 파일 시스템이 통합된 인터페이스로 관리될 수 있으며, 이를 통해 운영체제의 유연성과 확장성이 크게 향상됩니다.

  • VFS네트워크 파일 시스템, 로컬 파일 시스템 등 다양한 시스템을 일관된 인터페이스로 다룰 수 있도록 하여, 여러 파일 시스템을 통합적으로 관리할 수 있는 기반을 제공합니다.

다음 포스팅부터는 리눅스OS를 기반으로 시스템 소프트웨어에 대해 다루어볼 예정입니다만, 상황에 따라선 네트워크 쪽을 먼저 다루게 될 수도 있습니다.

profile
일 때문에 포스팅은 잠시 쉬어요 ㅠ 바쁘다 바빠 모두들 화이팅! // Machine Learning (AI) Engineer & BackEnd Engineer (Entry)

0개의 댓글