반응형

 

리눅스에서 데이터를 저장하고 접근하는 데 있어서 파일 시스템은 매우 중요한 역할을 합니다.

파일 시스템이 없다면 운영체제는 데이터가 디스크의 어느 위치에 있는지 알 수 없게 되며, 데이터를 효과적으로 관리할 수 없습니다.

파일 시스템은 데이터의 물리적 저장 위치를 관리하고, 다른 데이터를 덮어쓰지 않도록 보호해 줍니다.

 

파일 시스템이 어떻게 디스크에 데이터를 저장하고 관리하는지에 대해 알아볼까요?


디바이스 파일 vs 파일 시스템: 차이점은?

  1. 디바이스 파일
    • 디바이스 파일은 프로세스가 스토리지 하드웨어에 직접 접근하는 방식입니다.
    • 디바이스 드라이버를 통해 프로세스가 저장장치와 직접 통신합니다.
    • 이 방식은 데이터를 저장하거나 읽는 데 있어 위치를 지정하지 않고, 단순히 데이터 입출력을 처리하는 방식입니다.
    예시 흐름:
    프로세스 → 디바이스 파일 → 디바이스 드라이버 → 저장장치
  2. 파일 시스템
    • 파일 시스템은 프로세스와 저장장치 사이에서 데이터를 효율적으로 관리하는 중간 계층입니다.
    • 파일 시스템은 메타데이터라는 부가적인 정보를 이용해 데이터가 어디에 저장되어 있는지, 크기나 접근 권한 등을 관리합니다.
    예시 흐름:
    프로세스 → 파일 시스템에 있는 파일 → 파일 시스템 코드 → 디바이스 드라이버 → 저장장치

 

파일 시스템의 데이터와 메타데이터

파일 시스템에서는 데이터메타데이터라는 두 가지 유형의 데이터를 관리합니다.

이는 파일 시스템이 파일을 효율적으로 관리할 수 있게 해주는 핵심 요소들입니다.

1. 데이터

  • 사용자가 작성하는 문서, 영상, 프로그램 등이 포함됩니다.
  • 파일 자체에 포함된 내용이라고 볼 수 있습니다.

2. 메타데이터

  • 파일을 관리하는 목적의 부가적인 정보입니다.
  • 파일 시스템에서 효율적으로 파일을 찾고 관리할 수 있도록 도움을 줍니다.

[메타 데이터의 구성 요소]

  1. 파일 이름: 각 파일을 구별할 수 있는 고유한 이름.
  2. 저장 장치에서의 위치, 크기: 파일이 디스크의 어느 위치에 저장되어 있는지, 파일의 크기는 얼마인지.
  3. 파일 종류: 일반 파일, 디렉터리, 디바이스 파일 등으로 구분됩니다.
  4. 파일 시간 정보:
    • 작성 날짜: 파일이 처음 생성된 날짜.
    • 최종 접근 날짜: 마지막으로 해당 파일에 접근한 날짜.
    • 최종 수정 날짜: 파일이 마지막으로 수정된 날짜.
  5. 파일 권한 정보: 어떤 사용자가 파일에 접근할 수 있는지에 대한 정보.
  6. 디렉터리 데이터: 디렉터리 내에 어떤 파일들이 들어 있는지.

이러한 메타데이터는 파일 시스템이 파일을 체계적으로 관리할 수 있도록 하며,

사용자는 메타데이터를 통해 파일을 쉽게 찾고, 어떤 파일을 어떤 용도로 사용할지 판단할 수 있습니다.

 

 

리눅스 파일 시스템 처리 순서

리눅스 셸에서 파일 시스템에 접근하면 일련의 처리 과정이 발생합니다.

이 과정은 파일 시스템의 조작용 함수가 호출되면서 시작되며, 여러 단계로 이루어집니다.


파일 시스템 처리 순서

  1. 파일 시스템 조작용 함수 호출
    • 사용자가 파일을 읽거나 쓸 때, 파일 시스템 조작용 함수가 시스템 콜을 호출합니다. 이를 통해 내부적으로 파일 시스템과 상호작용하게 됩니다.
  2. 커널 내 가상 파일 시스템(VFS) 처리
    • VFS(Virtual File System)는 다양한 종류의 파일 시스템을 하나의 통일된 인터페이스로 처리할 수 있게 해줍니다. 이 과정에서 각각의 파일 시스템 처리 방식에 맞게 호출이 이루어집니다.
  3. 파일 시스템 처리 후 디바이스 드라이버 호출
    • 파일 시스템 처리가 완료되면, 디바이스 드라이버를 호출하여 실제 저장장치를 조작합니다.
  4. 디바이스 드라이버가 장치를 조작
    • 마지막으로, 디바이스 드라이버가 하드웨어를 제어하여 데이터를 읽거나 저장하게 됩니다.

파일 시스템 조작용 함수

파일 시스템 조작 함수는 파일이나 디렉터리와 같은 객체를 다루는 함수로 나눌 수 있습니다.

  1. 파일 조작 함수
    • 생성 및 삭제: create(), unlink()
    • 열기 및 닫기: open(), close()
    • 읽기 및 쓰기: read(), write(), mmap()
  2. 디렉터리 조작 함수
    • 생성 및 삭제: mkdir(), rmdir()
    • 디렉터리 이동: chdir()
    • 열기 및 닫기: opendir(), closedir()
    • 읽기: readdir()

이렇게 파일 시스템은 다양한 조작용 함수를 통해 파일과 디렉터리를 관리하며, VFS와 디바이스 드라이버를 통해 실제 하드웨어와 상호작용합니다!

반응형

'IT 기술 > 리눅스' 카테고리의 다른 글

[보안] 리눅스 - 부트로더 보안  (0) 2024.09.10
[리눅스] 기본 명령어  (0) 2024.09.10
[리눅스] NFS, FUSE  (1) 2024.09.10
[리눅스] 파일시스템 #3 (tmpfs, procfs, sysfs)  (0) 2024.09.10
[리눅스] 파일시스템 #2  (1) 2024.09.10

+ Recent posts