리눅스 파일 시스템 구조

리눅스를 설치하면, 상당히 많은 디렉토리가 자동으로 생성된다. 이러한 디렉토리는 대부분의 유닉스와 유사하다. DOS에서는 거의 사용자 임의대로 디렉토리의 이름을 정하여 사용하나, 유닉스에서는 아래와 같은 디렉토리의 이름들과 구조로 대부분 정해져 있다.

설명

/bin

/bin은 "binaries"의 약자이며, 실행 파일들이 모여 있다. 이 디렉토리에는 많은 필수적인 프로그램들이 포함되어 있다. "ls /bin"을 해보면 이 안의 파일들을 볼 수 있으며 cp, ls, mv 같은 몇 개의 명령어들은 알아볼 수 있을 것이다. 이것들은 이들 명령어들의 실제 프로그램들이다. 따라서, ‘cp’ 명령을 입력하면, /bin/cp 프로그램이 실행되는 것이다. “ls -F”를 사용하면, /bin의 대부분의 파일들에서 "*"가 파일명 끝에 추가되어 있는 것을 볼 수 있을 것이다. 이것은 이 파일이 실행 가능한 파일임을 표시한다.

/dev

/dev 안의 파일들은 디바이스 드라이버들이다. 이것들은 디스크 드라이버, 모뎀, 메모리 등과 같은 시스템 디바이스나 자원들을 액세스하는데 사용된다. 예를 들면, 파일들로부터 정보를 읽어볼 수 있는 것과 같이, /dev/mouse를 액세스함으로써 마우스로부터 입력되는 정보를 읽어 올 수 있다. fd로 시작하는 파일 이름들은 플로피 장치들이다. fd0는 첫 번째의 플로피디스크 드라이브이며, fd1은 두 번째이다. 이 이외의 것들은 보통 플로피 디스크의 특정 형태를 표시한다. 예를 들면, fd0H1440은 첫 번째 드라이브(A: 드라이브)의 고밀도 3.5인치 디스켓을 말한다. 여기서는 가장 많이 사용되는 디바이스 파일을 열거하였다. ㄹㅇ ㅋㅋ

/dev/console

시스템의 콘솔이며, 모니터가 시스템에 직접 연결되어 있음을 말한다.

/dev/ttyS 와 /dev/cua

직렬 포트를 액세싱한다. 예를 들면, /dev/ttyS0는 도스 상의 "COM1"을 말하며, /dev/cua 는 "callout" 장치로써, 이것은 모뎀을 쓸 때 사용된다.

hd로 시작하는 디바이스 이름

하드 디스크를 액세스한다. /dev/hda는 첫 번째 하드 디스크 전체를 말하며, hda1은 /dev/hda의 첫 번째 파티션을 말한다.

sd로 시작하는 디바이스 이름

SCSI 하드 디스크 드라이브나 테이프 드라이브 같은 SCSI 장치들을 말한다. 만약 SCSI 하드 디스크를 가지고 있다면, /dev/hda를 액세스하는 대신에 /dev/sda를 액세스하여야 할 것이다.

lp로 시작하는 디바이스 이름

병렬 포트를 말하며, /dev/lp1은 도스의 "LPT1"와 같다.

/dev/null

"black hole"로서 사용되는 것으로서 어떠한 데이터를 이 장치에 보내면 모두 없어지게 된다. 예를 들면, 화면에 아무 것도 출력되지 않기를 바랄경우, /dev/null로 출력을 보내면 된다.

/dev/tty로 시작되는 디바이스 이름

시스템에 있는 "가상 콘솔 : Virtual Console(VC)"이다. /dev/tty1은 첫 번째 VC이며, /dev/tty2는 두 번째이다. 가상 콘솔은 한 화면이 여러개의 가상 터미날을 갖는 것이다. 각각의 터미날은 [alt-F1], [alt-F2] 등을 누름으로서 전환할 수 있으며, 같은 사용자나 다른 사용자로 login 할 수 있다.

/dev/pty로 시작하는 디바이스 이름

이것들은 원격 login 세션에서 사용되는 "pseudo-terminal"들이다. 예를 들어, 사용중인 컴퓨터가 네트워크에 연결되어 있고, telnet으로 login하려고 할 때, /dev/pty 디바이스를 사용한다.

/etc

/etc는 시스템 설정 파일, 프로그램, 유틸리티 등 다양한 프로그램들을 포함하고 있으며 대부분의 파일들은 관리자에 의해 사용되는 것이다. 리눅스 etc 폴더 이해하기참조

/home

/home은 사용자의 홈 디렉토리로서 login하였을 경우, 처음으로 위치하게 되는 디렉토리이다. 예를 들어, /home/larry는 사용자 "larry"의 홈 디렉토리이다. 시스템이 새로 설치되면, 이 디렉토리 안에 아무 것도 포함되어 있지 않다.

/lib

/lib는 공유 라이브러리 이미지를 포함하고 있다. 이 파일들은 일반적으로 사용되는 많은 프로그램에서 호출되는 코드들을 포함하고 있다. 어떤 프로그램이 공유 될 수 있는 루틴을 단독으로 포함하지 않고, 그 루틴을 일반 장소인 /lib 안에 저장한다. 이렇게 함으로서 실행 파일의 크기를 작게 만들어 사용자의 공간을 넓힐 수 있다.

/media

DVD, CD-ROM, USB 등과 같은 탈부착이 가능한 장치들의 마운트포인트로 사용되는 디렉토리.

/mnt

/media 디렉토리와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 디렉토리.

/proc

/proc는 "가상 파일 시스템"이다. 이 디렉토리의 내용들은 시스템에서 운영되고 있는 다양한 프로세서들에 관한 내용과 프로그램에 대한 정보를 포함하고 있다. 이 디렉토리에서 볼 수 있는 것은 실제 드라이브에 저장되어 있는 내용이 아니며, 메모리상에 저장되어 있는 것이다.

/tmp

많은 프로그램들은 여러 정보가 임시 파일 안에 저장되는 것을 필요로 한다. 이런 파일들이 위치할 장소가 /tmp 이다.

/usr

시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리. 즉, c++, chsh, cpp, crontab, du, find등과 같이 일반사용자들용 명령어들은 /usr/bin 에 위치한다. /usr는 실제 작업을 위한 응용 패키지들이 설치되어 있는 디렉토리이다. 따라서 많은 서브디렉토리를 포함하고 있다.

/usr/bin

/usr/bin은 모든 유닉스 시스템이 소유하고 있는 소프트웨어를 담기 위한 진정한 warehouse이다. 이것은 /bin 같은 곳에는 없는 유용한 실행 파일들을 가지고 있다.

/usr/etc

/etc는 시스템 파일과 사양 파일이 있는 것처럼, /usr/etc에는 더많은 유틸리티와 파일들이 있다. 일반적으로 /usr/etc에 있는 파일들은 /etc에 있는 것만큼의 반드시 필요로 한 것들은 아니다.

/usr/lib

/usr/bin은 /lib에서 찾을 수 있는 "stub"와 "static"와 같은 라이브러리를 포함하고 있다. 프로그램을 컴파일할 때, 프로그램은 /usr/lib에 있는 파일들과 "link"되며 이 라이브러리 안에 실행 코드가 필요로 할 때, /lib를 찾는다. 또한, 많은 프로그램들이 /usr/lib 안에 사양 파일을 저장한다.

/usr/local

/usr/local은 /usr에 포함된 것과 매우 유사하고, 시스템에 반드시 필요로 하는 것은 아니지만, 매우 유용한 것들을 포함하고 있다. 일반적으로, /usr/local에 있는 프로그램들은 시스템의 특성을 결정짓는 소프트웨어들이 있으며, 따라서, 유닉스 시스템마다 매우 다르다. TeX(문서 형식화 시스템)나 Emacs(에디터)를 설치하였다면 이 디렉토리에서 찾을 수 있을 것이다.

/usr/man

이 디렉토리는 실제적인 man page를 포함하고 있다. 또한, 모든 man page 를 위한 두 개의 서브 디렉토리가 있다. 예를 들면, /usr/man/man1 은 section 1 안에 man page를 위한 형식화되지 않은 소스가 포함되어 있으며, /usr/man/cat1은 section 1을 위한 형식화된 man page가 포함되어 있다.

/usr/spool

/usr/spool 은 어떤 프로그램을 위한 "spool"된 파일들을 포함하고 있다. 예를 들면, 만약 사용중인 컴퓨터가 네트워크에 연결되어 있다면, 받은 메일은 /usr/spool/mail 안에 읽거나 지우기 전까지 저장될 것이다. 뉴스 글을 보내거나 받을 때는 그 내용이 /usr/spool/news에 있게 된다.

/usr/src

/usr/src는 시스템에 있는 다양한 프로그램의 컴파일 되지 않은 소스 코드들을 포함하고 있다. 여기서 가장 중요한 것은 /usr/src/linux이며, 이것은 리눅스 커널의 소스 코드를 포함하고 있다.

/var

시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리. 거의 모든 시스템로그파일은 /var/log 에 저장되고, DNS 의 zone 설정파일은 /var/named 에 저장되고, 메일파일은 /var/spool/mail 에 저장되며, 크론설정파일은 /var/spool/cron 디렉토리에 각각 저장됨.

/lost+found

최상위 디렉토리인 / 디렉토리에만 존재하는 것이 아니라 파일시스템마다 존재할 수 있는 디렉토리임. 이 디렉토리는 fsck 또는 e2fsck 등과 같은 파일시스템 체크 및 복구유틸리티 실행후에 주로 생성이 되는 것으로서 복구되지 않은 채로 블록(block)만 존재하는 파일 즉, 연결이 끊어진 inode 들이 숫자파일형태로 존재하는 곳임. 숫자형태로 존재하는 파일들은 mv 명령어로 파일이름만 바꾸면 바로 복구될 수 있다.

역링크