Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 시스템 모니터
그래픽 형식으로 시스템의 파티션 및 디스크 공간 사용량을 보려면 ApplicationsSystem Tools System Monitor 를 사용합니다. 파일 시스템 탭을 선택하여 시스템의 파티션을 확인합니다. 다음 그림은 파일 시스템 탭을 보여줍니다.

그림 2.1. GNOME 시스템 모니터의 파일 시스템 탭

GNOME 시스템 모니터의 파일 시스템 탭

2.1.1.2. /boot/ 디렉토리

/boot/ 디렉터리에는 시스템을 부팅하는 데 필요한 정적 파일(예: Linux 커널)이 포함되어 있습니다. 이러한 파일은 시스템이 올바르게 부팅되는 데 필수적입니다.
주의
/boot/ 디렉토리를 제거하지 마십시오. 이렇게 하면 시스템을 부팅할 수 없게 됩니다.

2.1.1.3. /dev/ Directory

/dev/ 디렉터리에는 다음 장치 유형을 나타내는 장치 노드가 포함되어 있습니다.
  • 시스템에 연결된 장치;
  • 커널에서 제공하는 가상 장치.
이러한 장치 노드는 시스템이 제대로 작동하려면 필수적입니다. udevd 데몬은 필요에 따라 /dev/ 에서 장치 노드를 생성하고 제거합니다.
/dev/ 디렉토리 및 하위 디렉토리에 있는 장치는 문자 (입력 및 출력의 직렬 스트림만 제공) 또는 블록 (예: 하드 드라이브 또는 플로피 드라이브와 같은 무작위로 액세스할 수 있음)으로 정의됩니다. GNOME 또는 KDE가 설치되면 일부 스토리지 장치가 자동으로 감지되거나 (예: USB) 또는 삽입(예: CD 또는 DVD 드라이브)이 표시되고 콘텐츠를 표시하는 팝업 창이 표시됩니다.

표 2.1. /dev 디렉터리에 있는 공통 파일의 예

파일 설명
/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/