なぜディスクを複数のパーティションに分割するのか
Linuxのファイルシステム階層はすべて/(ルート)を頂点とする1つのツリーですが、そのツリーの一部を別々の物理パーティションに割り当てることができます。これを行う目的は主に次のとおりです。
- 容量の分離:ログの肥大化やユーザーデータの増加が、システムの起動に必要な領域を圧迫しないようにする。
- 障害の局所化:あるパーティションのファイルシステムが破損しても、他のパーティションへの影響を防ぐ。
- マウントオプションの個別設定:例えば
/homeにnosuid(setuidおよびsetgidビットを有効として扱わない)を指定するなど、用途に応じた安全性の設定を分けられる。 - バックアップ・再インストールの効率化:
/homeを独立させておけば、OS本体を再インストールしてもユーザーデータをそのまま残せる。
主要なマウントポイントの役割
| マウントポイント | 役割 | 分離する主な理由 |
|---|---|---|
/(ルート) | ファイルシステム階層全体の頂点。最低限、システムが起動するために必要 | - |
/boot | カーネル・initramfs・ブートローダの設定ファイルを格納 | ハードウェア・ファームウェアの制約(後述)に適合させるため、独立させることが多い |
/home | 各ユーザーのホームディレクトリ | ユーザーデータの増加がシステム領域を圧迫しないようにする。OS再インストール時にも残しやすい |
/var | ログ・キャッシュ・スプールなど、頻繁に書き換わる可変データ | ログの肥大化がルートファイルシステムを圧迫し、システム全体が動作不能になる事態を防ぐ |
/bootパーティションとハードウェアの制約
/bootを独立したパーティションにする最大の理由は、ブートローダやファームウェアが、ファイルシステム全体を理解できるとは限らないためです。ファームウェアやブートローダが確実に読み込める、単純な構成にしておく必要があります。
- BIOS環境:古いBIOSやブートローダには、起動に必要な領域の位置に制約があるものがあります。そのような環境では、ディスクの先頭に近い位置に
/bootを配置することが推奨される場合があります。GRUB 2を使うBIOS環境に共通する必須要件ではありません。 - UEFI環境:
/bootとは別に、EFIシステムパーティション(ESP)と呼ばれる専用のパーティションが必要です。ESPはFAT32(環境によってはFAT16)でフォーマットされ、通常200〜500MiB程度の大きさで作成されます。ESPは慣習的に/boot/efiにマウントされます出典:Red Hat Enterprise Linuxのインストールガイド。UEFI環境ではESPが必須で、FAT32形式・200〜500MiB程度が一般的な目安として案内されています。[1]。
スワップ領域の設計
スワップ領域は、物理メモリ(RAM)が不足した際に、メモリ上の内容の一部を退避させておくための領域です。専用のパーティションとして確保する方法と、スワップファイルとして確保する方法があります。
適切なスワップサイズは搭載RAM量やハイバネーション(休止状態)の要否によって異なりますが、Red Hat Enterprise Linuxの公式ドキュメントでは、目安として次のような表が示されています。
| 搭載RAM量 | 推奨スワップサイズ(通常) | 推奨スワップサイズ(ハイバネーションを使う場合) |
|---|---|---|
| 2GiB未満 | RAMの2倍 | RAMの3倍 |
| 2GiB〜8GiB | RAMと同量 | RAMの2倍 |
| 8GiB〜64GiB | 4GiB以上 | RAMの1.5倍 |
| 64GiB超 | ワークロードに応じて(4GiB以上) | 一般的には非推奨 |
この表はあくまで目安であり、実際に必要なスワップサイズはメモリの搭載量そのものよりも、システムのメモリの使われ方(ワークロード)に強く依存する点に注意が必要です出典:Red Hat Enterprise Linux 9公式ドキュメント「Getting started with swap」。少なすぎるスワップは、メモリ不足時のシステムの不安定化や起動不能につながる可能性があると案内されています。[2]。
LVM(Logical Volume Manager)の基礎
LVMは、物理的なパーティションの制約にとらわれずに、柔軟にディスク領域を管理するための仕組みです。従来の固定的なパーティション分割と異なり、後から容量を拡張できる点が大きな特徴です。縮小は、ファイルシステムが縮小をサポートしている場合に、先にファイルシステムを縮小してから行います。
| 概念 | 役割 | 対応する作成コマンド |
|---|---|---|
| PV(Physical Volume、物理ボリューム) | LVMが利用する物理的な記憶領域の単位(パーティションやディスク全体) | pvcreate |
| VG(Volume Group、ボリュームグループ) | 複数のPVをまとめた、1つの大きな領域のプール | vgcreate |
| LV(Logical Volume、論理ボリューム) | VGから切り出された、実際にファイルシステムを作成する対象となる仮想的な区画 | lvcreate |
pvcreate /dev/sdb1 /dev/sdc1 # 2つのパーティションをPVとして初期化する
vgcreate vg_data /dev/sdb1 /dev/sdc1 # PVをまとめてVGを作成する
lvcreate -L 50G -n lv_home vg_data # VGから50GiBを切り出してLVを作成するLVMを使う最大の利点は、複数の物理ディスクにまたがる領域を1つのVGとして扱えることと、LVの容量を拡張できることです。ディスク容量が不足した場合、新しいディスクをPVとしてVGに追加し、LVを拡張することで対応できます。ファイルシステムの使用可能容量も増やすには、LVの拡張後にファイルシステムも拡張します。運用を止めずに拡張できるかどうかは、使用するファイルシステムがオンライン拡張をサポートしているかに依存します(具体的な拡張コマンドの操作は、出題範囲では「基本的な機能の理解」にとどまるため、本記事では概念の紹介までとします)。