Computer Science/Operating System

[OS] 파일 시스템 (File System)

dbssk 2023. 6. 17. 00:38

파일 시스템 (File System)

  • 파일이나 자료를 쉽게 발견 할 수 있도록 유지, 관리하는 방법
  • 사용자 영역이 아닌 커널 영역에서 동작
  • 파일을 빠르게 읽기, 쓰기, 삭제 등 기본적인 기능을 원활히 수행하기 위한 목적

 

파일 시스템 역할

  • 파일 관리 : 파일 저장, 참조, 공유
  • 보조 저장소 관리 : 저장 공간 할당
  • 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미
  • 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공

 

파일 시스템 개발 목적

  • 하드디스크를 효율적으로 이용하고 하드디스크와 메인 메모리의 속도 차이를 줄이기 위해
  • 파일 관리

 

파일 시스템 구조

  • 블록(Block)
    • 파일 시스템의 최소 저장 단위
    • 각 블록은 고유한 주소 또는 인덱스를 가진다.
    • 파일 데이터와 메타데이터가 포함된다.

  • 파일(File)
    • 데이터를 저장하는 단위로 사용자가 생성하고 조작하는 단위
    • 파일 이름과 파일 내용으로 구성되며, 파일 내용은 블록에 저장된다.
    • 고유한 식별자를 가지며, 메타데이터(파일 크기, 생성일, 수정일 등)를 가지고 있다.

  • 디렉터리(Directory)
    • 파일과 다른 디렉터리를 그룹화하고 조직화하는 논리적인 컨테이너

  • 메타데이터(Metadata)
    • 파일 및 디렉터리와 관련된 정보를 나타내는 데이터

  • 파일 시스템 테이블(File System Table)
    • 파일 시스템의 메타데이터와 관련된 정보를 포함하는 테이블
    • 파일 시스템의 일관성 유지와 성능 향상을 위해 사용

 

파일 할당 방식

연속 할당 (Contiguous Allocation)

  • 파일을 디스크 상의 연속적인 공간(블록)에 저장하는 방식
  • 장점
    • 파일을 읽고 쓰는 속도가 빠르다. 연속적인 블록으로 구성되어 있기 때문에 파일 접근 시 디스크 헤드의 이동이 최소화되어 효율적인 I/O가 가능하다. (동영상/음악/VOD와 같이 크기가 큰데 실시간인 자료들에 적합)
    • 간단하고 직관적인 구조로 파일 시스템의 오버헤드가 적다.

  • 단점
    • 파일의 크기를 미리 지정해야 하기 때문에 파일 크기의 예측이 어렵다.
    • 파일이 삭제되거나 크기가 변경될 경우, 연속된 공간을 유지하기 위해 파일을 이동해야 할 수 있다. 이 과정에서 외부 단편화가 발생할 수 있다.
    • 연속된 공간이 부족한 경우 파일을 저장할 수 없는 상황이 발생할 수 있다.

 

연결 할당 (Link Allocation)

  • 파일을 linked list의 형태롤 저장하는 방식
  • 디렉토리에 제일 처음 저장되는 블록을 가리키게 되고 각 블록은 포인터를 가지고 있어 다음 블록을 가리킨다.
  • 장점
    • 외부 단편화 방지 : 새로운 파일이 만들어진다고 가정하면 비어있는 임의의 블록을 첫 블록으로 지정하고 파일이 커지면 다른 블록을 할당 받고 포인터를 이용해 연결 하면 된다. 

  • 단점
    • 순서대로 읽는 것만 가능하다.
    • 포인터 저장을 위해 4바이트 이상을 손실시켜야 한다.
    • 포인터가 끊어지면 접근이 불가하기 땜누에 낮은 신뢰성을 가진다.
    • 포인터를 따라가야 하므로 속도가 느릴 수 있다.

 

색인 할당 (Indexed Allocation)

  • 파일 당 인덱스 블록을 사용하여 파일을 할당하는 방법
  • 인덱스 블록 : 각 파일에 할당된 포인터를 저장하는 모음
  • 연결 할당과 같은 방식으로 할당을 하지만 인덱스 블록을 둔다는 점이 다르다.
  • 장점
    • 인덱스를 통해 파일 내 특정 블록을 빠르게 찾을 수 있다.
    • 파일의 크기를 동적으로 조정할 수 있다.
    • 외부 단편화 방지

  • 단점
    • 인덱스 블록 할당에 따른 저장 공간의 손실이 발생할 수 있다.

 

파일 시스템 접근 방법

순차 접근(Sequential Access)

  • 파일을 처음부터 끝까지 순차적으로 접근하는 방법
  • 즉, 각 블록을 순서대로 읽거나 쓰는 방식
  • 주로 테이프 드라이브와 같은 순차적인 데이터 저장 장치에서 사용

 

직접 접근(Direct Access)

  • 파일 내의 임의의 위치에 직접 접근하는 방법
  • 블록의 고유한 주소 또는 인덱스를 사용하여 원하는 위치로 직접 이동한다.
  • 따라서, 파일 내의 어떤 블록에든 빠르게 접근할 수 있다.
  • 하드 디스크와 같은 랜덤 액세스 장치에서 주로 사용
  • 대용량 파일이나 데이터베이스와 같이 빠른 액세스가 필요한 작업에 유용

 

색인 접근(Indexed Access)

  • 파일 시스템에 추가적인 색인 구조를 사용하여 파일에 접근하는 방법
  • 일반적으로 색인 구조는 파일 시스템 테이블에 저장되며, 각 파일의 색인은 해당 파일의 위치를 가리키는 포인터로 구성된다.
  • 데이터베이스 시스템에서 주로 사용

 

디렉토리와 디스크 구조

1단계 디렉토리 (Single-Level Directory)

 

  • 가장 간단한 구조로 모든 파일이 하나의 디렉터리 내에 위치한다.
  • 각각의 파일 이름이 달라야 하고, 파일의 사용자의 수가 증가하면 파일을 관리하는데에 어려움이 생긴다.

 

2단계 디렉토리 (2-Level Directory)

  • 루트 = MFD, 아래로 UFD가 있고 그 아래로 파일이 있다. 여기서 파일은 트리의 리프에 해당한다.
  • 사용자마다 MFD를 배정하여 서로 다른 사용자가 같은 이름의 파일을 가질 수 있다.

 

트리 구조 디렉토리 (Tree Directory)

  • 트리 형태의 디렉토리 구조로 하나의 루트 디렉토리와 여러 개의 서브 디렉토리로 구성되어 있다.
  • 디렉토리의 생성과 제거가 비교적 용이하다.
  • 디렉토리 탐색시 포인터를 이용한다.
  • 디렉토리간 파일이나 서브 디렉토리의 공유를 허용하지 않는다.
  • 절대 경로명 : 루트에서부터 가리킨 파일까지 모든 경로를 지정하는 것
  • 상대 경로명 : 현재 디렉터리의 위치를 기준으로 목적하는 파일가지의 경로를 지정하는 것

 

비순환 그래프 디렉토리(Acyclic Graph Directory)

  • 트리 구조 디렉토리를 확장한 구조
  • 트리 구조와 다르게 디렉토리간에 파일이나 서브 디렉토리의 공유가 가능하다. ex) 한 폴더에 다른 폴더에 있는 파일이나 폴더의 바로가기를 생성한 것
  • 복사의 개념이 아니라 링크(link)라 불리는 새로운 디렉토리 항목을 만드는 것으로, 한 디렉토리에서 공유한 파일이나 폴더에 수정이 일어나면 다른 디렉토리에서도 해당 파일이나 디렉토리의 변화를 볼 수 있다.
  • 디렉토리 구조가 복잡하고, 공유된 하나의 파일에 대해 두번 이상 탐색될 수 있어 성능이 저하될 수 있다.
  • 또한, 한 디렉토리에서 공유된 파일을 삭제할 경우, 고아 포인터가 발생한다. ex) 바로가기를 눌렀을 때 해당 파일이 없다는 문구가 뜨는 것

 

일반 그래프 디렉토리(General Graph Directory)

  • 사이클을 허용하는 디렉토리 구
  • 비순환 그래프 디렉토리와 다르게 순환이 허용되므로 무한루프에 빠질 수 있다.

 

inode 방식 파일 시스템

  • inode 고유값과 자료구조로 주요 정보 관리
    • '파일이름:inode' 로 파일이름은 inode 번호와 매칭
    • 파일 시스템에서는 inode를 기반으로 파일에 접근
    • inode 기반으로 메타 데이터 저장

 

파일 시스템 구조

1. 슈퍼 블록 : 파일 시스템 정보 및 파티션 정보

 

2. inode 블록 : 파일 상세 정보

  • inode가 모여있는 공간
  • 모든 파일/디렉토리는 inode를 하나씩 가지고 있으며, 해당 파일의 소유권, 파일 종류, 실제 데이터의 주소 등(=메타 데이터)을 가지고 있다.

 

3. 데이터 블록 : 실제 데이터

 

참고

44_디렉토리 구조 (Directory Structure) :: Data Science Lab (sungwookkang.com)

운영체제 26장 - 파일 관리(1) : 파일 할당 - (tistory.com)

https://eunjinii.tistory.com/147