반응형
리눅스에서 데이터를 저장하고 접근하는 데 있어서 파일 시스템은 매우 중요한 역할을 합니다.
파일 시스템이 없다면 운영체제는 데이터가 디스크의 어느 위치에 있는지 알 수 없게 되며, 데이터를 효과적으로 관리할 수 없습니다.
파일 시스템은 데이터의 물리적 저장 위치를 관리하고, 다른 데이터를 덮어쓰지 않도록 보호해 줍니다.
파일 시스템이 어떻게 디스크에 데이터를 저장하고 관리하는지에 대해 알아볼까요?
디바이스 파일 vs 파일 시스템: 차이점은?
- 디바이스 파일
- 디바이스 파일은 프로세스가 스토리지 하드웨어에 직접 접근하는 방식입니다.
- 디바이스 드라이버를 통해 프로세스가 저장장치와 직접 통신합니다.
- 이 방식은 데이터를 저장하거나 읽는 데 있어 위치를 지정하지 않고, 단순히 데이터 입출력을 처리하는 방식입니다.
프로세스 → 디바이스 파일 → 디바이스 드라이버 → 저장장치 - 파일 시스템
- 파일 시스템은 프로세스와 저장장치 사이에서 데이터를 효율적으로 관리하는 중간 계층입니다.
- 파일 시스템은 메타데이터라는 부가적인 정보를 이용해 데이터가 어디에 저장되어 있는지, 크기나 접근 권한 등을 관리합니다.
프로세스 → 파일 시스템에 있는 파일 → 파일 시스템 코드 → 디바이스 드라이버 → 저장장치
파일 시스템의 데이터와 메타데이터
파일 시스템에서는 데이터와 메타데이터라는 두 가지 유형의 데이터를 관리합니다.
이는 파일 시스템이 파일을 효율적으로 관리할 수 있게 해주는 핵심 요소들입니다.
1. 데이터
- 사용자가 작성하는 문서, 영상, 프로그램 등이 포함됩니다.
- 파일 자체에 포함된 내용이라고 볼 수 있습니다.
2. 메타데이터
- 파일을 관리하는 목적의 부가적인 정보입니다.
- 파일 시스템에서 효율적으로 파일을 찾고 관리할 수 있도록 도움을 줍니다.
[메타 데이터의 구성 요소]
- 파일 이름: 각 파일을 구별할 수 있는 고유한 이름.
- 저장 장치에서의 위치, 크기: 파일이 디스크의 어느 위치에 저장되어 있는지, 파일의 크기는 얼마인지.
- 파일 종류: 일반 파일, 디렉터리, 디바이스 파일 등으로 구분됩니다.
- 파일 시간 정보:
- 작성 날짜: 파일이 처음 생성된 날짜.
- 최종 접근 날짜: 마지막으로 해당 파일에 접근한 날짜.
- 최종 수정 날짜: 파일이 마지막으로 수정된 날짜.
- 파일 권한 정보: 어떤 사용자가 파일에 접근할 수 있는지에 대한 정보.
- 디렉터리 데이터: 디렉터리 내에 어떤 파일들이 들어 있는지.
이러한 메타데이터는 파일 시스템이 파일을 체계적으로 관리할 수 있도록 하며,
사용자는 메타데이터를 통해 파일을 쉽게 찾고, 어떤 파일을 어떤 용도로 사용할지 판단할 수 있습니다.
리눅스 파일 시스템 처리 순서
리눅스 셸에서 파일 시스템에 접근하면 일련의 처리 과정이 발생합니다.
이 과정은 파일 시스템의 조작용 함수가 호출되면서 시작되며, 여러 단계로 이루어집니다.
파일 시스템 처리 순서
- 파일 시스템 조작용 함수 호출
- 사용자가 파일을 읽거나 쓸 때, 파일 시스템 조작용 함수가 시스템 콜을 호출합니다. 이를 통해 내부적으로 파일 시스템과 상호작용하게 됩니다.
- 커널 내 가상 파일 시스템(VFS) 처리
- VFS(Virtual File System)는 다양한 종류의 파일 시스템을 하나의 통일된 인터페이스로 처리할 수 있게 해줍니다. 이 과정에서 각각의 파일 시스템 처리 방식에 맞게 호출이 이루어집니다.
- 파일 시스템 처리 후 디바이스 드라이버 호출
- 파일 시스템 처리가 완료되면, 디바이스 드라이버를 호출하여 실제 저장장치를 조작합니다.
- 디바이스 드라이버가 장치를 조작
- 마지막으로, 디바이스 드라이버가 하드웨어를 제어하여 데이터를 읽거나 저장하게 됩니다.
파일 시스템 조작용 함수
파일 시스템 조작 함수는 파일이나 디렉터리와 같은 객체를 다루는 함수로 나눌 수 있습니다.
- 파일 조작 함수
- 생성 및 삭제: create(), unlink()
- 열기 및 닫기: open(), close()
- 읽기 및 쓰기: read(), write(), mmap()
- 디렉터리 조작 함수
- 생성 및 삭제: 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 |