ファイルシステム階層標準(Filesystem Hierarchy Standard、FHS)は、
Linuxを含む
Unix系オペレーティングシステム(OS)における、主要な
ディレクトリとその内容を定めた規約です。この標準は、主にBSD系の
ディレクトリ階層を基に拡張・定式化されたもので、
ファイルシステムの構造における一貫性と整合性を目指しています。
FHSは、主要なソフトウェアおよびハードウェアベンダーが参加する非営利団体である
Linux Foundationによって保守・管理されています。参加ベンダーには、HP、
レッドハット、
IBM、
デルなどが含まれています。
2020年11月時点での最新版はバージョン3.0で、2015年6月3日に発表されました。
FHSの概要
多くの
Linuxディストリビューションは、FHSへの準拠を基本方針としています。
Unix系OSでは、/etc、/bin、/usrなどの基本的な
ディレクトリについては共通の慣習がありましたが、それ以外は開発元ごとの仕様や、プロプライエタリな
バイナリにハードコードされている場合などもあり、変則的な環境での運用は困難でした。FHSは、このような問題点を解決し、
ファイルシステム構造の標準化を図ることを目的としています。
例えば、Version 7 Unix(1979)にはhier(7)で示される
ファイルシステムレイアウトがあり、SunOSのfilesystem(7)や
Solarisのfilesystem(5)も同様の役割を果たしていました。しかし、これらのシステム間で完全な互換性があるわけではありませんでした。
近年では、
Linuxディストリビューションに仮想
ファイルシステムとして/sys
ディレクトリ(sysfs)が導入され、/proc
ディレクトリ(procfs)と共にシステムのデバイス設定を動的に変更できるようになりました。
しかし、
Gobo[[Linux]]やSyllable Serverといった一部の
Linuxシステムでは、FHSとは全く異なる
ファイルシステム階層を採用しており、FHSに依存しないシステムも存在します。
FHSの歴史
ファイルシステム階層の標準化の試みは、1993年8月に
Linuxのファイルおよび
ディレクトリ構造を整理する取り組みとして始まりました。1994年2月14日にはFSSTND(Filesystem Standard)という
Linux上の
ファイルシステム階層標準がリリースされ、その後、1994年10月9日と1995年3月28日に改訂されました。
1996年初頭には、FSSTNDを
Linuxだけでなく、他の
Unix系システムにも適用できる包括的な標準とするための作業が開始されました。BSD開発コミュニティからも参加者を迎え、
Unix系システム全体で共通して問題となっていた様々な課題の解決を目指しました。この過程で、標準の名称がFilesystem Hierarchy Standard(FHS)に変更されました。
リリース履歴
FSSTND (1994年2月14日)
FSSTND 改訂 (1994年10月9日)
FSSTND 改訂 (1995年3月28日)
FHS (1996年初頭以降)
FHS 3.0 (2015年6月3日)
FHSでは、全てのファイルとディレクトリは、物理的に別々のデバイスに存在する場合でも、ルートディレクトリ(/)の下に配置されると規定しています。一部のディレクトリは、特定のサブシステム(X Window Systemなど)がインストールされないと作成されないことに注意が必要です。
これらのディレクトリの多くは、Unix系OSに共通して存在し、類似した使われ方をしていますが、FHSにおける説明はFHS固有のものであり、Linux以外のプラットフォームに必ずしも適用できるわけではありません。
/bin: ユーザーが利用する基本的な
実行ファイル(コマンド)。
/boot: ブートローダーに関連するファイル。
/dev: デバイスファイル。
/etc: システム全体の設定ファイル。
/home: ユーザーのホーム
ディレクトリ。
/lib: 共有ライブラリ。
/media: 取り外し可能なメディアのマウントポイント。
/mnt: 一時的なマウントポイント。
/opt: オプションの
アプリケーションソフトウェア。
/proc: プロセスやカーネルに関する情報を提供する仮想ファイルシステム。
/root: rootユーザーのホーム
ディレクトリ。
/sbin: システム管理用の実行ファイル。
/srv: システムが提供するサービスに関するデータ。
/sys: カーネルが管理するデバイス情報を提供する仮想ファイルシステム。
/tmp: 一時ファイル。
/usr: ユーザー向けの実行ファイル、ライブラリ、ドキュメントなど。
/var: 可変データ(ログファイル、スプールなど)。
まとめ
FHSは、
Unix系OSにおける
ファイルシステム構造の標準化を推進し、ディストリビューション間の互換性と一貫性を高める上で重要な役割を果たしています。
LinuxディストリビューションはFHSに準拠することで、より安定したシステム運用を可能にしています。