U E D R , A S I H C RSS

Linux/디렉토리용도


1. 서문

리눅스를 처음 설치를 하면 윈도우와 많 다른 디렉토리 구조에 지레 겁을 먹기 마련다.
(적어도 나의 경우에는 그랬다)

도대체 윈도우에 있던 다른 드라브로는 어떻게 동해야하며, 어떻게 CD를 읽어야하는지 전혀
모르던 시절었으니 당연히 그랬다.
또 OS만 깔았는데 루트디렉토리에 왜 그렇게 디렉토리가 많은지 도저히 어떤 용도로 쓰는지를
모르겠었다.
윈도우의 Windows, ProgramFiles 만으로 루어진 그 구조가 왜 그렇게 그립던지 ㅠ.ㅠ

사실 윈도우도 파고들어가면 그냥 쓰면서는 모르는 기능들 굉장히 다양하다. 그래서 서버OS인가 보다. -_-;
''(어둠의 경로를 통해서 학원 강의 파일을 들어보면 놈의 중급 웹 서버관리 과정은 공룡책에 나오는
내용을 윈도우에서 강의하는거 같다는 기분다. 덕분에 한 2장 보면 파일을 지우는 나 -_-;)''

draft는 웹상의 내용을 기본으로 내가 추가할 만한 부분을 추가함. (그런게 있을지나 모르겠네.. 너무 좋은 내용 많다)

ps. 내가 아는 부분은 루트에 존재하는 디렉토리의 용도에 조금 더한 수준라서 필요하다면 참고서적을 참고하겠다.
참고) Running Linux/매트 웰시, 라 카우프만, 칼레달하머 저, Oreilly
'' 책은 배포판에 의존적인 내용 아니라 말그대로 리눅스를 그냥 쓰는 방법을 위주로 나오기 때문에
그래도 기본적은 프로그램을 깔정도가 되면 보는 것 좋을듯하다. 처음에 걸로 보다가 미치는줄 알았다''

2. 리눅스 디렉토리

리눅스의 디렉토리 구조를 해하기 전에 마운트라는 개념을 해해야할 필요가 있다. 리눅스는 모든 파티션을 /(하 루트)에 포인터를 통해 연결한 마운트의 개념을 통해서 접근을 할 수 있다. 따라서 모든 디렉토리를 각기다른 장치 각기 다른 파티션에 나누어 넣어서 따로 보관할 수 있으며 데터가 직접 보관되는 디스크를 따로 마운트해서 나중에 시스템을 다시 설치할때에 그 파티션만 지우지 않고 후에 마운팅하는 용도로 사용 가능하다.

2.1. /

  • 마운트 되는 리눅스 파일 시스템 있는 최상위 디렉토리
  • 시스템의 근간을 루는 가장 중요한 디렉토리
  • 파티션 설정 시 반드시 존재하여야 함
  • 절대경로의 기준 되는 디렉토리
    • 절대경로 - / 디렉토리 기준 예) /usr/local
    • 상대경로 - 현재 작업 디렉토리 기준 예) ./local'''

2.2. /bin

  • 리눅스의 기본 명령어(binary)들 들어있는 디렉토리
    • 시스템을 운영하는데 기본적인 명령어들 들어 있음.
  • su, tar 등등의 기본적인 명령어들 저장되어 잇는 디렉토리다.

2.3. /sbin

  • 시스템 관리에 관련된 실행 명령어들 들어있는 디렉토리
  • 시스템 점검 및 복구 명령, 시스템 초기 및 종료 명령 등 시스템 관리에 관련된 실행파일들 존재.'''
  • reboot, modprobe, insmod 등등의 root 가 시스템을 관리하는데 필요한 명령어들 존재한다.

2.4. /lib

  • 프로그램들 의존하고 있는 라브러리 파일들 존재.
  • /lib/modules : 커널 모듈 파일들 존재.
  • 대부분의 라브러리들은 링크로 연결되어 있음.

lib 디렉토리에는 컴파일러를 통해서 혹은 만들어진 파일들 잠조하는 라브러리들 존재한다. 또한 하부에 modules 디렉토리에 존재하는 커널 모듈은 특수장치를 설치했거나 제거했을 경우 커널 자동적으로 모듈을 올리지 못할 경우 insmod, rmmod, modprobe 명령어를 통해서 런 모듈을 다룰때 용된다. 커널 모듈의 경우 2.4커널에서는 *.o, 2.6 커널에서는 *.ko의 확장자를 가지고 있다.

2.5. /proc

  • 시스템에 대한 정보를 제공하는 가상 파일 시스템.
  • 커널의 어떤 기능을 제어할 수 있는 역할을 가지고 있음.
  • 대부분 읽기 전용나, 일부 파일중에는 쓰기가 가능한 파일 존재하는데 러한 파일들에 특정 값을 지정하면 커널 기능 변하게 됨.
  • 디렉토리 내에 있는 파일을 cat 명령을 용하여 보면 시스템 정보를 확인 할 수 있음.
    • 예) 인터럽트 정보 확인 ---> cat /proc/interrupts'''

2.6. /etc

  • 시스템 환경 설정 파일 있는 디렉토리
  • 네트워크 관련 설정파일, 사용자 정보 및 암호정보, 파일 시스템 정보, 보안파일, 시스템 초기화 파일등 중요 설정 파일들의 위치한 디렉토리
    • /etc/CORBA : Common Object Request Broker Architecture (COBRA)에 관한 파일 들어있음.
    • /etc/X11 : 엑스 윈도우 설정에 관련된 파일들 있음.
    • /etc/cron.d : crontab 명령의 설정파일 있음.
    • /etc/cron.daily : 매일 작동하게 하는 crontab 스크립트 파일 존재.
    • /etc/gnome : GTK+ 정의파일들 있음.
    • /etc/httpd (/etc/apache2) : 아파치 웹 서버의 설정 및 로그파일 있음.
    • /etc/logrotate.d : logrotate 설정 파일들 있음.
    • /etc/mail : 센드메일과 관련된 파일 있음.
    • /etc/ppp : ppp 설정에 관련된 파일들 있음.
    • /etc/profile.d : 쉘 로그인 하여 프로파일의 실행되는 스크립트에 대한 정의가 있음.
    • /etc/rc.d : 시스템 초기화와 관련된 스크립트가 존재.
    • /etc/samba : 삼바에 관련된 파일들 있음.
    • /etc/security : 터미널 보안에 관련된 설정 있음.
    • /etc/skel : 새로운 사용자를 추가할 때 자동적으로 생성되는 디렉토리와 파일 있음.
    • /etc/squid : squid 프록시 서버에 관련된 파일 있음.
    • /etc/ssh : secure shell 설정 파일 있음
    • /etc/sysconfig : 시스템과 네트워크 설정을 담고 있음.
    • /etc/xinetd.d : 슈퍼데몬 xinetd.d의 서비스 영역을 설정하는 디렉토리.

아파치를 비롯한 모든 서버의 환경설정 파일 관리 되는 곳다. 물론 사용자가 직접 바너리로 설치했을 경우에는 곳에 위치하지 않을 수도있다. 그러나 대부분 패키지 관리자를 통해서 설치된 프로그램의 경우 곳에서 설정 가능하다. 직접 설치를 하는 경우라면 X11, apache2, init.d, rc.*, skel, xinitd.d 디렉토리를 많 다루게 된다.

2.7. /var

  • 가변 자료 저장 디렉토리
  • 시스템 운영중에 시스템 자료 데터가 변경될 때 변경된 자료들 저장되는 곳.
  • 주로 시스템 작동기록(log)들을 저장.
  • /var/log : 시스템에 발생된 일들에 대한 기록 파일 있음
  • /var/named : 네임서버 설정 파일들 존재
  • /var/spool/mail : 수신 메일을 사용자 명으로 기록하는 디렉토리'''

너리 파일의 경우가 아니라 실제 시스템 운영되면서 변화하는 자료를 저장하는 부분다. 웹 서버의 기본 루트디렉토리가 보통 곳에 존재한다. (alias 된경우는 예외) 일반적으로 로그가 위치하기 때문에 중요한 곳다. 시스템에 보안 관계된 문제나 크래쉬가 발생했을 경우 로그 분석을 통해서 원인을 분석한다.

2.8. /usr

  • 일반 사용자들을 위한 대부분의 프로그램 라브러리 파일들 위치.
  • /usr/bin : 응용 프로그램의 실행 파일 위치
  • /usr/sbin : 주로 네트워크 관련 실행 명령어와 실행 데몬들을 많 포함하고 있음.
  • /usr/X11R6 : X-window 시스템에 관련된 파일 존재.
  • /usr/include : 기본 C 라브러리 헤더 파일과 각종 라브러리 헤더파일들 있음.
  • /usr/lib : /usr/bin과 /usr/sbin에 있는 실행 바너리를 실행하기 위한 라브러리 존재.
  • /usr/src : 프로그램소스 및 커널 소스들 보관되어 있는 곳.
  • /usr/man : 매뉴얼 페지가 담겨있는곳.
  • /usr/local : 새로운 프로그램들 설치되는 곳(windows의 Program Files 와 유사)

보통 바너리 프로그램을 설치할 경우 /usr/local 에 설치하여 일관성을 유지한다. jdk등을 설치할 때에고 관습상 /usr/local 에 설치를 해주고, 배포판 패키지 형태로 jdk등을 제공할때에는 배포판을 통해 설치하는 것 패키지의 통일성 및 관리의 편의성 면에서 좋다.

2.9. /mnt

'''- 다른 장치들을 마운트 할때 일반적으로 사용하는 디렉토리
- 다른 디렉토리를 사용하여도 됨.'''
다른 파티션의 장치들을 마운트하는 관례상의 디렉토리다.

2.10. /home

'''- 일반 사용자의 홈 디렉토리가 만들어 지는 디렉토리
- 사용자 계정을 만들면 게정과 같은 름으로 새로운 사용자 디렉토리가
/home 디렉토리의 하위 디렉토리로 생성됨.
예) test 사용자 추가 후 홈 디렉토리 확인하기.
root@test />$adduser test
root@test />$cd /home
root@test home>$ls

test <-- 디렉토리 생성
'''
root계정외의 계정에 할당되는 곳다. 서버의 사용자들을 디렉토리 및에
자신만의 디렉토리를 할당받고 웹 서비스를 용하게된다.

2.11. /boot

  • 부팅에 핵심적인 커널 미지와 부팅 정보 파일을 담고 있는 디렉토리
  • /etc/lilo.conf에서 지정한 커널 부팅 미지 파일 들어 있으며 부팅시 매우 중요한 디렉토리

디렉토리에는 커널의 바너리 미지가 위치한다. 보통은 부트로더를 /vmlinuz 로 부팅하게 설정하고, 현재 내가 쓰고 싶은 커널의 심볼릭 링크를 /vmlinuz 로 설정하여서 용한다. 경우 커널의 버전업나 테스팅을 위해서 커널의 버전 필요할 경우 관리상 용하다.

2.12. /root

  • 슈퍼유저(root) 사용자의 홈 디렉토리.
  • / 와 /root 디렉토리는 부르는 름은 같지만 서로 다름.'''

3. 실제 설치할때

실제 파티션을 분할할때에는 어떤 목적으로 프로그램을 용하는지에 대한 해가 필요하다. 처음 설치하는 사용자의 경우에는 전체 파티션을 단일 파티션으로 잡고 설치를 해도 무방하지만 다중 사용자 계정을 지원할 용의가 있는 경우에는

/ 500M/30G 커널 미지, 각 프로그램의 설정파일등 크지 않은 파일들 저장된다.
/usr 8G/30G 실제 응용프로그램의 대부분 설치되므로 넉넉하게 설정하는 것 필요하다.
/var 5G/30G 서버 시스템의 운영 상황에 대한 로그들 (syslogd, apache etc) 을 유지해야하기 때문에 마찬가지로 넉넉하게 잡는 것 필요하다.
/home 10G/30G 사용자가 몇명용할지에 대해서 대략적인 추정을 통해 할당한다. quota 기능을 용하면 각 사용자별로 할당되는 공간을 지정가능
/tmp 500M/30G 임시파일들 저장되는 곳다. Oracle DB의 경우 파티션 적을 경우 설치시 문제가 된다고 함.
swap 1.5G/30G 보통은 메인 메모리의 2배정도를 잡는 다고 하지만 적당한 수준에서 잡는 것 좋다. 메인 메모리가 충분하다면 없어도 그만

의 5가지 항목으로 각기 다른 파티션을 분할하는 것 좋다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:39
Processing time 0.0351 sec