本記事には広告(アフィリエイトリンク)が含まれます。

Linuxディレクトリ構造とFHSの基本

Linuxエンジニア養成講座 第6回|全36回・フェーズ2「Linux基礎」の3回目です。
前回までに学んだこと: SSH接続の仕組みとターミナル操作の基本テクニック(第5回)。
今回学ぶこと: Linuxのファイルシステムとディレクトリ構造(FHS)、df・du・mountコマンドによるディスク使用量の確認。

前回はSSH接続を学び、VMコンソールを卒業しました。今回からはSSH経由でalma-mainに接続した状態で進めます。Linuxでは「どこに何があるか」がルールとして決められており、そのルールを理解することが、今後のファイル操作やサーバー管理の土台になります。

この回の学習目標

  • FHSに基づく主要ディレクトリ(/etc, /var, /home, /tmp)の役割を説明できる
  • 絶対パスと相対パスの違いを理解し、使い分けられる
  • df コマンドでファイルシステムの使用率を確認し、危険な状態を判断できる
  • du コマンドでディスク容量を消費しているディレクトリを特定できる
  • /etc/fstab と lsblk の出力からディスク構成を読み取れる

なぜディレクトリ構造を知る必要があるのか

もしLinuxに「どこに何を置く」というルールが一切なかったら、他人が構築したサーバーを引き継いだとき何が起きるでしょうか。少し考えてから読み進めてください。

Windowsの「どこに何がある」を思い出す

Windowsに慣れている方は、「アプリケーションは C:\Program Files に入っている」「ユーザーのデータは C:\Users\ユーザー名 にある」といった感覚を持っているはずです。OSにはファイルの配置場所に関するルールがあり、そのルールを知っていれば、初めて触るPCでも目的のファイルをある程度見当がつけられます。

Linuxでも同じことが言えます。設定ファイルを編集したい、ログを確認したい、ソフトウェアの実行ファイルがどこにあるか調べたい ―― こうした場面で「どこに何があるか」の基本構造を知っていれば、作業のスピードと正確性が上がります。逆に、この構造を知らないまま作業すると、目的のファイルを探すだけで時間を浪費することになります。

Linuxでは「ルール」が決まっている ―― FHSという設計図

Linuxのディレクトリ構造は、FHS(Filesystem Hierarchy Standard)という規格によって標準化されています。FHSは「どのディレクトリに何を置くか」を定めた設計図です。

Windowsでは C:\Program FilesC:\Users といった配置ルールがMicrosoftによって定められていますが、LinuxではFHSという業界標準の規格がその役割を担っています。AlmaLinux、Ubuntu、Debianなど、ディストリビューションが異なっても、FHSに準拠している限り基本的なディレクトリ構造は共通です。

つまり、FHSを理解しておけば、将来別のディストリビューションを触ることになっても、「設定ファイルは /etc にある」「ログは /var/log にある」という知識がそのまま使えます。

もしディレクトリの配置ルールが存在しなかったらどうなるでしょうか。10人のエンジニアがそれぞれ好きな場所に設定ファイルを置いたら、障害時に設定ファイルを探すだけで混乱します。FHSが存在する理由は、ディストリビューション間のポータビリティ(ある環境で学んだ知識が別の環境でも通用する)と、複数のエンジニアが同じサーバーを管理するときの統一性を確保するためです。

FHSの全体像

/(ルート)を頂点としたツリー構造

Linuxのファイルシステムは、/(ルートディレクトリ)を頂点としたツリー(木)構造になっています。

Windowsでは C:D: のようにドライブ文字でディスクを区別しますが、Linuxにはドライブ文字の概念がありません。すべてのファイルとディレクトリは、/ を起点とする1つのツリーに統合されています。USBメモリや追加ディスクも、ツリーのどこかに「マウント(接続)」されて利用する仕組みです。マウントについてはこの記事の後半で扱います。

Windowsのパス区切り文字が \(バックスラッシュ)であるのに対し、Linuxでは /(スラッシュ)を使います。例えば、ログファイルの場所は /var/log/messages のように表記します。

/                         ← ルート(すべての起点)
├── /etc                  ← 設定ファイル
├── /var                  ← 可変データ(ログ・キャッシュ)
├── /home                 ← ユーザーのホームディレクトリ
├── /tmp                  ← 一時ファイル(再起動で消える)
├── /usr                  ← プログラム・ライブラリ
├── /boot                 ← OS起動ファイル
├── /opt                  ← 追加ソフトウェア
├── /dev                  ← デバイスファイル
├── /proc                 ← カーネル情報(仮想)
└── /sys                  ← デバイス情報(仮想)

すべてのディレクトリは /(ルート)の直下に並んでいます。Windowsの「Cドライブの中にProgram FilesやUsersがある」のと同じ考え方です。

主要ディレクトリの役割一覧

以下に、インフラエンジニアが現場で頻繁に触れるディレクトリを一覧にまとめます。すべてを暗記する必要はありませんが、「大まかにどこに何がある」を掴んでおくことが大切です。

ディレクトリ役割Windowsで近い場所
/ルートディレクトリ。ツリー全体の頂点C:\
/etc設定ファイルの集約場所レジストリ + 各種.confファイル
/varログ、キャッシュ、メールなど変化するデータC:\Windows\Logs など
/tmp一時ファイル置き場(再起動で消える)C:\Windows\Temp
/home一般ユーザーのホームディレクトリC:\Users
/rootrootユーザーのホームディレクトリC:\Users\Administrator
/optサードパーティ製ソフトウェアの配置先C:\Program Files
/usrユーザーランドのプログラムやライブラリC:\Program Files + C:\Windows\System32
/usr/local手動でインストールしたソフトウェア手動インストール先のフォルダ
/bootOS起動に必要なカーネルやブートローダーC:\Windows\Boot
/devデバイスファイル(ディスク、端末など)デバイスマネージャーに近い概念
/procカーネルやプロセスの情報(仮想ファイルシステム)タスクマネージャーに近い概念
/sysデバイスやカーネルの情報(仮想ファイルシステム)デバイスマネージャーに近い概念

Windowsとの対応は厳密なものではなく、「だいたいこの辺りの役割」という目安です。Linuxの方がディレクトリごとの役割分担が明確に定められています。

現場で特に重要なディレクトリを詳しく見る

/etc ―― 設定ファイルの集約場所

/etc はLinuxの設定ファイルが集約されるディレクトリです。サーバーの動作を変更したいとき、多くの場合 /etc 配下のファイルを編集することになります。

インフラエンジニアが頻繁に触る設定ファイルの例を挙げます。

  • /etc/hostname ―― サーバーのホスト名
  • /etc/fstab ―― ファイルシステムのマウント設定(この記事の後半で取り上げます)
  • /etc/passwd ―― ユーザーアカウント情報(第10回で詳しく扱います)
  • /etc/ssh/sshd_config ―― SSHサーバーの設定(第27回で詳しく扱います)
  • /etc/firewalld/ ―― ファイアウォールの設定(第20回で扱います)

/etc 配下のファイルを不用意に編集するとサーバーが起動しなくなることもあるため、編集前のバックアップが鉄則です。この点は第9回「viエディタ」以降の演習で繰り返し実践します。

/var ―― ログやキャッシュなど「変化するデータ」

/var はvariable(変化する)の略で、運用中に内容が増減するデータが置かれるディレクトリです。

  • /var/log ―― システムやアプリケーションのログファイル
  • /var/cache ―― パッケージマネージャー(dnf)などのキャッシュ
  • /var/tmp ―― 再起動後も保持される一時ファイル(/tmpとの違いは後述)
  • /var/lib ―― サービスが使う可変データ(データベースのファイルなど)

中でも /var/log はインフラエンジニアにとって最も重要なディレクトリの1つです。サーバーに問題が起きたとき、最初に確認するのがここに記録されたログファイルです。ログ管理の詳細は第23回「ログ管理」で扱います。

現場のヒヤリハット: /var/logの肥大化でサービス停止

あるWebサーバーで、アプリケーションのログがローテーション(古いログの圧縮・削除)されないまま放置されていました。数か月後、/var/log が存在するパーティションのディスク使用率が100%に達し、ログの書き込みが失敗。それをきっかけにWebサービスが応答しなくなり、緊急対応に追われる事態になりました。

原因は、ログローテーション設定の漏れと、ディスク使用率を定期的に監視していなかったことの2つです。この記事の後半で学ぶ df コマンドによるディスク使用率の確認は、こうした事故を防ぐための基本的な運用作業です。ログローテーションの仕組みは第24回「cron / systemd timer」で扱います。

/tmp ―― 一時ファイル置き場の落とし穴

/tmp はプログラムや人間が一時的なファイルを置く場所です。AlmaLinux 9では、/tmp の実体は tmpfs(メモリ上の仮想ファイルシステム)であり、OSを再起動するとファイルは消えます。

落とし穴は「/tmp に置いたファイルは再起動で消える」という点です。作業中の一時ファイルを /tmp に置くのは良いですが、保存しておきたいファイルを /tmp に置いてはいけません。再起動のタイミングで気付かないまま消失するリスクがあります。

一方、/var/tmp は再起動後もファイルが保持されます。ただし、こちらも定期的なクリーンアップの対象となる場合があるため、恒久的なデータの保存場所としては適していません。

/home ―― ユーザーごとの作業領域

/home は一般ユーザーのホームディレクトリが格納される場所です。/home/developer のように、ユーザー名ごとにディレクトリが作成されます。

第5回でSSH接続した際、ログイン直後のプロンプトに ~ と表示されていたことを覚えていますか。この ~ はホームディレクトリを意味する記号で、developerユーザーの場合は /home/developer を指しています。

なお、rootユーザーのホームディレクトリは /home/root ではなく /root です。rootだけは特別扱いで、/home の外に専用のディレクトリが用意されています。これは、/home を別のディスクに配置している環境でも、rootが確実にログインできるようにするための設計です。

/opt と /usr/local ―― 追加ソフトウェアの配置先

OSの標準パッケージに含まれないソフトウェアを手動でインストールする場合、配置先として /opt/usr/local の2つが候補に挙がります。

  • /opt ―― サードパーティ製ソフトウェアを丸ごと配置する場所。/opt/ソフトウェア名/ の形でディレクトリを作り、その中に実行ファイル・設定ファイル・ライブラリをまとめて置く
  • /usr/local ―― ソースコードからコンパイルしてインストールしたソフトウェアの配置先。/usr/local/bin(実行ファイル)、/usr/local/etc(設定ファイル)のように、/usr と同じ構造を持つ

この講座では、第32回「監視入門」でPrometheusとnode_exporterをバイナリ配置する際に /opt を使用します。dnfでインストールするパッケージは自動的に適切な場所に配置されるため、手動でこれらのディレクトリを意識する場面はそこまで多くありません。

/proc と /sys ―― カーネルが見せる仮想的な情報

/proc/sys は、ディスク上にファイルが存在するわけではなく、カーネルがリアルタイムに生成する仮想的なファイルシステムです。

/proc にはプロセスの情報やカーネルのパラメータが格納されています。例えば、/proc/cpuinfo を読めばCPUの情報が取得でき、/proc/meminfo を読めばメモリの情報が取得できます。第4回cat /etc/os-release を使ってOS情報を確認しましたが、同様にカーネルの情報は /proc から取得する仕組みです。

/sys にはデバイスやドライバーの情報が格納されています。/proc/sys の詳細は今の段階では深入りしません。「カーネルが見せる仮想的なファイルシステムである」ということだけ押さえておいてください。

やってみよう ―― ディレクトリを実際に歩いてみる

SSH接続してディレクトリを確認する

第5回で設定したSSH configを使って、alma-mainに接続します。ホストPC(Windows)のターミナルで以下を実行してください。

実行コマンド:

PS> ssh alma-main

ログインできたら、まずルートディレクトリの中身を確認します。以下のコマンドはすべてalma-main上で実行します。

実行コマンド:

$ ls /

実行結果:

afs  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

先ほどの一覧表で紹介したディレクトリが並んでいるのが確認できます。afs は一般的な環境ではあまり使われないディレクトリで、今は気にしなくて構いません。

主要ディレクトリの中身をのぞいてみる

/etc ディレクトリの中身を確認します。ファイルが多いため、最初の20件だけ表示します。

実行コマンド:

$ ls /etc | head -20

実行結果:

DIR_COLORS
DIR_COLORS.lightbgcolor
GREP_COLORS
NetworkManager
X11
adjtime
aliases
almalinux-release
alternatives
anacrontab
audit
authselect
bash_completion.d
bashrc
binfmt.d
chrony.conf
chrony.keys
cifs-utils
cron.d
cron.daily

設定ファイルやディレクトリが多数並んでいます。NetworkManager(ネットワーク管理の設定)、chrony.conf(時刻同期の設定)、cron.daily(日次定期実行の設定)など、名前から役割を推測できるものもあります。

ここで使った |(パイプ)と head コマンドの仕組みは、第8回「テキスト処理・パイプとリダイレクト」で詳しく学びます。今は「ls の出力を head に渡して、先頭20行だけ表示する」という意味だと理解しておいてください。

次に、/var ディレクトリの中身を確認します。

実行コマンド:

$ ls /var

実行結果:

adm  cache  crash  db  empty  ftp  games  kerberos  lib  local  lock  log  mail  nis  opt  preserve  run  spool  tmp  yp

logcachetmplib など、先ほど解説した役割のディレクトリが確認できます。

/var/log の中身も見てみます。

実行コマンド:

$ ls /var/log

実行結果:

README  anaconda  audit  btmp  chrony  cron  dnf.librepo.log  dnf.log  dnf.rpm.log  firewalld  hawkey.log  lastlog  maillog  messages  private  secure  spooler  sssd  tallylog  wtmp

messages(システム全般のログ)、secure(認証関連のログ)、cron(定期実行のログ)、dnf.log(パッケージ管理のログ)など、OS標準のログが並んでいます。サーバーを運用していると、ログローテーション(古いログの切り出し)によって messages-20260401 のようなサフィックスが付いたファイルが増えていきます。Webサーバーやデータベースをインストールすると、ここにそれらのログファイルも追加されていきます。

絶対パスと相対パスを体験する

Linuxでファイルやディレクトリの場所を指定する方法には、絶対パス相対パスの2種類があります。

  • 絶対パス: /(ルート)から始まるフルパス。例: /var/log/dnf.log
  • 相対パス: 現在地からの相対的な位置指定。例: log/dnf.log/var にいる場合)

まず、現在のディレクトリを pwd(print working directory)コマンドで確認します。

実行コマンド:

$ pwd

実行結果:

/home/developer

ログイン直後はホームディレクトリにいます。ここから /var/log に移動してみます。

実行コマンド:

$ cd /var/log

cd(change directory)はディレクトリを移動するコマンドです。上の例では /var/log という絶対パスで移動先を指定しています。移動後に pwd で確認します。

実行コマンド:

$ pwd

実行結果:

/var/log

現在地が /var/log に変わりました。ここで、相対パスを使って1つ上のディレクトリ(/var)に移動します。

実行コマンド:

$ cd ..

.. は「1つ上のディレクトリ」を意味する特別な表記です。.(ドット1つ)は「現在のディレクトリ」を意味します。

実行コマンド:

$ pwd

実行結果:

/var

最後に、ホームディレクトリに戻ります。引数なしで cd を実行すると、ホームディレクトリに戻ります。

実行コマンド:

$ cd

実行コマンド:

$ pwd

実行結果:

/home/developer

絶対パスと相対パスの違いは、今後のファイル操作で常に意識することになります。迷ったら絶対パスを使うのが確実です。相対パスは現在地によって意味が変わるため、「自分が今どこにいるか」を pwd で確認してから使う習慣をつけてください。

ディスク使用量を確認する ―― df と du の基本

第4回df -h コマンドを使ってディスクの使用状況を確認しました。今回はファイルシステムの文脈で改めて読み解き、dumount コマンドも加えて、ディスク管理の基本を身につけます。

df ―― ファイルシステム全体の空き容量を見る

df(disk free)は、マウントされているファイルシステムごとの使用状況を表示するコマンドです。

実行コマンド:

$ df -h

実行結果:

ファイルシス               サイズ  使用  残り 使用% マウント位置
devtmpfs                     4.0M     0  4.0M    0% /dev
tmpfs                        2.0G     0  2.0G    0% /dev/shm
tmpfs                        783M  8.5M  774M    2% /run
efivarfs                     128M   33K  128M    1% /sys/firmware/efi/efivars
/dev/mapper/almalinux-root    64G  2.1G   62G    4% /
/dev/sda2                    960M  199M  762M   21% /boot
/dev/sda1                    599M  7.1M  592M    2% /boot/efi
/dev/mapper/almalinux-home    31G  254M   31G    1% /home
tmpfs                        392M     0  392M    0% /run/user/1000

第4回では「/ の使用率は4%」「/home は31GB中254MB使用」といった表面的な読み方を学びました。今回はファイルシステムの知識を踏まえて、もう少し踏み込んで読み解きます。

各列の意味は以下のとおりです。

  • ファイルシス: ファイルシステムのデバイス名。/dev/mapper/almalinux-root はLVM(論理ボリュームマネージャ)で管理されたボリュームを意味する。LVMの詳細は第25回で扱う
  • サイズ: ファイルシステムの総容量
  • 使用: 使用済みの容量
  • 残り: 残りの空き容量
  • 使用%: 使用率。運用上、80%を超えたら注意、90%を超えたら対処が必要
  • マウント位置: ファイルシステムがマウントされているディレクトリ

ヘッダーが日本語で表示されているのは、このサーバーの言語設定が日本語(LANG=ja_JP.UTF-8)になっているためです。英語環境では「Filesystem」「Size」「Used」「Avail」「Use%」「Mounted on」と表示されます。

注目すべきポイントは、/(ルート)と /home が別々のファイルシステム(/dev/mapper/almalinux-root/dev/mapper/almalinux-home)に分かれている点です。これはAlmaLinuxのインストーラーが自動的にパーティションを分割した結果です。//home を分けておくことで、ユーザーのデータで /home がいっぱいになっても、OS本体が動作する / には影響しないという利点があります。

devtmpfstmpfsefivarfs はメモリ上の仮想ファイルシステムです。物理ディスクの使用量を確認する際はこれらを除外して見ます。

du ―― ディレクトリごとの使用量を見る

df がファイルシステム全体の使用状況を見るコマンドであるのに対し、du(disk usage)は特定のディレクトリがどれだけディスクを使っているかを確認するコマンドです。

先ほどのヒヤリハットで取り上げた /var/log のサイズを確認してみます。/var/log 配下には一般ユーザーでは読めないファイルがあるため、sudo を付けて実行します。

実行コマンド:

$ sudo du -sh /var/log

実行結果:

8.0M	/var/log

構築後間もない環境のため、ログは8.0MB程度です。運用中のサーバーでは、ここが数GB〜数十GBになることも珍しくありません。

du コマンドのオプションの意味は以下のとおりです。

  • -s(summarize): 指定したディレクトリの合計サイズだけを表示する。これを付けないとサブディレクトリごとの内訳が大量に出力される
  • -h(human-readable): GB、MBなど人間が読みやすい単位で表示する。df -h-h と同じ意味

dfdu には他にも多くのオプションがあります。オプションの一覧は df --helpdu --help で確認できます。

df でファイルシステム全体の使用率を確認し、使用率が高い場合は du で原因のディレクトリを特定する」というのが、ディスク容量のトラブルシューティングにおける基本的な流れです。

mount ―― 何がどこにマウントされているかを確認する

この記事の冒頭で、「Linuxにはドライブ文字がなく、すべてのファイルシステムはツリーのどこかにマウントされる」と説明しました。mount コマンドで、現在のマウント状況を確認できます。

実行コマンド:

$ mount | head -10

実行結果:

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=494877,mode=755,inode64)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,size=800996k,nr_inodes=819200,mode=755,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)

出力のフォーマットは「デバイス on マウントポイント type ファイルシステムの種類 (オプション)」です。proc on /proc type proc は、「proc という仮想ファイルシステムが /proc にマウントされている」ことを示しています。

引数なしの mount は出力が多いため、head -10 で先頭10行だけ表示しています。物理ディスクのマウント状況だけを見たい場合は、/etc/fstab(ファイルシステムテーブル)を確認するのが確実です。

実行コマンド:

$ cat /etc/fstab

実行結果:

#
# /etc/fstab
# Created by anaconda on Tue Mar 24 03:30:22 2026
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/almalinux-root /                       xfs     defaults        0 0
UUID=d5b9e0e8-a172-44b3-85d5-c3fd4dd8dc03 /boot                   xfs     defaults        0 0
UUID=54A9-7F5C          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/almalinux-home /home                   xfs     defaults        0 0
/dev/mapper/almalinux-swap none                    swap    defaults        0 0

/etc/fstab は、OS起動時に自動マウントするファイルシステムの定義ファイルです。各行は「デバイス名」「マウントポイント」「ファイルシステムの種類」「オプション」「dumpフラグ」「fsckの順序」の6つのフィールドで構成されています。

この出力から読み取れることを整理します。

  • /dev/mapper/almalinux-root/ にマウントされている(ファイルシステムは xfs
  • /dev/mapper/almalinux-home/home にマウントされている(ファイルシステムは xfs
  • /boot/boot/efi はそれぞれ専用のパーティションを持つ
  • スワップ領域も定義されている

xfs はRHEL系でデフォルトのファイルシステムです。Debian/Ubuntu系では ext4 がデフォルトとして使われることが多く、ディストリビューションによって異なります。

ディスクのパーティション構成は lsblk コマンドでも確認できます。

実行コマンド:

$ lsblk

実行結果:

NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  100G  0 disk
├─sda1               8:1    0  600M  0 part /boot/efi
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0 98.4G  0 part
  ├─almalinux-root 253:0    0 63.5G  0 lvm  /
  ├─almalinux-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─almalinux-home 253:2    0   31G  0 lvm  /home
sdb                  8:16   0   10G  0 disk
sdc                  8:32   0   10G  0 disk
sr0                 11:0    1 1024M  0 rom  

lsblk(list block devices)はブロックデバイス(ディスクやパーティション)の一覧をツリー形式で表示するコマンドです。

この出力から、以下の構成が読み取れます。

  • sda(100GB): OS用ディスク。3つのパーティション(sda1sda3)に分割されている
  • sda3 上にLVMが構成され、/(63.5GB)、スワップ(3.9GB)、/home(31GB)に分かれている
  • sdb(10GB)、sdc(10GB): 検証用の追加ディスク。現時点では未使用で、第25回「ストレージ管理(LVM)」の演習で使用する
  • sr0: 仮想CD/DVDドライブ。インストール時に使用したもので、通常運用では気にしなくてよい

理解度チェック

以下の文が正しければ○、間違っていれば×と答えてください。

  1. Linuxのディレクトリ構造は /(ルート)を頂点としたツリー構造である
  2. サーバーの設定ファイルは /var ディレクトリに集約されている
  3. /tmp に置いたファイルはOSを再起動しても保持される
  4. df コマンドはファイルシステム全体の使用状況を表示する
  5. rootユーザーのホームディレクトリは /home/root である
  6. 現在のディレクトリが /var/log のとき、cd ../tmp で移動する先は /var/tmp である
  7. du -sh はディレクトリごとのディスク使用量を確認するコマンドである
  8. /etc/fstab はOS起動時に自動マウントするファイルシステムを定義するファイルである

解答

  1. ○ ―― FHSに基づき、すべてのファイルとディレクトリは / を起点とするツリーに統合される
  2. × ―― 設定ファイルは /etc に集約されている。/var はログやキャッシュなど変化するデータの置き場所
  3. × ―― AlmaLinux 9の /tmptmpfs(メモリ上の仮想ファイルシステム)であり、再起動するとファイルは消える
  4. ○ ―― df(disk free)はマウントされているファイルシステムごとの使用状況を一覧表示する
  5. × ―― rootのホームディレクトリは /root/home の外に配置されている
  6. ○ ―― .. は1つ上のディレクトリを意味するため、/var/log/var/var/tmp と移動する
  7. ○ ―― df がファイルシステム全体、du がディレクトリ単位の使用量を確認するコマンド
  8. ○ ―― fstabにデバイス名、マウントポイント、ファイルシステム種類等が記載される

まとめ

今回は、Linuxのディレクトリ構造を支えるFHS(Filesystem Hierarchy Standard)の全体像を学びました。

  • Linuxのディレクトリ構造はFHSという規格で標準化されている。ディストリビューションが違っても基本構造は共通
  • /etc(設定ファイル)、/var(ログ等の可変データ)、/home(ユーザー領域)など、ディレクトリごとに役割が決まっている
  • ファイルの場所は絶対パス(/ から始まる)または相対パス(現在地からの位置)で指定する
  • df でファイルシステム全体の使用率を確認し、du でディレクトリごとの使用量を特定する
  • /etc/fstab にマウント設定が定義されており、lsblk でディスク構成を確認できる

次回の第7回「基本コマンド(ファイル操作)」では、今回学んだディレクトリ構造の上でファイルを作成・コピー・移動・削除する操作を学びます。冒頭でパッケージのインストール(dnf install)も初めて体験します。

シリーズ一覧

フェーズ1: エンジニアのいろは

フェーズ2: Linux基礎

フェーズ3: ネットワークとインフラ基盤

フェーズ4: サーバー構築と運用