FHS(エフエイチエス)とは | 意味や読み方など丁寧でわかりやすい用語解説
FHS(エフエイチエス)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ファイルシステム階層標準 (ファイルシステムカイソウヒョウジュン)
英語表記
Filesystem Hierarchy Standard (ファイルシステム・ヒエラルキー・スタンダード)
用語解説
FHSはFilesystem Hierarchy Standardの略で、LinuxなどのUnix系オペレーティングシステムにおいて、ファイルやディレクトリをどこに配置するかという標準的なルールを定めた規格である。OSの内部には数多くのプログラムや設定ファイル、ユーザーデータなどが存在するが、FHSはこれらの要素を整理し、一貫性のある場所に格納するための指針を提供する。これにより、異なる種類のUnix系OSや様々なLinuxディストリビューションを使用する際にも、ユーザーやシステム管理者は「あのファイルはきっとここにあるだろう」と予測できるようになり、システムの理解や操作が格段に容易になる。ソフトウェア開発者は、FHSに準拠することで、作成したプログラムがより多くのシステムで正しく動作することを期待できる。つまり、FHSはシステムの互換性、管理性、そして利用者の利便性を高めるための重要な土台となる標準規格だと言える。
FHSはLinux Foundationによって策定・維持されており、時代とともに改訂を重ねながら、現代のUnix系システムにおけるデファクトスタンダードとして広く受け入れられている。FHSが定めるディレクトリ構造は、システムの機能やデータの種類に応じて、トップレベルディレクトリと呼ばれる主要なディレクトリを定義している。
最も根元に位置するディレクトリは「/」(ルートディレクトリ)であり、全てのファイルとディレクトリはこのルートから始まる階層構造を形成する。
主なトップレベルディレクトリとその役割は以下の通りである。
/binには、ユーザーが日常的に利用する基本的なコマンドの実行ファイルが置かれる。例えば、ファイルを一覧表示するlsや、ファイルをコピーするcpなどのコマンドが含まれる。
/sbinには、システムの管理者が利用するシステム管理用のコマンドの実行ファイルが置かれる。例えば、ディスクのパーティションを管理するfdiskや、システムの起動プロセスを制御するinitなどのコマンドが含まれる。
/etcには、システム全体の設定ファイルが格納される。ネットワーク設定、ユーザー情報、サービスの起動スクリプトなど、システムの動作を制御する重要なファイルが多い。
/usrはUnix System Resourcesの略で、主に読み取り専用のユーザープログラム、ライブラリ、ドキュメントなどが格納される。OSの多くのプログラムがここにインストールされる。/usr/binには一般的なユーザーコマンド、/usr/sbinにはシステム管理コマンドの補助的なものが、/usr/localにはシステム管理者によって手動でインストールされたソフトウェアやデータが配置される。
/varはVariable dataの略で、システムの運用中に内容が頻繁に変化するデータが格納される。例えば、システムやアプリケーションのログファイル(/var/log)、メールのスプールファイル(/var/mail)、ウェブサーバーのドキュメントルート(/var/www)などが含まれる。
/homeは一般ユーザーのホームディレクトリが作成される場所である。各ユーザーは自分のホームディレクトリ(例: /home/username)を持ち、そこに個人用の設定ファイル、ドキュメント、ダウンロードしたファイルなどを保存する。
/rootはシステムの管理者であるrootユーザーのホームディレクトリである。一般的なユーザーとは異なり、独立して存在する。
/bootには、オペレーティングシステムの起動に必要なファイル、例えばLinuxカーネルのイメージファイルやブートローダーの設定ファイルなどが格納される。
/devはDeviceの略で、システムが認識している物理デバイスや仮想デバイスへのインターフェースとなるデバイスファイルが置かれる。これらのファイルを通じて、プログラムはハードウェアとやり取りを行う。
/procはプロセス情報やシステム状態に関する仮想ファイルシステムである。物理的なディスク上に存在するわけではなく、カーネルがメモリ上に動的に生成する。実行中のプロセス情報などをファイルとして参照できる。
/sysは/procと同様に、カーネルが提供するシステム情報を参照するための仮想ファイルシステムである。デバイス情報やカーネルモジュールに関する情報などが提供される。
/tmpは一時ファイルが作成されるディレクトリである。システムのリブート時や定期的に内容が消去されることが想定されている。
/optはオプションのソフトウェアパッケージ、特にサードパーティ製のソフトウェアがインストールされる場所である。独自のディレクトリ構造を持つ大規模なアプリケーションがここにインストールされることが多い。
/mntや/mediaは、一時的にファイルシステムをマウントするためのディレクトリである。USBメモリやCD-ROM、ネットワークドライブなどを接続した際に、それらの内容を一時的にアクセス可能にするために利用される。
FHSの恩恵は多岐にわたる。まず、異なるシステム間での互換性が確保されるため、ソフトウェア開発者はプログラムを様々なLinuxディストリビューションやUnix系システムで動作させやすくなる。システム管理者は、ファイルの場所を予測できるため、システムの保守、トラブルシューティング、バックアップなどの作業を効率的に行える。さらに、それぞれのディレクトリの役割が明確であるため、セキュリティポリシーを適用しやすくなる。例えば、読み取り専用であるべきディレクトリをそのようにマウントすることで、意図しない書き込みを防ぐことができる。また、マルチユーザー環境において、ユーザー固有のデータとシステム全体で共有されるデータを適切に分離し、管理を容易にする。
しかし、FHSは厳格な法的拘束力を持つものではなく、あくまで「標準」であるため、一部のディストリビューションやアプリケーションでは独自の慣習に従ってファイルが配置されることもある。また、コンテナ技術のような仮想化環境の普及により、必ずしもFHSの全要件を厳密に遵守しない利用形態も現れている。それでも、FHSが提供するファイルシステムの階層構造の概念は、Unix系OSの理解において依然として不可欠な基礎知識であり、システムエンジニアを目指す者にとって学習しておくべき重要な要素であることに変わりはない。システムの安定性、効率性、そして利便性を支えるFHSは、今後もその基本的な考え方を変えずに進化を続けていくことだろう。