[간단 용어 정리] File System

TraceofLight·2023년 9월 14일
0

TIL

목록 보기
6/6
post-thumbnail

들어가며

현재 맡은 업무에서 기반 용어들에 대해 지식이 조금 부족하다는 것을 느껴서 내친 김에 알고 있던 용어들까지 추가로 조사하여 간략하게 따로 정리해보는 시간을 갖기로 했다.

File Descriptor

  1. 리눅스, 유닉스 계열 시스템에서
  2. Process가 File을 다룰 때 사용하는 값의 일종

프로세스가 파일을 오픈할 때 커널이 해당 프로세서의 파일 디스크립터 숫자 중, 사용하지 않는 가장 작은 값을 할당하면, 이후 오픈된 파일에 시스템 콜을 사용하여 접근할 시, 디스크립터 값을 활용하여 파일을 지칭할 수 있다.

기본 할당 디스크립터

  1. 표준 입력 (Standard Input)
  2. 표준 출력 (Standard Output)
  3. 표준 에러 (Standard Error)

Inode

Index Node의 줄임말, 파일을 빠르게 찾기 위한 노드

inode는 리눅스의 모든 파일에 인덱스를 부여하고 해당 파일에 대한 메타데이터를 보유하고 있는 노드이다. list 명령어를 통해 출력하는 메타데이터를 inode에서 보유하고 있다.

원본 파일의 inode를 가리키는 정보를 가진 파일

  • 내부적으로 파일 접근은 inode 번호를 통해 액세스
  • 원본 파일에 대한 정보를 가지고 있지 않은 새로운 inode를 가짐
  • 새로운 inode를 가진 파일이 아닌 inode만 그대로 복사한 파일
  • 진짜 복사와의 차이점은 data 기록이 복사와 달리 추가적으로 발생하지 않음

Block Device & Character Device

  • 데이터 전송 방식의 차이로 디바이스 분류
  • Block: 블록이나 섹터 등의 정량 단위로 데이터 전송, IO 전송 속도가 빠름
  • Character: Byte 단위로 데이터 전송, IO 전송 속도가 다소 느릴 수 있지만 Application단에서 Buffering 제어를 통한 성능 차이가 존재

Raw Device

파일 시스템이 set up 되지 않은 장치

  • OS 커널에 의해 버퍼링 되지 않으며, Device로부터 Data 직접 전송, 자체적인 캐싱 시스템을 가진 경우 사용

  • Disk IO 성능이 좋고, CPU 오버헤드가 적다.

  • OS 파일 시스템 오버헤드를 피할 수 있고 OS 버퍼 사이즈를 줄일 수 있음.

  • shared disk의 경우 시스템에 구성하면 동시 access가 불가능하여 raw device로 사용.

IO Scheduler

디스크 I/O를 효율적으로 하기 위해 요청을 정렬, 병합하고 처리 순서를 결정하는 시스템의 일부.

  • 탐색 시간이 비싸서 같은 위치에 대한 요청을 병합하는 것이 효과적인 HDD와 같은 디바이스에 특히 유용하며 SSD에서는 효과가 반감된다.

  • 종류

    • noop: no-operation, 성능이 뛰어난 디스크에 사용

    • cfq (completely fair queueing): 프로세스마다 IO 대기열 부여하고 최대한 균등하게 예약, 다량의 프로세스가 세세한 IO를 발생시킬 때 사용

    • deadline: 한계점을 기준으로 가까울수록 우선 처리, 지연 시간에 대한 최적화, I/O 전부 균형적으로 처리하며 소수의 프로세스가 다수의 I/O를 발생시키는 환경에 적합

    • anticipacy: 향후 발생될 I/O 요청의 위치를 예측하고 가까운 위치에 존재하는 I/O 요청부터 처리하는 방식, 전통적인 HDD에서 사용하는 구조, 입출력을 모아서 처리하는 성질이 있어 지연 시간이 늘어질 가능성이 존재.

profile
24시간은 부족한 게 맞다

1개의 댓글

comment-user-thumbnail
2024년 2월 10일

👍

답글 달기