LPIC Level1 復習ラジオ 05:ディレクトリ構成(FHS)
音声
目次
FHSとは
FHSは、Filesystem Hierarchy Standardの略です。
Unix系OSで、ファイルやディレクトリをどこへ配置するかについて定めた標準です。
配置をある程度共通化することで、利用者、管理者、プログラム、スクリプトが、必要なファイルの場所を予測しやすくなります。
ただし、すべてのLinuxディストリビューションが完全に同じ構成とは限りません。FHSを基本にしつつ、ディストリビューション独自の構成や、systemdなどによる現代的な構成もあります。
ルートディレクトリ
/ ― すべての起点
/は、ルートディレクトリです。Linuxのディレクトリ階層の最上位にあります。
Windowsのドライブ文字とは異なり、Linuxでは別のストレージやファイルシステムも、基本的にこの一つの階層へマウントして利用します。
/
├── etc
├── home
├── usr
├── var
└── ...
なお、管理者ユーザーであるrootと、最上位のディレクトリであるルートディレクトリは、同じ「root」という言葉が使われますが別物です。
コマンドとライブラリのディレクトリ
/bin ― 基本コマンド
/binには、システムの基本操作に必要なコマンドが置かれてきました。
例えば、ls、cp、mv、catなどです。
/sbin ― システム管理用コマンド
/sbinには、主にシステム管理で使う重要なコマンドが置かれてきました。
sbinは、一般にsystem binariesなどの意味で説明されます。
/lib・/lib64 ― 共有ライブラリなど
/libや/lib64には、基本コマンドの実行に必要な共有ライブラリや、カーネルモジュールなどが置かれます。
/usr ― 多くのプログラムと共有データ
/usrには、多くのコマンド、ライブラリ、文書などが置かれます。
/usr/bin:一般的なコマンド/usr/sbin:主に管理用のコマンド/usr/lib:ライブラリ/usr/share:アーキテクチャに依存しにくい共有データ/usr/local:そのコンピューターで個別に導入したソフトウェア
設定・利用者・追加ソフトウェア
/etc ― システム設定
/etcには、そのコンピューター固有のシステム設定ファイルが置かれます。
代表例には、ユーザー情報に関係する/etc/passwd、自動マウント設定の/etc/fstab、ホスト名とIPアドレスの対応を書く/etc/hostsなどがあります。
/etcは設定の場所であり、通常は実行プログラムそのものを置く場所ではありません。
/home ― 一般利用者のホーム
/homeには、一般利用者のホームディレクトリが置かれます。
例えば、ユーザー名がaliceなら、ホームディレクトリは/home/aliceとなることが一般的です。
個人の文書や、ドットで始まる個人設定ファイルなどが保存されます。
/opt ― 追加アプリケーション
/optは、追加導入するアプリケーションパッケージを配置するためのディレクトリです。
ディストリビューションの標準構成とは別に提供される、大きなソフトウェア一式などが置かれることがあります。
/srv ― サービスが提供するデータ
/srvには、そのシステムが提供するサービスに関係するデータを置きます。
例えば、WebやFTPで公開するデータを配置する構成があります。ただし、実際の配置はディストリビューションや管理方針によって異なります。
変化するデータと一時ファイル
/var ― 変化するデータ
/varのvarは、variableに由来します。
運用中に内容や大きさが変化するデータが置かれます。
/var/log:ログ/var/cache:再生成可能なキャッシュ/var/spool:処理待ちのメールや印刷データなど/var/tmp:一時ファイル
「ログはどこか」と聞かれたら、まず/var/logを思い出します。
/tmp ― 一時ファイル
/tmpには、プログラムが使う一時ファイルを置きます。
複数の利用者やプログラムが利用できるため、一般にSticky Bitが設定されています。
/tmpのファイルは、再起動時や一定期間後に削除される可能性があります。長期保存には向きません。
/var/tmpとの違い
/var/tmpも一時ファイル用ですが、FHSでは/tmpより長く保持され、再起動をまたいで残す必要がある一時データに利用する場所とされています。
/run ― 起動後の実行時データ
/runには、OS起動後に必要となる実行時データが置かれます。
PIDファイル、ソケット、ロックに関係する情報などが置かれることがあります。通常は起動時に作り直される揮発性の領域です。
起動と管理者のディレクトリ
/boot ― 起動に必要なファイル
/bootには、Linuxの起動に必要なファイルが置かれます。
Linuxカーネル、初期RAMファイルシステム、ブートローダー関連ファイルなどが含まれます。
/root ― rootユーザーのホーム
/rootは、管理者ユーザーrootのホームディレクトリです。
一般利用者のホームは通常/home/ユーザー名ですが、rootのホームは/rootです。
仮想ファイルシステム
/dev、/proc、/sysは、通常の文書を長期保存するディレクトリとは性格が異なります。
/dev ― デバイスファイル
/devには、ディスク、端末、乱数生成器などを表すデバイスファイルが置かれます。
/dev/sda:ストレージを表す場合がある/dev/tty:端末/dev/null:書き込んだデータを捨てる特殊なデバイス
Linuxでは、さまざまなデバイスをファイルのような形で扱います。
/proc ― プロセスとカーネル情報
/procは、procfsという疑似ファイルシステムがマウントされる場所です。
実行中プロセスやカーネルの情報を、ファイルのような形式で参照できます。
/proc/cpuinfo:CPU情報/proc/meminfo:メモリ情報/proc/番号:そのPIDを持つプロセスの情報
多くの項目は読み取り専用ですが、書き込みによってカーネル設定を変更できる項目もあります。
/sys ― デバイスとカーネルオブジェクト
/sysには、通常sysfsがマウントされます。
カーネルが認識しているデバイス、ドライバー、バスなどの情報を階層構造で参照できます。
確認コマンド
最上位のディレクトリを確認する
ls -l /
シンボリックリンクも含めて確認する
ls -ld /bin /sbin /lib
現在のファイルシステム階層を確認する
findmnt
ディレクトリごとの容量を確認する
du -sh /var/*
マニュアルを確認する
man hier
man proc
man file-hierarchy
hierはhierarchyの略で、ファイルシステム階層の説明を確認できます。ただし、利用できるマニュアルや記載内容はディストリビューションによって異なります。
30秒チェック
- システム設定ファイルが主に置かれるディレクトリはどこでしょうか。
- ログが主に置かれるディレクトリはどこでしょうか。
- 一般利用者とrootユーザーのホームディレクトリは、それぞれどこでしょうか。
- プロセスやカーネル情報を参照できる疑似ファイルシステムはどこにマウントされるでしょうか。
/tmpと/var/tmpでは、一般にどちらが再起動後も残す一時ファイルに向いているでしょうか。
答えを表示
/etc/var/log- 一般利用者は通常
/home/ユーザー名、rootは/root /proc/var/tmp
要約
- FHSは、Unix系OSのファイルやディレクトリ配置を定めた標準です。
/は、すべてのディレクトリ階層の起点です。/etcには設定、/homeには一般利用者のデータが置かれます。/usrには多くのコマンドやライブラリ、共有データが置かれます。/varにはログなど、運用中に変化するデータが置かれます。/tmpと/var/tmpは一時ファイル用ですが、保持期間の考え方が異なります。/bootには起動用ファイル、/rootにはrootのホームが置かれます。/dev、/proc、/sysは、デバイスやカーネル情報を扱う特殊な領域です。