운영체제 | inode 파일 시스템 구조

Faithful Dev·2025년 1월 26일

컴퓨터 공학

목록 보기
38/81

파일 시스템에서 inode 방식은 파일 관리와 데이터 저장을 위한 효율적이고 유연한 구조를 제공한다. 이 방식은 파일 메타데이터와 데이터 블록을 별도로 관리하며, 디렉토리 엔트리를 통해 파일과 디렉토리를 체계적으로 연결한다.

inode (Index Node) 방식

inode란?

  • inode는 파일 또는 디렉토리에 대한 모든 메타데이터를 저장하는 구조체이다.
  • 디스크 상의 특정 위치에 저장되며, 각 파일과 디렉토리는 고유한 inode를 가진다.

inode의 주요 정보

inode에는 다음과 같은 정보가 포함된다:

  • 파일 메타데이터:
    • 파일 크기
    • 파일 생성/수정/접근 시간
    • 파일 소유자 ID(UID)와 그룹 ID(GID)
    • 파일 권한(읽기, 쓰기, 실행 등)
    • 파일 타입(일반 파일, 디렉토리, 링크 등)
  • 데이터 위치:
    • 파일의 데이터 블록을 가리키는 포인터(Direct, Indirect Pointer 등).
  • 링크 수(Link Count):
    • 해당 inode를 참조하는 디렉토리 엔트리 수(하드 링크 개수).

inode가 포함하지 않는 정보

  • 파일 이름:
    inode는 파일 이름을 저장하지 않는다. 대신 파일 이름은 디렉토리 엔트리에 저장된다.

inode 번호

  • inode는 고유한 번호로 식별되며, 파일 시스템 내에서 파일이나 디렉토리를 찾는 데 사용된다.

inode의 데이터 블록 포인터

inode는 파일 데이터를 저장하는 데이터 블록의 위치를 추적한다. 데이터 블록의 위치를 관리하기 위해 포인터 체계를 사용한다.

포인터 체계

  1. 직접 포인터 (Direct Pointer):
    • 파일 데이터가 저장된 블록을 직접 가리킴.
    • 일반적으로 12개의 직접 포인터를 포함.
  2. 간접 포인터 (Indirect Pointer):
    • 직접 포인터의 수가 부족할 경우, 간접 포인터를 사용.
    • 단일 간접 포인터: 하나의 포인터 블록이 여러 데이터 블록을 가리킴.
    • 이중 간접 포인터: 포인터 블록이 또 다른 포인터 블록을 가리킴.
    • 삼중 간접 포인터: 포인터 블록이 2단계 포인터 블록을 가리킴.

장점

  • 작은 파일은 직접 포인터만으로 처리해 효율적.
  • 큰 파일은 간접 포인터로 확장 가능.

디렉토리 엔트리 (Directory Entry)

디렉토리 엔트리란?

  • 디렉토리는 파일과 디렉토리를 관리하는 특수한 파일로, 각 파일/디렉토리에 대한 정보를 담은 엔트리 목록을 포함한다.
  • 디렉토리 엔트리는 파일 이름과 해당 inode 번호를 매핑하는 역할을 한다.

디렉토리 엔트리의 구조

디렉토리 엔트리에는 다음 정보가 포함된다:

  1. 파일 이름:
    • 파일 또는 디렉토리의 이름.
  2. inode 번호:
    • 해당 파일 또는 디렉토리를 가리키는 inode 번호.

디렉토리 구조

디렉토리는 트리 형태로 구성된다:

  • 루트 디렉토리(/): 파일 시스템의 최상위 디렉토리.
  • 하위 디렉토리: 디렉토리 내의 디렉토리가 중첩되어 계층 구조를 형성.

inode 방식의 파일 검색 과정

  1. 사용자가 파일 이름을 요청하면, 파일 시스템은 루트 디렉토리부터 탐색을 시작한다.
  2. 디렉토리 엔트리를 참조하여 파일 이름과 매칭되는 inode 번호를 찾는다.
  3. inode 번호를 이용해 해당 inode를 읽고, 파일의 메타데이터 및 데이터 블록을 확인한다.
  4. 데이터 블록 포인터를 따라 파일 데이터를 검색한다.

--

inode 방식의 장단점

장점

  1. 유연한 파일 크기 관리:
    • 직접, 간접 포인터를 사용해 소형 파일과 대형 파일 모두 효율적으로 관리.
  2. 효율적인 디렉토리 관리:
    • 디렉토리 엔트리와 inode를 분리하여 파일 이름과 메타데이터를 독립적으로 처리.
  3. 하드 링크 지원:
    • 하나의 inode를 여러 디렉토리 엔트리가 참조할 수 있어 효율적.

단점

  1. 메모리 낭비:
    • 작은 파일의 경우, 데이터 블록보다 inode 관리에 더 많은 공간이 소모될 수 있음.
  2. 파일 이름 저장 문제:
    • 파일 이름은 디렉토리 엔트리에 저장되므로, 디렉토리 검색 시 추가적인 오버헤드가 발생.

예: EXT 파일 시스템에서의 inode

리눅스의 EXT 파일 시스템에서 inode와 디렉토리 엔트리는 다음과 같은 방식으로 작동한다:

  1. inode 테이블:
    파일 시스템 초기화 시 생성되며, 각 파일에 고유한 inode가 할당된다.
  2. 블록 그룹 구조:
    inode와 데이터 블록은 여러 블록 그룹으로 나뉘어 저장되어, 데이터 접근을 최적화한다.
  3. 하드 링크:
    여러 디렉토리 엔트리가 동일한 inode를 참조해, 동일 데이터를 효율적으로 공유한다.

정리

inode 방식 파일 시스템은 메타데이터와 파일 데이터를 분리하여 저장소를 효율적으로 관리하고, 디렉토리 엔트리를 통해 파일 이름과 데이터를 연결한다. 이는 파일 시스템의 성능과 확장성을 높이는 핵심적인 설계 방식이다.

profile
Turning Vision into Reality.

0개의 댓글