안녕하세요. 하얀 도화지 남편입니다.
오늘은 리눅스 파일 시스템 구조에 대해 알아 볼까합니다.
요약
리눅스 파일 시스템 구조는 계층적 디렉토리를 통해 효율적으로 데이터를 관리하고, 다양한 하드웨어와 소프트웨어 요구를 충족하도록 설계되었습니다. 루트 디렉토리(/
) 아래의 디렉토리는 각기 다른 역할을 담당하며, 시스템과 사용자가 조화를 이루어 작업할 수 있도록 돕습니다.
리눅스의 유연한 파일 시스템은 사용자와 개발자가 시스템을 최적화하거나 확장할 수 있도록 강력한 도구를 제공합니다.
리눅스 파일 시스템 구조
리눅스 파일 시스템 구조는 모든 데이터를 파일 형태로 관리하며, 계층적 디렉토리 구조(Hierarchical Directory Structure)를 기반으로 설계되었습니다. 루트 디렉토리(/
)를 최상위로 하여 모든 파일과 디렉토리가 트리 구조를 이루고 있습니다. 이 구조는 데이터의 효율적 관리와 시스템 자원의 일관성을 유지하도록 설계되었습니다.
1. 리눅스 파일 시스템의 특징
- 계층적 구조
- 루트 디렉토리(
/
)를 기준으로 모든 디렉토리와 파일이 연결됩니다. - 물리적 저장장치나 네트워크 자원도 루트 디렉토리 하위에 마운트됩니다.
- 루트 디렉토리(
- 파일과 디렉토리의 통합 관리
- 리눅스에서는 모든 것을 파일로 취급합니다.
- 예를 들어, 장치 파일(하드웨어), 소켓, 파이프도 파일 시스템 내에서 관리됩니다.
- 권한 및 소유권 관리
- 각 파일과 디렉토리는 소유자, 그룹, 기타 사용자로 나뉘며, 읽기(r), 쓰기(w), 실행(x) 권한을 설정할 수 있습니다.
- 저널링
- 대부분의 현대 리눅스 파일 시스템(ext4, XFS 등)은 저널링(Journaling)을 지원하여 데이터 손실을 최소화합니다.
2. 주요 디렉토리 구조
리눅스 파일 시스템의 루트 디렉토리(/
) 아래에는 시스템과 사용자가 사용하는 다양한 하위 디렉토리가 존재합니다. 주요 디렉토리와 그 역할은 다음과 같습니다:
디렉토리 | 설명 |
---|---|
/ |
최상위 디렉토리로, 모든 파일과 디렉토리가 여기에 연결됩니다. |
/bin |
기본 명령어 파일이 위치하는 곳으로, 일반 사용자가 실행할 수 있는 바이너리 파일이 포함됩니다. |
/boot |
부팅에 필요한 파일(커널, 초기화 파일 등)을 저장합니다. |
/dev |
장치 파일(하드웨어 장치)을 포함하며, 하드 드라이브, USB, 프린터 등이 이 디렉토리에 나타납니다. |
/etc |
시스템 설정 파일과 구성 파일이 저장됩니다. |
/home |
일반 사용자의 홈 디렉토리로, 각 사용자의 개인 파일이 저장됩니다. |
/lib |
시스템과 프로그램이 사용하는 공유 라이브러리가 위치합니다. |
/media |
CD, USB와 같은 이동식 장치가 자동으로 마운트되는 디렉토리입니다. |
/mnt |
임시로 외부 파일 시스템을 마운트할 때 사용하는 디렉토리입니다. |
/opt |
추가 애플리케이션 소프트웨어 패키지가 설치되는 디렉토리입니다. |
/proc |
시스템 프로세스 및 커널 정보를 가상 파일 형태로 제공하는 디렉토리입니다. |
/root |
시스템 관리자(root 사용자)의 홈 디렉토리입니다. |
/sbin |
시스템 관리자가 사용하는 시스템 바이너리 파일이 위치합니다. |
/srv |
시스템에서 제공하는 서비스 관련 데이터를 저장합니다. |
/tmp |
임시 파일을 저장하는 디렉토리로, 일정 시간이 지나면 자동 삭제됩니다. |
/usr |
사용자 애플리케이션 및 파일이 저장되며, 여러 하위 디렉토리를 포함합니다. |
/var |
로그 파일, 캐시 데이터, 메일 등 시스템이 동작하며 변화하는 데이터가 저장됩니다. |
3. 파일 시스템의 핵심 디렉토리
- /bin과 /sbin
/bin
은 일반 사용자가 실행 가능한 기본 명령어(예:ls
,cp
,mv
)를 포함합니다./sbin
은 시스템 관리자가 사용하는 명령어(예:reboot
,ifconfig
)를 저장합니다.
- /lib
/lib
디렉토리는 커널과 프로그램이 사용하는 필수 공유 라이브러리를 저장합니다.- 동적 링크 라이브러리(.so 파일)가 주로 여기에 있습니다.
- /proc
- 가상 파일 시스템으로, 실행 중인 프로세스와 커널 정보를 파일 형태로 제공합니다.
- 예:
/proc/cpuinfo
는 CPU 정보를,/proc/meminfo
는 메모리 정보를 담고 있습니다.
- /var
- 시스템의 로그 파일(
/var/log
), 메일 데이터(/var/mail
), 캐시(/var/cache
)가 저장됩니다. - 크기가 동적으로 변하는 데이터를 관리합니다.
- 시스템의 로그 파일(
4. 파일 시스템의 마운트
리눅스에서 파일 시스템은 마운트를 통해 디렉토리 계층에 연결됩니다. 마운트란 특정 장치(예: USB, 외장 하드 드라이브)를 특정 디렉토리에 연결하여 접근 가능하게 만드는 작업입니다.
- 마운트 명령어:
- 자동 마운트:
/etc/fstab
파일을 통해 부팅 시 특정 장치를 자동으로 마운트할 수 있습니다.
5. 파일 시스템 유형
리눅스는 다양한 파일 시스템을 지원하며, 각 파일 시스템은 특정 요구에 맞게 설계되었습니다.
파일 시스템 | 특징 |
---|---|
ext4 | 가장 널리 사용되는 파일 시스템으로 안정성과 성능이 우수합니다. |
XFS | 고성능 파일 시스템으로 대용량 데이터 처리에 적합합니다. |
Btrfs | 스냅샷 및 디스크 중복 제거와 같은 고급 기능을 지원합니다. |
NTFS | Windows에서 사용하는 파일 시스템으로, 리눅스에서도 읽기/쓰기가 가능합니다. |
FAT32 | USB와 같은 이동식 장치에서 주로 사용됩니다. |