
왜 리눅스는 C드라이브 대신 슬래시(/)부터 시작할까?
윈도우 환경에 익숙한 상태에서 리눅스 터미널을 처음 열면 C: 드라이브나 D: 드라이브가 보이지 않아 당황하기 쉽습니다. 대신 모든 경로의 출발점에는 낯선 슬래시('/') 하나만 자리 잡고 있습니다.
리눅스의 파일 구조는 커다란 나무 한 그루와 같습니다. 뿌리(Root, /)에서 출발해 줄기가 뻗어나가듯 /bin, /etc, /var 같은 폴더들이 일정한 규칙 아래 배치됩니다. 만약 프로그램 개발자나 시스템 관리자가 각자 내키는 위치에 실행 파일과 설정 파일을 저장한다면 서버는 순식간에 난장판이 될 것입니다.
이러한 혼선을 방지하기 위해 마련된 공식 약속이 바로 FHS(Filesystem Hierarchy Standard, 파일시스템 계층구조 표준)입니다. 리눅스 재단(Linux Foundation)의 LSB(Linux Standard Base) 프로젝트에서 관리하며, 우분투·센트OS·데비안 등 주요 배포판이 동일한 규칙을 따르는 기준점이 됩니다.
실무와 시험에서 가장 자주 마주치는 핵심 디렉터리 5선
수십 개에 달하는 디렉터리를 한꺼번에 암기할 필요는 없습니다. 엔지니어와 개발자가 실무 트러블슈팅과 서버 운영에서 매일 확인하는 5대 핵심 경로의 역할만 명확히 구분해도 리눅스 구조의 80%는 이해할 수 있습니다.
1. /etc (시스템 설정실): 아파트의 두꺼비집이나 관리사무소 같은 공간입니다. 시스템 부팅, 네트워크 설정, 데이터베이스 계정 환경 등 주요 환경설정 파일(예: hosts, fstab, sshd_config)이 평문 텍스트 형태로 보관됩니다. 바이너리 실행 파일은 절대 이곳에 두지 않는 것이 원칙입니다.
2. /var (실시간 데이터 보관소): Variable(가변)의 약어로, 시스템 운영 중 용량이 수시로 변하는 파일이 적재됩니다. 서비스 장애 시 가장 먼저 열어보는 /var/log(시스템 및 앱 로그)와 /var/spool(메일·인쇄 대기열)이 대표적입니다. 로그 폭증으로 디스크가 가득 차는 장애의 주원인이 되는 위치이기도 합니다.
3. /usr (사용자 소프트웨어 집합소): 과거에는 사용자 홈 디렉터리였으나 현재는 일반 유저 및 응용 프로그램 실행 바이너리(/usr/bin)와 공용 라이브러리(/usr/lib)가 위치합니다. 윈도우의 'Program Files'에 가장 가까운 개념입니다.
4. /home 및 /root (사용자 개인 방): 일반 사용자가 로그인했을 때 기본으로 배정되는 작업 공간이 /home/계정명입니다. 반면 최고 관리자 계정의 작업 공간은 시스템 복구 시 독립성을 확보하기 위해 별도의 /root 경로에 격리되어 있습니다.
5. /tmp 및 /run (임시 데이터와 휘발성 런타임): /tmp는 누구나 자유롭게 임시 파일을 쓰고 지우는 공용 작업대이며, 재부팅 시 초기화됩니다. 반면 /run은 시스템 부팅 이후 현재 실행 중인 프로세스의 PID(프로세스 식별자)나 런타임 상태를 임시 저장하는 메모리 기반 공간입니다.
FHS 3.0 디렉터리별 역할 및 표준 명세
FHS 3.0 표준 규격에 명시된 리눅스 계층구조 전체 디렉터리 상세 역할과 네이밍 어원입니다. 개발 환경 구성 시 패키지 배포 경로를 결정하거나 리눅스마스터 등 자격증 취득 시 참고 자료로 활용할 수 있습니다.
| 디렉터리 경로 | 역할 및 주요 보관 파일 | 약어 / 비고 |
| / | 루트 디렉터리. 파일시스템 최상위 계층으로 모든 파일과 디렉터리의 기준점 | Root |
| /bin | 기본 명령어 바이너리(cat, cp, ls, mv, rm 등). 단일 사용자 모드 부팅 시 필수 | Binaries |
| /boot | 부팅용 정적 파일. 커널 이미지(vmlinuz), 부트로더(GRUB), initramfs 등 | Boot |
| /dev | 하드웨어 장치 노드 파일(sda, null, zero, tty 등). 하드웨어를 파일 단위로 추상화 | Devices |
| /etc | 호스트 전용 정적 설정 파일 집합(fstab, passwd, hosts 등). 실행 바이너리 금지 | etcetera |
| /etc/opt | /opt 하위 추가 설치 패키지 전용 환경설정 파일 보관 위치 | 선택 사항 |
| /home | 일반 사용자 전용 홈 디렉터리(사용자별 개인 데이터 및 환경 파일) | 선택 사항 |
| /lib | /bin 및 /sbin 실행에 필요한 핵심 공유 라이브러리 및 커널 모듈 | Libraries |
| /media | USB 메모리, 외장 하드, CD-ROM 등 이동식 미디어의 자동 마운트 위치 | Media |
| /mnt | 관리자가 다른 디스크 파티션이나 네트워크 볼륨을 일시적으로 연결하는 마운트 지점 | Mount |
| /opt | 독립적으로 배포되는 타사(Third-party) 정적 응용 패키지(Chrome, Docker 등) | Optional |
| /root | 슈퍼유저(root) 전용 홈 디렉터리. 시스템 장애 대비 루트 파티션에 위치 | Superuser Home |
| /run | 부팅 이후 동작 중인 서비스의 임시 런타임 데이터(PID 파일, 소켓 통신 파일 등) | Run-time |
| /sbin | 시스템 부팅 및 관리자(root) 전용 시스템 명령 바이너리(fdisk, iptables, reboot 등) | System Binaries |
| /srv | 웹, FTP 등 시스템이 외부 클라이언트에 제공하는 서비스의 실제 데이터 저장 위치 | Services |
| /tmp | 모든 사용자 및 프로그램이 자유롭게 쓰는 임시 작업 공간. 재부팅 시 삭제 | Temporary |
| /usr | 사용자 유틸리티 및 읽기 전용 데이터 계층. 보조 소프트웨어 모음집 | User System Resources |
| /usr/bin | 일반 사용자용 주요 응용 명령어 바이너리(gcc, python, vim, curl 등) | |
| /usr/include | C/C++ 표준 라이브러리 및 시스템 컴파일용 헤더(.h) 파일 위치 | Headers |
| /usr/lib | /usr/bin 및 /usr/sbin 내 실행 파일을 구동하기 위한 라이브러리 파일 | |
| /usr/local | 관리자가 패키지 관리자 없이 소스 코드로 직접 빌드해 설치한 로컬 프로그램 저장소 | Local Software |
| /usr/sbin | 긴급 복구용이 아닌 일반적인 네트워크 서비스 및 시스템 데몬 관리 명령어 | |
| /usr/share | 아키텍처 독립적인 공유 데이터(man 페이지, 문서, 아이콘, 테마 등) | Shareable Data |
| /usr/src | 커널 소스 코드나 배포판 패키지 소스가 보관되는 공간 | Source / 선택 사항 |
| /var | 용량이 가변적인 파일 저장소. 로그, 스풀, 캐시 데이터 등 적재 | Variable |
| /var/log | 시스템 및 각종 서비스의 로그 파일이 쌓이는 곳. 트러블슈팅 핵심 경로 | Logs |
| /var/spool | 작업 처리를 위해 대기 중인 데이터(메일 큐, 프린트 큐, cron 작업 등) 보관 | Spool |
| /var/tmp | 재부팅 후에도 유지되어야 하는 임시 파일 저장소 (/tmp와 대조됨) | Persistent Temp |
첨부파일
출처
FHS 3.0 Released : https://wiki.linuxfoundation.org/lsb/fhs-30
lsb:fhs-30 [Wiki]
lsb:fhs-30 FHS 3.0 Released lsb/fhs-30.txt · Last modified: 2016/07/19 01:24 (external edit)
wiki.linuxfoundation.org
FHS Referenced Specifications : https://refspecs.linuxfoundation.org/fhs.shtml
FHS Referenced Specifications
Filesystem Hierarchy Standard Specifications Archive The FHS 3 Specification Series The FHS 3 specification brings the first update in years, aligning with current usage patterns. The FHS 3.0 Specification This is the final version of the FHS 3.0 specif
refspecs.linuxfoundation.org
요약
리눅스는 최상위 루트(/)를 기준으로 리눅스 재단이 정한 FHS 표준에 따라 파일을 구조화합니다.
실무적으로는 설정 파일(/etc), 가변 데이터 및 로그(/var), 실행 프로그램(/usr)의 구분만 확실히 알아도 서버 운영이 수월해집니다.
트러블슈팅 시에는 /var/log 디스크 사용량을, 새로운 소프트웨어 설치 시에는 /opt 또는 /usr/local 경로를 확인하십시오.