Filesystem Hierarchy Standard(FHS)の概要

Red Hatは、多数のファイルやディレクトリの名前と場所を定義した共同制作ドキュメントであるFilesystem Hierarchy StandardFHS)に従います。また、Red Hatは今後もこの規格に追従し、Red Hat Linux FHSがこの規格に準拠した状態を保ちます。

最新のFHSドキュメントは、任意のFHS準拠ファイルシステムに対する正式のリファレンスであるものの、この標準に含まれない未定義または拡張可能の領域が多く残されています。このセクションでは、この規格の概要を示し、規格で取り扱われていないファイルシステムの部分について説明します。

規格の全文は、以下の場所で参照できます。

http://www.pathname.com/fhs

規格に準拠することが多くのことを意味する中で、最も重要な2つのことは、他の準拠システムとの互換性であり、/usrパーティションを読み込み専用としてマウントできることです(なぜならば、このパーティションは共通の実行可能ファイルを含んでおり、ユーザーによって変更されることを意図していないからです)。/usrを読み込み専用としてマウントすることが可能であるため、CD-ROMから、または読み込み専用のFNS経由で別のマシンから/usrをマウントすることができます。

FHS標準

ここで示すディレクトリとファイルは、FHSドキュメントで指定されるもののほんの一部です。完全な情報については最新のFHSドキュメントをチェックしてください。

/varディレクトリ

FHSが/usrを読み込み専用としてマウントできることを要求しているため、ログファイルを作成するプログラムや、spoolディレクトリやlockディレクトリを必要とするプログラムは、データを/varディレクトリに書き込む必要があります。FHSは/varの目的を以下のように述べています。

"...変数データファイル。ここには、spoolディレクトリとスプールファイル、管理データとログデータ、一時ファイルが含まれます。"

以下のディレクトリ群は/varのサブディレクトリとする必要があるものです。

/var
  |- arpwatch
  |- cache
  |- db
  |- ftp
  |- gdm
  |- kerberos
  |- lib
  |- local
  |- lock
  |- log
  |- named
  |- mail -> spool/mail
  |- nis
  |- opt
  |- preserve
  |- run
  +- spool
       |- anacron
       |- at
       |- cron
       |- fax
       |- lpd
       |- mail
       |- mqueue
       |- news
       |- rwho
       |- samba
       |- slrnpull
       |- squid
       |- up2date
       |- uucp
       |- uucppublic
       |- vbox
       |- voice
  |- tmp
  |- tux
  |- www
  |- yp

messageslastlogなどのシステムログファイルは、/var/logディレクトリ内に配置されます。/var/lib/rpmディレクトリには、RPMシステムデータベースも含まれています。ロックファイルは/var/lockに格納され、通常は、そのファイルを使用するプログラム固有のディレクトリに格納されます。/var/spoolディレクトリは、データファイルを格納する必要がある各種システムのためのサブディレクトリを持っています。

Red Hat Linuxの/usr/local

Red Hat Linuxの場合、/usr/localの用途として意図されたものは、FHSの指定とは多少異なっています。FHSは、システムソフトウェアのアップグレード時には、保護するソフトウェアを/usr/localに格納すべきであるとしています。Red HatからのシステムアップグレードはrpmやグラフィカルなGnome RPMによって安全に行われるため、ソフトウェアを/usr/localに配置して保護する必要はありません。代わりに、マシンにとってローカルなソフトウェアのために/usr/localを使用するのがよいでしょう。

たとえば、読み込み専用NFS経由でjakeというホストから/usrをマウントしたとします。インストールしたいパッケージまたはプログラムがあるものの、jakeへの書き込み権限がない場合、/usr/localの下にそれらをインストールする必要があります。後になって、プログラムを/usrにインストールしてもらえるようにjakeのシステム管理者を説得できた場合には、そのプログラムを/usr/localからアンインストールすることができます。