[Linux] 디렉토리 구조
독자들은 리눅스를 포함한 다양한 OS들을 설치한 후에 수많은 디렉토리가 내 하드웨어에 담겨있는걸 경험해봤을 것이다. OS설치 시 내 하드웨어 제품에 담겨지는 디렉토리들은 OS설치파일에 담겨있는 수많은 파일들을 묶어 놓은 것으로, 각각의 디렉토리들이 어떠한 파일을 담고 있는지 파악할 필요가 있다. 이번 포스팅에서는 수많은 OS들중 하나인 리눅스가 가지고 있는 디렉토리가 어떠한 구조로 되어있고 어떠한 역할을 하는 파일들을 소유하고 있는지 알아보자.
디렉토리의 개념
디렉토리의 구조를 알아보기 전, 디렉토리가 의미하는 바가 무엇인지 잠시 짚고넘어가자.
디렉토리란 간단히 말해 파일을 보관하는 하는 곳이다. 리눅스의 디렉토리는 최상위에 해당하는 루트를 중심으로 하위 디렉토리에 다수의 디렉토리가 존재하는 형태의 트리 구조로 갖추어 계층적으로 관리된다. 리눅스에 존재하는 디렉토리는 리눅스 벤더나 버전에 따라 약간의 차이는 있으나 대체적으로 유사하다.
디렉토리 구조
리눅스가 가지고 있는 디렉토리의 구조는 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
├── root(/)
│ ├── bin
│ ├── boot
│ ├── dev
│ ├── etc
│ ├── home
│ ├── lib
│ ├── lib64
│ ├── mnt
│ ├── opt
│ ├── proc
│ ├── root
│ ├── sbin
│ ├── tmp
│ ├── usr
│ ├── var
│ ├── media
│ ├── srv
│ ├── sys
│ └── run
각 디렉토리의 특징
- root(/)
최상위에 있는 디렉토리로 루트 디렉토리라고 한다.
- bin
일반적으로 bin은 binary의 약자로 실행 파일들이 들어있다. 우리가 흔히 말하는 명령어라는 것들이 들어 있는 디렉터리로 보통 PATH가 설정되어 있다. 대표적 명령어인 cp, mkdir, rmdir, mv, rm, cat등이 이 디렉토리에 담겨 있다.
- boot
부팅이미지 파일이나 커널 등 시스템 부팅 시 필요한 파일이 담겨있다. 최근 리눅스 버전에서 부트 로더로 사용되는 grub 관련 파일도 이 디렉토리에 담겨있다.
- dev
하드 디스크, CD-ROM, 터미널 등과 같이 실제로 존재하는 물리적인 장치 등을 파일화하여 관리하는 디렉토리이다.
- etc
이 디렉토리에는 시스템 환경 설정 파일 및 부팅과 관련된 여러 가지 스크립트 파일들이 담겨 있다. 이들 파일에 설정된 내용을 읽어서 관련 프로그램들이 실행하게 된다.
- home
개인 사용자들이 파일이나 디렉토리를 만들어서 사용할 수 있는 홈 디렉토리가 위치한다. 예를 들어, user1이라는 계정을 만들면 /home/user1 이라는 디렉토리가 생기게 되고 이를 홈 디렉토리라고 부른다.
- lib
각종 라이브러리가 저장되어 있는 디렉터리로 커널 모듈도 이 디렉토리에 들어 있다. CentOS 7 버전은 64비트가 기본이 되면서 32비트용 라이브러리가 들어 있다.
- lib64
64비트용 리눅스를 설치하는 경우에 생성되는 디렉토리로 64비트 기반의 라이브러리 관련 디렉토리이다. CentOS 7은 64비트 기반으므로 대부분의 라이브러리가 이 디렉토리에 존재한다.
- mnt
CD-ROM, 플로피 디스크, 하드 디스크, 네트워크 파일 시스템 등을 마운트할 때 포인터가 되는 디렉토리이다. 최근 리눅스 버전에서는 마운트할 장치가 늘어남에 따라 /media, /net 등을 추가로 제공하고 있다.
- opt
응용 프로그램들의 설치를 위해 사용되는 디렉토리이다.
- proc
가상 파일 시스템으로 시스템에서 운영되고 있는 다양한 프로세스의 상태 정보, 하드웨어 정보, 기타 시스템 정보 등을 담고 있다.
- root
시스템 관리자인 root 사용자의 홈 디렉토리이다.
- sbin
‘System Binary’의 약자로 주로 시스템 관리에 대한 명령어들이 담겨 있는 디렉토리로, 보통 슈퍼유저인 root가 사용한다. 시스템 종료 명령, 네트워크 인터페이스 설정 명령, 시스템 점검과 복구등의 명령어들이 담겨 있다.
- tmp
임시 저장 디렉토리로서 각종 프로그램이나 소켓 파일, 프로세스 작업을 할 때 임시로 생성되는 파일을 저장하는 공간이다. 보통 이 디렉토리는 모든 사용자에게 접근 가능하도록 설정되어있다.
- usr
시스템 운영에 필요한 명령, 응용 프로그램들이 위치하는 디렉토리이다. 커널소스, C언어 헤더 파일, C-컴파일러와 같은 개발 도구, X-window, 리눅스에서 서버 관리를 위해 사용하는 아파치나 mysql, php 등이 모두 이 디렉토리의 하위 디렉토리에 설치된다. 이 디렉토리의 주요 하위 디렉토리에는 응용 프로그램의 명령어들이 담겨있는 /usr/bin, /usr/sbin 이 있고, 로컬에서 추가로 설치 할 때 사용되는 디렉토리인 /usr/local 등이 있다.
- var
시스템 운영 로그 파일과 스풀링과 같은 가변적인 데이터를 보관하는 디렉토리이다. 메일 서버로 운영하는 경우 도착한 메일이 이 디렉토리의 하위 디랙토리에 존재하게 된다.
- media
이동식 장치인 cdrom, floppy 등을 마운트하기 위해 제공되는 디렉토리이다. RHEL 3 버전까지는 cdrom, floppy 등을 포함해서 하드 디스크 등 모든 장치들이 /mnt 디렉토리를 이용하였으나 2.6커널 기반인 RHEL 4부터 추가로 이 디렉토리를 제공하여 사용한다.
- srv
RHEL 4부터 등장한 디렉토리로 사이트에서 생성되는 데이터를 저장하는 디렉토리로 알려져 있다. FTP, WWW, CVS 등과 같은 서비스에 의해 생성되는 데이터를 저장하는 디렉토리이다. 앞으로 /var 의 역할을 /srv로 대체할 가능성이 있다.
- sys
2.6커널에서 사용되는 가상 파일 시스템인 sysfs에서 사용하는 디렉토리로 USB처럼 hotplug 하드웨어 정보를 가지고 있는 디렉토리이다. /proc 디렉토리에서 기본적인 하드웨어 정보를 제공하나 이 디렉토리에서는 계층적인 구조로 정보를 제공한다.
- run
부팅 이후에 동작중인 프로세스의 런타임 데이터를 저장하고 있는 디렉토리로 CentOS 7 버전부터 등장한다. Process ID 파일과 Lock 파일이 생성되고, 재부팅하면 다시 생성된다. RHEL 6 이전 버전에서 사용되었던 /var/run, /var/lock을 합병하였다.
- bin
레드햇 리눅스의 기본 디렉토리 동향
최근 레드햇계열 리눅스는 root 디렉토리 바로 아래에 위치하는 기본 디렉토리 수를 줄이는 경향을 보이고 있다. CentOS 7.5의 디렉토리를 살펴보면 전통적으로 상위 디렉토리에 위치했던 /bin, /lib, /lib64, /sbin 을 /usr 디렉토리의 하위 디렉토리로 배치하고
심볼릭 링크를 생성해서 관리하고 있다.
읽어주셔서 감사합니다. 😊
Reference
CentOS7으로 리눅스 마스터 1급 정복하기 - 정성재
