2장. 파일 시스템 구조 및 유지 관리
파일 시스템 구조는 운영 체제에서 가장 기본적인 수준의 조직입니다. 운영 체제가 사용자, 애플리케이션 및 보안 모델과 상호 작용하는 방식은 운영 체제가 스토리지 장치에서 파일을 구성하는 방법에 따라 거의 항상 달라집니다. 공통 파일 시스템 구조를 제공하면 사용자 및 프로그램이 파일에 액세스하고 쓸 수 있습니다.
파일 시스템은 두 가지 논리적 범주로 파일을 분할합니다.
- 편집할 수 있고 이해할 수 없는 파일
- 공유할 수 있는 파일은 로컬 및 원격 호스트에서 액세스할 수 있습니다. Unsharable 파일은 로컬에만 사용할 수 있습니다.
- 변수 및 정적 파일
- 문서와 같은 변수 파일은 언제든지 변경할 수 있습니다. 바이너리와 같은 정적 파일은 시스템 관리자의 작업 없이 변경되지 않습니다.
이러한 방식으로 파일을 분류하면 각 파일의 기능과 이를 보유한 디렉터리에 할당된 권한의 상관 관계를 유지하는 데 도움이 됩니다. 운영 체제 및 해당 사용자가 파일과 상호 작용하는 방법은 해당 디렉터리가 배치되는 디렉토리, 읽기 전용 또는 읽기 및 쓰기 권한으로 마운트되는지 여부, 각 사용자가 해당 파일에 대한 액세스 수준을 결정합니다. 이 조직의 최상위 수준은 중요합니다. 기본 디렉터리에 대한 액세스가 제한될 수 있습니다. 그렇지 않으면 최상위 수준에서 보안 문제가 발생할 경우 액세스 규칙이 엄격한 구조를 따르지 않을 수 있습니다.
2.1. 파일 시스템 계층 구조 표준(FHS) 개요
Red Hat Enterprise Linux는 여러 파일 유형 및 디렉터리에 대한 이름, 위치 및 권한을 정의하는 Filesystem Hierarchy Standard (FHS) 파일 시스템 구조를 사용합니다.
FHS 문서는 모든 FHS 호환 파일 시스템에 대한 신뢰할 수있는 참조이지만 표준은 정의되지 않았거나 확장 가능한 많은 영역을 남겨 둡니다. 이 섹션은 표준에 대한 개요와 표준에서 다루지 않는 파일 시스템의 부분에 대한 설명입니다.
FHS 컴플라이언스의 두 가지 가장 중요한 요소는 다음과 같습니다.
- 다른 FHS 호환 시스템과의 호환성
/usr/
파티션을 읽기 전용으로 마운트하는 기능. 이는/usr/
에 공통 실행 파일이 포함되어 있으므로 사용자가 변경할 수 없기 때문에 중요합니다. 또한/usr/
가 읽기 전용으로 마운트되므로 CD-ROM 드라이브 또는 읽기 전용 NFS 마운트를 통해 다른 시스템에서 마운트할 수 있어야 합니다.
2.1.1. FHS Organization
여기에 명시된 디렉토리 및 파일은 FHS 문서에서 지정한 디렉터리의 작은 하위 집합입니다. 가장 자세한 내용은 의 최신 FHS 설명서를 참조하십시오 http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf. file-hierarchy(7) 도움말 페이지에서는 개요도 제공합니다.
참고
사용 가능한 디렉토리는 지정된 시스템에 설치된 디렉터리에 따라 다릅니다. 다음 목록은 찾을 수 있는 항목의 예입니다.
2.1.1.1. 파일 시스템 정보 수집
2.1.1.1.1. DF 명령
df 명령은 시스템의 디스크 공간 사용량을 보고합니다. 출력은 다음과 유사합니다.
예 2.1. DF 명령 출력
Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 11675568 6272120 4810348 57% / /dev/sda1 100691 9281 86211 10% /boot none 322856 0 322856 0% /dev/shm
기본적으로 df 는 파티션 크기와 사용 가능한 디스크 공간(KB)을 1킬로바이트 단위로 표시합니다. 메가바이트 및 기가바이트로 정보를 보려면 df -h 명령을 사용합니다. h 인수는 "human-readable" 형식을 나타냅니다. df -h 의 출력은 다음과 유사합니다.
예 2.2. df -h Command Output
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 12G 6.0G 4.6G 57% / /dev/sda1 99M 9.1M 85M 10% /boot none 316M 0 316M 0% /dev/shm
참고
주어진 예에서 마운트된 파티션
/dev/shm
은 시스템의 가상 메모리 파일 시스템을 나타냅니다.
2.1.1.1.2. du Command
du 명령은 디렉토리에 있는 파일에서 사용하는 예상 공간을 표시하고 각 하위 디렉터리의 디스크 사용량을 표시합니다. du 의 출력에서 마지막 줄에는 디렉터리의 총 디스크 사용량이 표시됩니다. 사람이 읽을 수 있는 형식으로 디렉터리의 총 디스크 사용량만 보려면 du -hs 를 사용합니다. 더 많은 옵션을 보려면 man du 을 참조하십시오.
2.1.1.1.3. GNOME 시스템 모니터
그래픽 형식으로 시스템의 파티션 및 디스크 공간 사용량을 보려면 를 사용합니다. 파일 시스템 탭을 선택하여 시스템의 파티션을 확인합니다. 다음 그림은 파일 시스템 탭을 보여줍니다.
그림 2.1. GNOME 시스템 모니터의 파일 시스템 탭
[D]
2.1.1.2. /boot/
디렉토리
/boot/
디렉터리에는 시스템을 부팅하는 데 필요한 정적 파일(예: Linux 커널)이 포함되어 있습니다. 이러한 파일은 시스템이 올바르게 부팅되는 데 필수적입니다.
주의
/boot/
디렉토리를 제거하지 마십시오. 이렇게 하면 시스템을 부팅할 수 없게 됩니다.
2.1.1.3. /dev/
Directory
/dev/
디렉터리에는 다음 장치 유형을 나타내는 장치 노드가 포함되어 있습니다.
- 시스템에 연결된 장치;
- 커널에서 제공하는 가상 장치.
이러한 장치 노드는 시스템이 제대로 작동하려면 필수적입니다. udevd 데몬은 필요에 따라
/dev/
에서 장치 노드를 생성하고 제거합니다.
/dev/
디렉토리 및 하위 디렉토리에 있는 장치는 문자 (입력 및 출력의 직렬 스트림만 제공) 또는 블록 (예: 하드 드라이브 또는 플로피 드라이브와 같은 무작위로 액세스할 수 있음)으로 정의됩니다. GNOME 또는 KDE가 설치되면 일부 스토리지 장치가 자동으로 감지되거나 (예: USB) 또는 삽입(예: CD 또는 DVD 드라이브)이 표시되고 콘텐츠를 표시하는 팝업 창이 표시됩니다.
파일 | 설명 |
---|---|
/dev/hda | 기본 IDE 채널의 마스터 장치입니다. |
/dev/hdb | 기본 IDE 채널의 슬레이브 장치입니다. |
/dev/tty0 | 첫 번째 가상 콘솔. |
/dev/tty1 | 두 번째 가상 콘솔. |
/dev/sda | 기본 SCSI 또는 SATA 채널의 첫 번째 장치입니다. |
/dev/lp0 | 첫 번째 병렬 포트. |
유효한 블록 장치는 두 가지 유형의 항목 중 하나일 수 있습니다.
- 매핑된 장치
- 볼륨 그룹의 논리 볼륨(예:
/dev/mapper/VolGroup00-LogVol02
). - 고정 장치
- 기존 스토리지 볼륨(예: /dev/ sdb X )은 스토리지 장치 이름이며 X 는 파티션 번호입니다.
/dev/sdbX
는/dev/disk/by-id/WWID
또는/dev/disk/by-uuid/UUID
일 수도 있습니다. 자세한 내용은 25.8절. “영구 이름 지정” 에서 참조하십시오.
2.1.1.4. /etc/
디렉터리
/etc/
디렉토리는 시스템에 로컬인 구성 파일에 대해 예약되어 있습니다. 바이너리가 포함되어 있지 않아야 합니다. 바이너리가 있는 경우 /usr/bin/
또는 /usr/sbin/
로 이동합니다.
예를 들어
/etc/skel/
디렉터리는 사용자를 처음 생성할 때 홈 디렉터리를 채우는 데 사용되는 "스케일론" 사용자 파일을 저장합니다. 애플리케이션은 또한 구성 파일을 이 디렉터리에 저장하고 실행할 때 참조할 수 있습니다. /etc/exports
파일은 원격 호스트로 내보내는 파일 시스템을 제어합니다.
2.1.1.5. /mnt/
디렉터리
/mnt/
디렉터리는 NFS 파일 시스템 마운트와 같이 임시 마운트된 파일 시스템을 위해 예약되어 있습니다. 이동식 모든 스토리지 미디어에 대해 /media/
디렉터리를 사용합니다. 감지된 이동식 미디어가 /media
디렉터리에 자동으로 마운트됩니다.
중요
/mnt
디렉토리는 설치 프로그램에서 사용해서는 안 됩니다.
2.1.1.6. /opt/
Directory
/opt/
디렉토리는 일반적으로 기본 설치의 일부가 아닌 소프트웨어 및 애드온 패키지용으로 예약되어 있습니다. /opt/
에 설치하는 패키지는 해당 이름이 포함된 디렉토리를 만듭니다(예: /opt/packagename/
). 대부분의 경우 이러한 패키지는 예측 가능한 하위 디렉토리 구조를 따릅니다. 대부분의 경우 바이너리를 /opt/packagename/bin/
에 저장하고 해당 도움말 페이지를 /opt/패키지 이름/ man /
에 저장합니다.
2.1.1.7. /proc/
디렉토리
/proc/
디렉토리에는 커널에서 정보를 추출하거나 정보를 전송하는 특수 파일이 포함되어 있습니다. 이러한 정보의 예로는 시스템 메모리, CPU 정보 및 하드웨어 구성이 있습니다. /proc/
에 대한 자세한 내용은 2.3절. “/proc 가상 파일 시스템” 을 참조하십시오.
2.1.1.8. /srv/
디렉터리
/srv/
디렉터리에는 Red Hat Enterprise Linux 시스템에서 제공하는 사이트별 데이터가 포함되어 있습니다. 이 디렉토리는 사용자에게 FTP, WWW 또는 CVS와 같은 특정 서비스에 대한 데이터 파일의 위치를 제공합니다. 특정 사용자와 관련된 데이터만 /home/
디렉토리에 있어야 합니다.
2.1.1.9. /sys/
디렉터리
/sys/
디렉터리는 커널과 관련된 새로운 sysfs
가상 파일 시스템을 사용합니다. 커널의 핫 플러그 하드웨어 장치에 대한 지원이 늘어남에 따라 /sys/
디렉터리에는 /proc/
에서 유지하는 것과 유사한 정보가 포함되어 있지만 핫 플러그 장치와 관련된 장치 정보의 계층적 보기가 표시됩니다.
2.1.1.10. /usr/
Directory
/usr/
디렉토리는 여러 시스템에서 공유할 수 있는 파일용입니다. /usr/
디렉토리는 종종 자체 파티션에 있으며 읽기 전용으로 마운트됩니다. 최소한 /usr/
에는 다음 하위 디렉터리가 포함되어야 합니다.
/usr/bin
- 이 디렉터리는 바이너리에 사용됩니다.
/usr/etc
- 이 디렉터리는 시스템 전체 구성 파일에 사용됩니다.
/usr/ games
- 이 디렉토리는 게임을 저장합니다.
/usr/include
- 이 디렉토리는 C 헤더 파일에 사용됩니다.
/usr/kerberos
- 이 디렉터리는 Kerberos 관련 바이너리 및 파일에 사용됩니다.
/usr/lib
- 이 디렉토리는 쉘 스크립트 또는 사용자가 직접 사용하도록 설계되지 않은 오브젝트 파일 및 라이브러리에 사용됩니다.Red Hat Enterprise Linux 7.0부터
/lib/
디렉터리가/usr/lib
과 병합되었습니다. 이제/usr/bin/
및/usr/sbin/
에서 바이너리를 실행하는 데 필요한 라이브러리도 포함됩니다. 이러한 공유 라이브러리 이미지는 시스템을 부팅하거나 루트 파일 시스템 내에서 명령을 실행하는 데 사용됩니다. /usr/libexec
- 이 디렉토리에는 다른 프로그램에서 호출되는 작은 도우미 프로그램이 포함되어 있습니다.
/usr/sbin
- Red Hat Enterprise Linux 7.0부터
/sbin
이/usr/sbin
으로 변경되었습니다. 즉, 시스템 부팅, 복원, 복구 또는 복구에 필요한 시스템 관리 바이너리를 포함하여 모든 시스템 관리 바이너리가 포함됩니다./usr/sbin/
의 바이너리에는 사용할 수 있는 root 권한이 필요합니다. /usr/share
- 이 디렉터리는 아키텍처별로 차별화되지 않은 파일을 저장합니다.
/usr/src
- 이 디렉터리는 소스 코드를 저장합니다.
/usr/tmp
가/var/tmp
에 연결됩니다.- 이 디렉터리는 임시 파일을 저장합니다.
/usr/
디렉토리에는 /local/
하위 디렉터리도 포함되어야 합니다. FHS에 따라 이 하위 디렉터리는 시스템 관리자가 로컬로 소프트웨어를 설치할 때 사용되며 시스템 업데이트 중에 안전하게 덮어쓰지 않아야 합니다. /usr/
local
디렉터리에는 /usr/ 과 유사한 구조가 있으며 다음 하위 디렉터리를 포함합니다.
/usr/local/bin
/usr/local/etc
/usr/local/plays
/usr/local/include
/usr/local/lib
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/src
Red Hat Enterprise Linux의
/usr/local/
사용은 FHS와 약간 다릅니다. FHS는 시스템 소프트웨어 업그레이드로부터 안전해야 하는 소프트웨어를 저장하는 데 /usr/local/
를 사용해야 한다고 명시되어 있습니다. RPM 패키지 관리자는 소프트웨어 업그레이드를 안전하게 수행할 수 있으므로 /usr/local/
에 파일을 저장하여 파일을 보호할 필요가 없습니다.
대신 Red Hat Enterprise Linux는 시스템의 로컬 소프트웨어에
/usr/local/
를 사용합니다. 예를 들어 /usr/
디렉토리가 원격 호스트의 읽기 전용 NFS 공유로 마운트된 경우에도 /usr/local/
디렉터리에 패키지 또는 프로그램을 설치할 수 있습니다.
2.1.1.11. /var/
디렉터리
FHS는 Linux에서
/usr/
를 읽기 전용으로 마운트해야 하므로 로그 파일을 쓰거나 spool/
또는 lock/
디렉터리가 필요한 모든 프로그램을 /var/
디렉토리에 써야 합니다. FHS는 /var/
가 변수 데이터로, 스풀 디렉토리 및 파일, 로깅 데이터, 임시 파일을 포함합니다.
다음은
/var/
디렉터리에 있는 일부 디렉터리입니다.
/var/account/
/var/arpwatch/
/var/cache/
/var/crash/
/var/db/
/var/empty/
/var/ftp/
/var/gdm/
/var/kerberos/
/var/lib/
/var/local/
/var/lock/
/var/log/
/var/spool/mail/
에 연결된/var/mail
/var/mailman/
/var/named/
/var/nis/
/var/opt/
/var/preserve/
/var/run/
/var/spool/
/var/tmp/
/var/tux/
/var/www/
/var/yp/
중요
/var/run/media/사용자
디렉터리에는 USB 스토리지 미디어, DVD, CD-ROM, Zip 디스크와 같은 이동식 미디어의 마운트 지점으로 사용되는 하위 디렉터리가 포함되어 있습니다. 이전에는 /media/
디렉터리가 이 용도로 사용되었습니다.
메시지
및 lastlog
와 같은 시스템 로그 파일은 /var/log/
디렉토리에 있습니다. /var/lib/rpm/
디렉터리에는 RPM 시스템 데이터베이스가 포함되어 있습니다. 잠금은 /var/lock/
디렉토리에 파일을 사용하는 프로그램의 디렉토리에 있습니다. /var/spool/
디렉터리에는 일부 프로그램의 데이터 파일을 저장하는 하위 디렉터리가 있습니다. 이러한 하위 디렉터리에는 다음이 포함됩니다.
/var/spool/at/
/var/spool/clientmqueue/
/var/spool/cron/
/var/spool/cups/
/var/spool/exim/
/var/spool/lpd/
/var/spool/mail/
/var/spool/mailman/
/var/spool/mqueue/
/var/spool/news/
/var/spool/postfix/
/var/spool/repackage/
/var/spool/rwho/
/var/spool/samba/
/var/spool/squid/
/var/spool/squirrelmail/
/var/spool/up2date/
/var/spool/uucp/
/var/spool/uucppublic/
/var/spool/vbox/