Show Table of Contents

2.1.1.2.
2.1.1.3.
2.1.1.4.
2.1.1.5.
2.1.1.6.
2.1.1.7.
2.1.1.8.
2.1.1.9.
2.1.1.10.
2.1.1.11.
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
第2章 ファイルシステムの構造およびメンテナンス
ファイルシステムの構造は、オペレーティングシステムにおける最も基本的な体系です。オペレーティングシステムがユーザー、アプリケーション、およびセキュリティーモデルと相互作用する方法は、オペレーティングシステムがストレージデバイス上のファイルをどのように編成しているかによってほぼ決まります。共通のファイルシステム構造を提供することで、ユーザーとプログラムが確実にファイルにアクセスして書き込みを実行できるようにします。
ファイルシステムは、ファイルを以下の 2 つの論理カテゴリーに分けます。
- 共有可のファイルと共有不可のファイル
- 共有可能 ファイルはローカルにアクセスでき、リモートホストからアクセスできます。共有不可能ファイルは、ローカルでのみ利用できます。
- 可変ファイルと静的ファイル
- 文書などの可変ファイルは、いつでも変更できます。バイナリーなどの静的ファイルは、システム管理者の操作なしで変更できます。
このようにファイルをカテゴリー別に分類すると、各ファイルの機能と、それらのファイルを含むディレクトリーに割り当てられた権限を関連付けるのに役立ちます。オペレーティングシステムとそのユーザーがどのようにファイルと相互作用するかによって、ファイルの置かれるディレクトリーの設定が決定されます。たとえば、そのディレクトリーを読み込み専用か、または読み込み/書き込み権限でマウントするか、もしくは各ユーザーがそのファイルに対してどのようなアクセスレベルを持つかが決定されます。この体系の最上位レベルが重要になり、その下にあるディレクトリーへのアクセスが制限されます。最上位レベルから下位にわたってアクセスルールが準拠されないと、セキュリティー上の問題が発生する可能性があります。
2.1. ファイルシステム階層標準 (FHS) の概要
Red Hat Enterprise Linux は、ファイルシステム階層標準:Filesystem Hierarchy Standard (FHS) のファイルシステム構造を使用します。これは、多くのファイルタイプとディレクトリーの名前、場所、および権限を定義します。
FHS ドキュメントは、FHS 準拠のファイルシステムに対する権威のあるリファレンスですが、この標準では定義していない、または拡張可能な分野が数多く残されています。このセクションでは、この標準の概要を説明し、この標準で扱われていないファイルシステムの他の部分について説明します。
FHS 準拠によってもたらされる最も重要な要素は以下の 2 点にまとめられます。
- FHS 準拠の他のシステムとの互換性
/usr/
パーティションを読み込み専用でマウントできること。/usr/
には共通の実行可能ファイルが含まれており、ユーザーがこのパーティションを変更することができないため、この点は重要になります。さらに、/usr/
は読み込み専用でマウントされるため、CD-ROM ドライブから、または読み込み専用の NFS マウント経由で他のマシンからマウントすることができます。
2.1.1. FHS の組織
ここで言及したディレクトリーやファイルは、FHS ドキュメントで指定されている小さなサブセットです。完全な情報の多くは、http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf の最新の FHS ドキュメンテーションを参照してください。file-hierarchy(7) man ページでも概要を参照できます。
注記
どのディレクトリーが利用可能であるかは、所定のシステムに何がインストールされているかによって異なります。以下の一覧は、インストールされている内容の一例に過ぎません。
2.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
はパーティションサイズを 1 キロバイトのブロック単位で示し、使用中/利用可能のディスク領域の容量をキロバイトで示します。この情報をメガバイトやギガバイトで表示するには、コマンド df -h
を使用します。-h
という引数は "human-readable (人に認識可能な)" 形式という意味です。df -h
の出力は以下のようになります。
例2.2 df -h
コマンドの出力
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
は、システムの仮想メモリーファイルシステムを表します。
du
コマンド
du
コマンドは、ディレクトリー内のファイルによって使用されている領域の概算を示すもので、各サブディレクトリーのディスク使用量を表示します。du
の出力の最後の行はディレクトリーの合計ディスク使用量を表示します。ディレクトリーの合計ディスク使用量を人間が認識できる形式でのみ表示するには、du -hs
を使用します。他のオプションについては、man du
を参照してください。
Gnome システムモニター
システムのパーティションとディスク領域の使用状況をグラフィカル形式で表示するには、
→ → を順にクリックするか、またはコマンド gmnoe-system-monitor
を使用して、Gnome システムモニター を使用します。ファイルシステム タブを選択すると、システムのパーティションが表示されます。以下の図は、ファイルシステム タブを示しています。

図2.1 Gnome システムモニター内のファイルシステムタブ
2.1.1.2. /boot/
ディレクトリー
/boot/
ディレクトリーには、システムを起動するために必要な Linux カーネルなどの静的ファイルが含まれます。これらのファイルはシステムが正常に起動するために不可欠です。
警告
/boot/
ディレクトリーを削除しないでください。削除するとシステムを起動できなくなります。
2.1.1.3. /dev/
ディレクトリー
/dev/
ディレクトリーには、以下のデバイスタイプを表すデバイスノードが含まれます。
- システムに接続しているデバイス
- カーネルで提供される仮想デバイス
これらのデバイスノードはシステムが正常に機能するために不可欠です。
udevd
デーモンは、必要に応じて /dev/
内でデバイスノードを作成したり削除したりします。
/dev/
ディレクトリーとサブディレクトリー内のデバイスは、キャラクター (マウスやキーボードなどの、シリアルストリームの入出力のみを提供) か、または ブロック (ハードドライブやフロッピーなど、ランダムにアクセス可能なデバイス) のいずれかです。GNOME または KDE をインストールしている場合、一部のストレージデバイスは接続時 (例: USB を使用) や挿入時 (例: CD や DVD ドライブを使用) で自動的に検出されて、ポップアップウィンドウがそのコンテンツを表示します。
表2.1 /dev
ディレクトリー内にある共通ファイルの例
ファイル | 説明 |
---|---|
/dev/hda | プライマリー IDE チャネル上のマスターデバイス |
/dev/hdb | プライマリー IDE チャネル上のスレーブデバイス |
/dev/tty0 | 1 番目の仮想コンソール |
/dev/tty1 | 2 番目の仮想コンソール |
/dev/sda | プライマリー SCSI または SATA チャネル上の 1 番目のデバイス |
/dev/lp0 | 1 番目のパラレルポート |
有効なブロックデバイスは、以下の 2 つのタイプのエントリーのいずれかになります。
- マッピングされたデバイス
- ボリュームグループ内の論理ボリューム、例:
/dev/mapper/VolGroup00-LogVol02
- 静的なデバイス
- 従来のストレージボリューム。たとえば、
/dev/sdbX
。sdb はストレージデバイス名、X はパーティション番号になります。/dev/sdbX
は、/dev/disk/by-id/WWID
または/dev/disk/by-uuid/UUID
になる場合があります。詳細は 「永続的な命名」 を参照してください。
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/
ディレクトリー
/opt/
ディレクトリーは、通常デフォルトインストールの一部ではないソフトウェアやアドオンパッケージ用に確保されています。/opt/
にインストールするパッケージは、名前がそのパッケージと同じディレクトリーを作成します (例: /opt/パッケージ名/
)。ほとんどの場合、そのようなパッケージは予想可能なサブディレクトリー構造に従って、ほとんどがそのバイナリーを /opt/パッケージ名/bin/
に保存し、それらの man
ページを /opt/パッケージ名/man/
に保存します。
2.1.1.7. /proc/
ディレクトリー
/proc/
ディレクトリーは、カーネルから情報を抽出するか、またはカーネルに情報を送る特別なファイルを収納しています。その情報の例としては、システムメモリー、cpu 情報、およびハードウェア設定などがあります。/proc/
の詳細については、「/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/
ディレクトリー
/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/
のバイナリーを実行するために必要なライブラリーが収納されています。これらの共有ライブラリーイメージは、システムを起動したり root ファイルシステム内でコマンドを実行したりするために使用されます。 /usr/libexec
- このディレクトリーには、他のプログラムから呼び出される、小さなヘルパープログラムが収納されています。
/usr/sbin
- Red Hat Enterprise Linux 7.0 では、
/sbin
は/usr/sbin
に移動しました。このディレクトリーにはシステムの起動、復元、または修復に不可欠なバイナリーを含むシステム管理バイナリーがすべて含まれます。/usr/sbin/
のバイナリーを使用するには root 権限が必要です。 /usr/share
- このディレクトリーは、アーキテクチャーに固有ではないファイルを格納します。
/usr/src
- このディレクトリーは、ソースコードを格納します。
/var/tmp
にリンクされた/usr/tmp
- このディレクトリーは、一時ファイルを格納します。
/usr/
ディレクトリーには、/local/
サブディレクトリーが含まれる必要もあります。FHS に準じて、このサブディレクトリーはソフトウェアをローカルでインストールする際にシステム管理者によって使用されます。さらに、このサブディレクリーはシステムの更新時に上書きされないように保護されます。/usr/local
ディレクトリーは /usr/
と似た構造を持ち、以下のサブディレクトリーが含まれます。
/usr/local/bin
/usr/local/etc
/usr/local/games
/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/user
ディレクトリーには、USB ストレージメディア、DVD、CD-ROM、および Zip ディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリーが含まれます。以前は /media/
ディレクトリーが使用されたことに注意してください。
messages
や 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/
このページには機械翻訳が使用されている場合があります (詳細はこちら)。