Red Hat Training

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

第2章 ファイルシステムの構造とメンテナンス

ファイルシステム構造は、オペレーティングシステムの最も基本的な組織レベルです。オペレーティングシステムは、ユーザー、アプリケーション、およびセキュリティーモデルと対話する方法は、オペレーティングシステムがストレージデバイスのファイルを整理する方法によって異なります。一般的なファイルシステム構造を提供することで、ユーザーおよびプログラムがファイルにアクセスおよび書き込みできるようになります。
ファイルシステムでは、ファイルを複数の論理カテゴリーに分類します。
共有可能およびアンマーシャリング可能ファイル
共有可能なファイルは、ローカルおよびリモートホストによりアクセスできます。ハンドシェイクできないファイルはローカルでのみ利用できます
変数および静的ファイル
ドキュメントなどの変数ファイルはいつでも変更できますバイナリーなどの静的ファイルは、システム管理者からアクションなしでは変更しないでください。
この方法のファイルを分類することにより、各ファイルの関数を保持するディレクトリーに割り当てられたパーミッションと関連付けることができます。オペレーティングシステムとそのユーザーがファイルと対話する方法により、そのディレクトリーが読み取り専用または読み書きパーミッションでマウントされるか、そのディレクトリーが読み取り/書き込みパーミッションでマウントされ、各ユーザーのアクセスレベルがそのファイルになければなりません。この組織のトップレベルは重要です。基礎となるディレクトリーへのアクセスが制限される可能性があります。そうでないと、トップレベルから、アクセスルールは rigid 構造に準拠していない場合、セキュリティーの問題が発生する可能性があります。

2.1. ファイルシステム階層標準(FHS)の概要

Red Hat Enterprise Linux は、ファイルシステム階層標準 (FHS)ファイルシステム構造を使用します。これは、多くのファイルタイプやディレクトリーの名前、場所、およびパーミッションを定義します。
FHS ドキュメントは、FHS 準拠のファイルシステムへの権威参照です。このセクションは、標準の概要と、標準では対応していないファイルシステムの一部の説明です。
FHS コンプライアンスで最も重要な要素は次のとおりです。
  • 他の FHS 準拠のシステムとの互換性
  • /usr/ パーティションを読み取り専用としてマウントする機能。これは、/usr/ に共通の実行ファイルが含まれるため、ユーザーが変更しないようにする必要があります。さらに、/usr/ が読み取り専用としてマウントされるため、CD-ROM ドライブから、または読み取り専用 NFS マウントを使用して、別のマシンからマウントできる必要があります。

2.1.1. FHS 組織

ここで記載されているディレクトリーおよびファイルは、FHS ドキュメントで指定した小さなサブセットです。詳細情報は、最新の 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 システムモニター
グラフィカル形式でシステムのパーティションおよびディスク領域の使用量を表示するには、ApplicationsTools+System MonitorSystem Monitor を使用します。File Systems タブを選択して、システムのパーティションを表示します。以下の図は、ファイルシステム タブを示しています

図2.1 GNOME システムモニターのファイルシステムタブ

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 最初の仮想コンソール
/dev/tty1 2 つ目の仮想コンソール
/dev/sda プライマリー SCSI または SATA チャネルでの最初のデバイス。
/dev/lp0 最初の並列ポート。
有効なブロックデバイスは、以下の 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/ Directory

/mnt/ ディレクトリーは、NFS ファイルシステムのマウントなど、一時的にマウントされたファイルシステム用に予約されます。すべてのリムーバブルストレージメディアについては、/media/ ディレクトリーを使用します。自動検出したリムーバブルメディアは、/media ディレクトリーにマウントされます。
重要
/mnt ディレクトリーは、インストールプログラムでは使用しないでください。

2.1.1.6. /opt/ ディレクトリー

/opt/ ディレクトリーは通常、ソフトウェアおよびデフォルトインストールの一部ではないアドオンパッケージ用に予約されます。/opt/ にインストールするパッケージは、ディレクトリーの名前を /opt/packagename/ など、その名前として作成します。多くの場合、このパッケージは予測可能なサブディレクトリー構造に従います。ほとんどのパッケージは、バイナリーを /opt/packagename/bin/ に保存して、/ opt/packagename/man/ の 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 Package Manager はソフトウェアのアップグレードを安全に実行できるため、/usr/local/ に保存してファイルを保護する必要はありません。
代わりに、Red Hat Enterprise Linux は、マシンのローカルのソフトウェアに /usr/local/ を使用します。たとえば、/usr/ ディレクトリーがリモートホストから読み取り専用 NFS 共有としてマウントされている場合は、/usr/local/ ディレクトリーにパッケージまたはプログラムをインストールできます。

2.1.1.11. /var/ ディレクトリー

FHS では、Linux が /usr/ を読み取り専用としてマウントする必要があるため、ログファイルを書き込むプログラムや spool/ ディレクトリーが必要なプログラムはすべて、/ 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 ストレージメディア、DVDs、CD-ROMs、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/

このページには機械翻訳が使用されている場合があります (詳細はこちら)。