파일시스템

박세건·2025년 6월 23일
post-thumbnail

파일시스템을 알아보기 위해 먼저 파일에 대해서 알아보자

파일

파일이란, 논리적인 저장 단위이고 관련된 정보들의 집합을 의미

  • 파일은 Record와 Block의 형태로 비휘발성 저장장치에 저장된다.

Record와 Block?

  • Record : 의미 있는 데이터 묶음, 데이터의 논리적인 단위
    • 참고로, Record의 각각의 정보는 Field라고함
  • Block : 디스크의 입출력의 물리적인 단위

    Ex.
    [20230001][홍길동 ][3][CS01] → 레코드 1
    [20230002][이영희 ][2][DS01] → 레코드 2
    [20230003][김민수 ][1][EE02] → 레코드 3
    512바이트 파일에 위의 정보가 저장되어있다면 각각은 Record를 의미함
    그리고, 만약 1 Block의 크기가 512바이트라면 디스크는 김민수 정보를 찾기위해서 레코드 3을 읽는게 아니라 파일 전체를 가져와서 읽음

그렇다면 레코드 단위가 아닌 파일 단위에서는?

Ex.
만약, 블록의 크기가 4KB이고, 파일의 크기가 1KB일때, 4개의 파일(A,B,C,D)이 존재함
그렇다면, A파일을 읽긱 위해서 블록단위를 가져오기 위해 A,B,C,D 파일을 모두 불러오나?
그렇지 않음
A의 파일(1KB)만 가져오고 나머지 3KB는 사용하지 않음(낭비) -> 내부 단편화

  • 왜?
    • 하나의 블록에 여러 파일이 들어가면 다른 파일의 데이터가 노출 될 수 있음
    • 또한, 파일 수정 및 삭제 시에 다른 파일에게 영향을 미칠 수 있음

구조

  • MetaData : 파일에 대한 정보
    • 파일 이름, 위치, 크기, 생성 시간, 등
  • 데이터 영역 : 실제 파일의 데이터

자원관리

  • CPU : 프로세스 관리
  • 주기억장치 : 메모리 관리
  • 보조기억장치 : 파일시스템

파일시스템

파일시스템이란, 보조기억장치에서 파일을 쉽게 사용할 수 있도록 관리하는 방법

  • 수많은 파일을 쉽게 관리하는 방법

특징

  • 커널 영역에서 동작
  • 파일 CRUD 기능을 수행하기 위한 목적
  • 계층적 Directory 구조
  • 디스크 파티션 별로 파일시스템을 하나씩 둘 수 있음

Disk Partition?

연속된 저장 공간을 하나 이상의 독립적인 영역으로 나눠서 사용할 수 있는 규칙

  • 하나의 디스크안에 여러 파티션을 두어서 사용

목적

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

접근 방법

  • 순차 접근(Sequential Access)
  • 직접 접근(Direct Access)
  • 색인 접근(Index Access)

순차 접근(Sequential Access)

  • 이름에서 볼 수 있듯이, 파일에 접근할 때 순서대로 처리
  • 읽고 쓰면 offset 증가(read or write)
  • 이전으로 돌아가기 위한 rewind 필요
  • reset 연산 제공(pointer 초기화)

직접 접근(Direct Access)

  • 임의의 순서로 레코드에 접근할 수 있음
  • read n, write n, position n 등 연산
  • pointer를 적절하게 유지하면, 직접 접근 방식으로, 순차 접근을 구현할 수 있음

색인 접근(Index Access)

  • 색인 기능을 사용해서 빠르게 원하는 데이터를 찾음
    • Ex. 박세건 -> 5번 레코드
  • 크기가 큰 파일의 입출력에 효과적

색인(Index)?

색인이란, 데이터를 빠르게 찾기위해 키->위치 형태로 저장해놓은 보조 구조


Directory 구조

Directory 구조란, 파일을 적절하게 그룹화하여, Directory를 빠르고 편리하게 사용할 수 있게 하기 위한 구조를 의미

설계 목표

  • Efficiency : 빠른 탐색이 가능해야함
  • Naming : 적절한 네이밍으로 편리함 제공
  • Grouping : 적절한 그룹화

Directory

Directory란, 메타데이터 중 일부를 보관하는 파일
Ex. 윈도우의 폴더

그럼 Directory는 실제 데이터를 포함하지 않는가?

그렇다.
Directory에는 파일의 이름과 inode 번호만 저장함
이 inode에 진짜 메타데이터(실제 데이터 위치를 포함)가 존재
=> 결과적으로 실제 데이터를 찾기 위해서는 Directory -> inode 번호 -> inode -> 실제 데이터 위치 -> 실제 데이터

inode?

inode란, 파일의 메타데이터와 실제 데이터의 위치 정보를 담고있는 구조체

  • 리눅스/유닉스 계열의 파일시스템에서 사용됨
  • 테이블 형태(속성 - 값)

구조

  • Single Level Directory
  • Two Level Directory
  • Acyclic Graph(비순환 그래프) Directory
  • General Graph(일반 그래프) Directory

Sigle Level Directory

  • 가장 간단함

  • 하나의 파일은 하나의 디렉토리 하위에 존재

  • 이름이 유일해야함

  • 다른 사용자라도, 이름이 같으면 안됨

  • Naming, Grouping Problem 존재

Two Levele Directory

  • 각 사용자 별도 별도의 Directory를 소유

  • 서로 다른 사용자는 동일한 이름의 Directory 이름 설정 가능

    • Naming Problem 해결
  • 유저를 나타내는 Directory와 각각의 유저들이 소유한 Directory를 의미하는 것으로 나뉨

  • Grouping Problem 존재

Tree Structured Directories

  • 사용자들은 자신의 서브 Directory를 생성할 수 있음
  • 절대 경로/상대 경로개념이 등장
    • 절대 경로 : 파일이 위치한 전체 경로
    • 상대 경로 : 현재 위치를 기반으로 파일이 위치한 경로
  • 이 경로를 통해서 효율적인 탐색 및 그룹화가 가능
    • Grouping Problem 해결
  • 파일인지 Directory인지 구분 필요
    • 0 : 파일
    • 1 : Directory

Acyclic Graph (비순환 그래프) Directory

  • 하위 Directory or 파일을 공유할 수 있음
  • 때문에, 서로 다른 사용자는 같은 파일에 대해서 다른 이름을 설정 가능
  • 하지만, 지정한 파일이 다른 사용자에 의해 사라질 수 있는 경우가 존재함
    • Dangling Pointer
  • 위 문제를 해결하기 위해 참조계수를 설정
    • 참조계수 1 이면, 다른 사용자가 참조중, 0 이면 참조하지 않고 않음(삭제 가능)
  • 윈도우에서 해당 구조를 경험하기 위해서는 심볼릭 링크 or 바로가기를 활용해야함
    • 하지만, 바로가기는 파일 시스템 레벨이 아니라고함

General Graph(일반 그래프) Directory

  • 순환을 허용하는 그래프 구조
  • 순환을 통한 무한 루프 때문에 잘 사용하지 않음
  • 현재 윈도우 구조에서는 가능하지만 OS가 순환을 감지해서 경고해줌

대표적인 파일 시스템 비교

항목FAT32NTFSext4UFS
요약 설명오래된, 단순한 파일 시스템 (USB 등에 아직 사용됨)Windows에서 사용하는 기능 많은 최신 파일 시스템Linux에서 가장 널리 쓰이는 안정적 파일 시스템UNIX 계열 OS에서 쓰이는 전통적인 파일 시스템
사용 OSDOS, Windows, USB 등Windows (기본)Linux (Ubuntu, CentOS 등)UNIX 계열 (FreeBSD, Solaris 등)
개발 시기1977년(FAT), 1996년(FAT32)1993년~2008년1983년
최대 파일 크기4GB16TB 이상16TB 이상1TB 이상 (버전에 따라 다름)
최대 볼륨 크기8TB256TB 이상1EB 이상수 TB~EB (버전에 따라 다름)
저널링 지원❌ 없음✅ 있음✅ 있음✅ 있음
보안 기능❌ 없음✅ 파일/폴더 권한, 암호화 등✅ 리눅스 권한, ACL 등✅ POSIX 권한
주 사용 용도USB, 외장하드, 레거시 장비Windows 시스템 디스크, 고급 파일 관리용리눅스 서버, 개발 환경 등UNIX 시스템, 서버, 네트워크 장비 등

저널링이란?

저널링이란, 파일시스템이 파일을 변경하는 과정에서 디스크에 반영되기 전에 미리 저널이라는 공간에 기록하는 방식을 의미

  • 갑자기 시스테 다운 되었을때의 복구 or 롤백을 위해
  • 데이터 무결성 유지
profile
멋있는 사람 - 일단 하자

0개의 댓글