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 명령 출력
기본적으로 df 는 파티션 크기와 사용 가능한 디스크 공간(KB)을 1킬로바이트 단위로 표시합니다. 메가바이트 및 기가바이트로 정보를 보려면 df -h 명령을 사용합니다. h 인수는 "human-readable" 형식을 나타냅니다. df -h 의 출력은 다음과 유사합니다.
예 2.2. df -h Command Output
참고
주어진 예에서 마운트된 파티션
/dev/shm
은 시스템의 가상 메모리 파일 시스템을 나타냅니다.
2.1.1.1.2. du Command 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
du 명령은 디렉토리에 있는 파일에서 사용하는 예상 공간을 표시하고 각 하위 디렉터리의 디스크 사용량을 표시합니다. du 의 출력에서 마지막 줄에는 디렉터리의 총 디스크 사용량이 표시됩니다. 사람이 읽을 수 있는 형식으로 디렉터리의 총 디스크 사용량만 보려면 du -hs 를 사용합니다. 더 많은 옵션을 보려면 man du 을 참조하십시오.
2.1.1.1.3. GNOME 시스템 모니터 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
그래픽 형식으로 시스템의 파티션 및 디스크 공간 사용량을 보려면 를 사용합니다. 파일 시스템 탭을 선택하여 시스템의 파티션을 확인합니다. 다음 그림은 파일 시스템 탭을 보여줍니다.
그림 2.1. GNOME 시스템 모니터의 파일 시스템 탭
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/