리눅스 파일 시스템

2024. 11. 21. 10:04교재집필

리눅스에서 파일 시스템은 커널의 핵심 구성 요소로, 다양한 파일 시스템을 통합적으로 관리하기 위해 가상 파일 시스템(Virtual File System, VFS) 계층을 사용합니다. VFS는 여러 파일 시스템 간의 일관된 인터페이스를 제공하여, 사용자와 응용 프로그램이 파일 시스템의 종류에 상관없이 동일한 방식으로 파일에 접근할 수 있도록 합니다.

리눅스 파일 시스템의 주요 구성 요소:

  1. 가상 파일 시스템(VFS): VFS는 리눅스 커널 내에서 다양한 파일 시스템을 추상화하여 통일된 인터페이스를 제공합니다. 이를 통해 ext4, XFS, Btrfs 등 서로 다른 파일 시스템을 동일한 방식으로 처리할 수 있습니다.
  2. 파일 시스템 드라이버: 각 파일 시스템에 대한 구체적인 구현을 담당하는 모듈로, VFS와 실제 파일 시스템 간의 중개 역할을 합니다. 예를 들어, ext4 파일 시스템 드라이버는 ext4 형식의 디스크를 처리하는 기능을 수행합니다.
  3. 버퍼 캐시(Buffer Cache): 디스크 I/O 성능을 향상시키기 위해 자주 사용되는 데이터나 메타데이터를 메모리에 캐시하여 디스크 접근 횟수를 줄입니다.
  4. 페이지 캐시(Page Cache): 파일의 내용을 페이지 단위로 캐시하여 파일 읽기 및 쓰기 성능을 향상시킵니다.

리눅스 파일 시스템의 동작 과정:

  • 마운트(Mount): 파일 시스템을 특정 디렉토리에 연결하여 사용자가 해당 디렉토리를 통해 파일 시스템에 접근할 수 있도록 합니다. 예를 들어, /dev/sda1 파티션을 /mnt 디렉토리에 마운트하면, /mnt를 통해 해당 파티션의 파일에 접근할 수 있습니다.
  • 파일 접근: 사용자나 응용 프로그램이 파일에 접근하려는 요청을 하면, VFS는 해당 요청을 적절한 파일 시스템 드라이버로 전달합니다. 드라이버는 실제 파일 시스템에서 요청된 작업을 수행하고 결과를 반환합니다.
  • 캐시 활용: 버퍼 캐시와 페이지 캐시는 디스크 I/O를 최소화하여 시스템 성능을 향상시킵니다. 캐시에 없는 데이터에 접근할 경우에만 실제 디스크 I/O가 발생합니다.

이러한 구조를 통해 리눅스는 다양한 파일 시스템을 효율적으로 관리하고, 사용자와 응용 프로그램에 일관된 파일 접근 방식을 제공합니다.


리눅스의 파일 시스템은 트리 구조로 구성되어 있으며, 최상위 디렉토리인 루트 디렉토리(/)를 중심으로 다양한 하위 디렉토리가 존재합니다. 주요 디렉토리와 그 역할은 다음과 같습니다:

  • / (루트 디렉토리): 모든 파일과 디렉토리의 시작점으로, 시스템의 최상위 디렉토리입니다.
  • /bin: 기본적인 사용자 명령어 실행 파일이 위치한 디렉토리로, ls, cp, mv 등과 같은 필수 명령어들이 포함되어 있습니다.
  • /boot: 시스템 부팅에 필요한 파일들이 저장된 디렉토리로, 커널 이미지와 부트로더 설정 파일 등이 포함되어 있습니다.
  • /dev: 시스템의 장치 파일들이 위치한 디렉토리로, 하드웨어 장치에 접근하기 위한 파일들이 포함되어 있습니다.
  • /etc: 시스템의 설정 파일들이 모여 있는 디렉토리로, 네트워크 설정, 사용자 계정 정보 등 다양한 설정 파일이 포함되어 있습니다.
  • /home: 일반 사용자들의 홈 디렉토리가 위치한 곳으로, 각 사용자의 개인 파일과 설정이 저장됩니다.
  • /lib: 시스템과 프로그램이 사용하는 공유 라이브러리 파일들이 위치한 디렉토리입니다.
  • /media: CD-ROM, USB 드라이브 등과 같은 이동식 미디어가 마운트되는 디렉토리입니다.
  • /mnt: 일시적으로 파일 시스템을 마운트할 때 사용하는 디렉토리입니다.
  • /opt: 추가적인 응용 프로그램이 설치되는 디렉토리로, 선택적으로 설치되는 소프트웨어가 위치합니다.
  • /proc: 커널과 프로세스에 대한 정보를 가상 파일 형태로 제공하는 디렉토리로, 시스템 상태를 확인하거나 조정할 때 사용됩니다.
  • /root: 시스템 관리자(root)의 홈 디렉토리입니다.
  • /sbin: 시스템 관리에 필요한 명령어 실행 파일이 위치한 디렉토리로, 일반적으로 시스템 관리자만이 접근할 수 있는 명령어들이 포함되어 있습니다.
  • /tmp: 임시 파일들이 저장되는 디렉토리로, 시스템 재부팅 시 삭제되는 경우가 많습니다.
  • /usr: 사용자 응용 프로그램과 관련 파일들이 위치한 디렉토리로, bin, lib, share 등의 하위 디렉토리를 포함합니다.
  • /var: 로그 파일, 스풀 파일 등 가변적인 데이터 파일들이 저장되는 디렉토리입니다.

이러한 디렉토리 구조를 통해 리눅스 시스템은 파일과 디렉토리를 체계적으로 관리하며, 사용자와 시스템의 효율적인 운영을 지원합니다.