Published Book on Amazon
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 |
|
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) |
|
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
15.2 파일 시스템의 구조
여기서는 Raspberry Pi 시스템이 가지고 있는 파일시스템의 기본적인 구조에 대해서 살펴 보기로 하겠다. Raspberry Pi 시스템은 시스템이 설치될 때 기본적으로 만들어지는 파일시스템 체계가 있으며, 이들 파일시스템 체계 내에서 사용자들은 자신들의 자료를 관리하게 된다.
● / (root directory)
Linux는 통합형 계층구조의 파일시스템을 가지고 있다. 이 directory는 시스템의 계층구조에서 최상단에 있는 directory이다. 모든 자료들이 이 밑에 저장이 된다는 의미에서 "root" directory라고 한다. 이것은 사용자 계정 "root"가 home directory로 사용하는 "/root" directory와는 다른 것이다.
● /root
이것은 사용자 계정 "root"가 사용하는 home directory이다. 보통의 사용자 계정에 대해서는 "/home" directory 밑에 사용자 계정 이름과 동일한 이름으로 home directory가 별도로 만들어진다. 예를 들어 사용자 계정 "pi"는 "/home/pi"를 home directory로 사용한다. 하지만 사용자 계정 "root"는 이러한 유형의 directory를 사용하지 않고 예외적으로 "/root"를 home directory로 사용한다.
● /boot
여기에는 시스템 부팅에 필요한 주요 파일들이 저장되어 있다. boot loader나 Linux kernel 등의 파일들이 대표적인 자료들이다.
● /bin과 /sbin
시스템에서 실행할 수 있는 명령이나 프로그램이 저장되는 곳이다. 통상 Shell에서 명령을 실행하면 여기에 저장되어 있는 프로그램을 찾아서 실행하게 된다. 예를 들어 Shell에서 "chgrp"을 실행하면 실제로는 "/bin"에 저장되어 있는 "chgrp" 실행파일이 작동하게 되는 것이다. 이러한 파일에도 사용 용도에 따라서 종류가 구분되어 있는데, 통상 일반 사용자들이 시스템을 사용할 때 이용하는 것들은 "/bin"에 저장되고, 주로 시스템 관리자들이 사용하는 것들은 "/sbin"에 저장되는 것이 보통이다. 예를 들어 파일을 복사할 때 사용하는 "cp" 명령은 "/bin"에 저장되어 있고, 시스템의 디스크 파티션을 관리할 때 사용하는 "fdisk" 명령은 "/sbin"에 저장되어 있다.
● /dev
Linux에서는 모든 하드웨어 장치(device)도 파일로 관리하게 되는데, 시스템이 가지고 있는 하드웨어 장치에 대한 정보를 가지고 있는 곳이 이 directory이다. 디스크 장치뿐만 아니라 시스템에 설치된 사운드카드, 가상터미널, 그래픽카드, USB 장치 등 모든 장치에 대한 정보가 여기에서 관리된다.
● /etc
이 directory는 주로 시스템에 설치되어 있는 각종 프로그램들에 대한 환경설정 파일들이 보관되는 곳이다. 여기에는 시스템이 설치한 프로그램뿐만 아니라 사용자가 개인적인 목적으로 설치한 프로그램에 대한 환경설정 정보도 관리하고 있다. 예를 들면 Raspberry Pi 시스템의 host 이름을 "raspberrypi"라고 정의하면 그 정보는 "/etc/hostname"이라는 파일에 그 정보가 저장되고, 사용자 그룹 "ggroup01"을 정의하면 그 정보는 "/etc/group"이라는 파일에 정보가 저장된다.
● /home
여기에는 일반 사용자 계정이 home directory로 사용하는 곳으로 일반 사용자가 사용하는 자료를 보관하는 곳이다. 이 directory밑에 사용자 계정과 동일한 이름으로 만들어진 directory에 그 계정의 자료를 보관하게 되는 것이다. 예를 들어 사용자 계정 pi는 /home/pi 밑에 자료를 보관하게 된다. 통상 Linux나 Unix에서는 이 directory에서 사용자 자료를 관리하는 것이 보통이지만, 특정 배포판이나 제공업체에 따라서는 다른 곳을 이용하기도 한다는 것을 참고하기 바란다.
이런 관리방식은 일반 사용자의 자료를 시스템이 사용하는 자료와 구분하여 관리함으로써, 시스템을 관리하는데 있어서 여러 가지 관리를 편리하게 하려는 것이다.
● /lib
여기는 library 파일이 보관되는 곳이다. Library는 package형태로 제공되는 프로그램으로, 시스템 내의 각종 장치를 조정하거나 사용자들이 필요로 하는 여러 가지 공통 기능을 수행할 수 있는 프로그램을 모아 놓은 것이다. 이곳에서는 시스템 프로그램이나 일반 사용자 프로그램 등 여러 application 프로그램들이 공통으로 사용하는 library 파일이 보관되는 곳이다.
● /lost+found
이것은 어떠한 이유로 시스템에서 자료가 제대로 관리되지 않아서 어디에 소속되어 있는지를 판단하기 어려운 자료들을 임시로 관리하는 곳이다. 예를 들어 물리적인 이유로 디스크가 손상되거나, 바이러스 등의 침입으로 파일 정보가 손상을 받아서 특정 파일들에 대한 정보가 누락되고, 그 내용을 제대로 알 수 없을 때는 복구 작업을 해도 제대로 복구를 할 수 없는 경우가 있다. 이런 경우 시스템에서 처리할 수 없는 자료들을 이곳에 보관하게 되는 것이다.
● /media
이곳은 통상 이동식 미디어를 mount할 때 사용한다. SD card, USB 장치, 카메라, 미디어 플레이어 등의 장치들이 설치될 때 사용한다. Raspberry Pi에서 사용하는 SD card도 여기서 mount하여 작동하고 있다. 통상 외부 파일시스템 장치를 mount할 때 사용하는 /mnt와는 구분된다.
● /mnt
이곳은 파일시스템을 추가적으로 mount할 때 사용하는 곳이다. 통상 네트워크 공유나 외장 하드디스크를 연결하게 되면 이곳에 directory를 만들어 mount를 하고, 플로피디스크나 CD-ROM 등을 사용하고자 할 때도 이곳에서 mount를 하게 된다.
● /opt
이곳은 optional directory이다. 즉 application 프로그램들이 필요한 경우 선택적으로 자유롭게 사용할 수 있는 곳이다. 따라서 이곳을 사용하는 application도 있고, 사용하지 않은 application도 있다. 일반적으로 일반 사용자들이 이곳을 사용할 이유는 특별히 없다.
● /proc
이곳은 시스템 커널이 가지고 있는 시스템의 process에 대한 다양한 정보를 외부 프로그램이나 사용자들이 접근하여 파악할 수 있도록 제공해 주는 곳이다. 메모리의 사용상태나 현재 실행중인 프로세스에 대한 정보 등에 정보가 필요한 경우 여기에 있는 정보를 참조할 수 있다. 예를 들면 메모리 상태는 /proc/meminfo에서 확인할 수 있고, CPU설정정보는 /proc/cpuinfo에서 제공된다.
이 directory는 디스크에 실재로 존재하는 것이 아니라 단순히 정보를 제공해 주기 위해서 만들어진 가상의 파일 시스템이다. 이곳에 있는 정보는 통상 조회전용인데, 일부 파일은 양방향으로 영향을 미칠 수 있으므로 주의를 해야 한다.
여러 가지 많은 정보가 제공되지만, 중요한 몇 가지만 보면 다음과 같다
■ /proc/cpuinfo -- CPU 정보를 보여준다.
■ /proc/devices -- 시스템이 사용하는 디바이스 정보를 보여준다.
■ /proc/filesystems -- 커널이 지원하는 파일 시스템의 정보를 보여준다.
■ /proc/meminfo -- 시스템의 메모리 정보를 보여준다.
■ /proc/uptime -- 시스템의 가동시간을 보여준다.
■ /proc/version -- 커널 버젼 정보를 보여준다.
● /run
이것은 Debian 배포판에서 새로 도입된 directory인데, booting 시점부터 현재시점까지의 다양한 시스템 정보를 가지고 있는 transient state files의 내용을 기존 표준의 방식과는 다른 방식으로 편리하게 조회해 볼 수 있도록 해준다. "/run" directory는 이전과는 다르게 정상적인 방법을 통해서 시스템에 영향을 주지 않고 read-only방식으로 다양한 시스템 정보를 활용할 수 있게 해준다.
"/run"는 Filesystem Hierarchy Standard에서 기술되어 있던 기존의 여러 위치를 대체하였다.
■ /var/run → /run
■ /var/lock → /run/lock
■ /dev/shm → /run/shm
■ /tmp → /run/tmp
"/run"은 transient files을 위해서 사용되던 다음 몇 가지의 위치도 대체하였다.
■ /lib/init/rw → /run
■ /dev/.* → /run/*
■ /dev/shm/* → /run/*
■ writable files under /etc → /run/*
● /srv
이 directory는 파일을 처리하는 서비스가 임시로 자료를 저장하는 곳이다. "/var"과 유사한 용도로 사용되며, 특별히 구분되지 않는 경우도 있으므로, "/var"과 함께 참고하기 바란다.
● /sys
여기에는 시스템에 대한 정보를 파일에 보관할 때 사용한다. 시스템에 대한 정보는 "/proc"에도 있는데, "/sys"에 있는 정보는 실제의 파일에 정보가 저장되며, "/proc"에 있는 정보는 실제 파일에 저장되는 것이 아니라 단순히 메모리상에만 존재한다는 점에서 다르다고 할 수 있다.
● /tmp
이곳은 임시로 파일을 저장할 필요가 있을 때 사용한다. 어떤 application이던지 임시로 자료를 저장할 필요가 있는 경우는 이곳을 사용할 수 있으며, 사용자들이 필요한 경우 이곳을 사용할 수도 있다.
통상 여기에 보관되는 파일은 임시파일로 저장된 것으로 오랫동안 보관할 필요가 없는 것으로 취급되기 때문에 시스템이 재시동할 때는 이전에 저장되었던 자료들이 모두 깨끗이 청소가 되는 것이 보통이다.
● /usr
컴퓨터에서 대대수의 소프트웨어가 저장되는 곳으로 시스템에서 가장 큰 부분을 차지하고 있다. 일반적인 업무용 application 프로그램이 설치되는 장소이다.
● /var
이곳은 통상 시스템이나 application들이 필요로 하는 파일을 저장하거나 프로그램 실행 도중에 저장이 필요하여 생성하는 파일들이 저장되는 곳이다. 아래에 나열된 것은 대표적인 사례들이다.
■ /var/log/ -- 프로그램들이 실행되는 과정에 대한 다양한 로그 정보가 기록된다.
■ /var/lock -- 각종 application에서 사용되는 lock 정보가 기록된다.
■ /var/www/ -- Raspbian의 Apache 웹서버는 이곳에 각종 파일들을 저장한다.