はじめに (対象読者・この記事でわかること)
本記事は、CentOS 7 を本番環境や開発環境で利用しようとしているシステム管理者・エンジニアを対象としています。Linux の基本操作はできるが、ディスクのパーティション設計に自信がない、あるいは最適なレイアウトを知りたいという方に最適です。この記事を読むことで、CentOS 7 におけるパーティションの役割と種類、サーバ用途別に推奨されるパーティション構成、そして実際に parted や fdisk を用いた作業手順が具体的に理解でき、即座に自分のサーバへ適用できるようになります。過去にサーバトラブルでディスク容量が足りなくなった経験を踏まえ、失敗しがちなポイントも併せて紹介します。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。
- Linux の基本的なコマンド操作(ls、cp、mount など)
- 基本的なファイルシステム(ext4、XFS)の概念
- sudo 権限を有するユーザーでの操作経験
CentOS 7 におけるパーティション設計の基本と背景
CentOS 7 では、システムの安定稼働と保守性を高めるために、ディスクを論理的に分割して役割別にマウントポイントを設けることが推奨されています。主なパーティションは次の通りです。
| パーティション | 主な役割 | 推奨サイズ例 |
|---|---|---|
/boot |
カーネルとブートローダーの格納 | 500 MiB |
swap |
メモリ不足時のスワップ領域 | RAM 容量の 1.5 倍(最大 8 GiB) |
/ (ルート) |
基本的なシステムファイル | 15 GiB 以上 |
/var |
ログ、メールキュー、データベース等の可変データ | 使用状況に応じて 10 GiB 以上 |
/home |
ユーザーのホームディレクトリ | 必要に応じて残り全部 |
/tmp |
一時ファイル領域(セキュリティ向上のため別パーティション化推奨) | 2 GiB 以上 |
/opt |
サードパーティ製アプリケーション | 必要に応じて 5 GiB 以上 |
なぜパーティションを分割すべきか
- 障害切り分け:
/varが膨らんでも/がいっぱいになるリスクを防げる。 - 性能最適化:ログ用の
/varを別ディスクにしたり、/homeを高速 SSD にしたりできる。 - セキュリティ:
/tmpをnoexec、nodevでマウントすると、悪意あるバイナリの実行を防止できる。 - バックアップ戦略:データ領域だけを対象にした増分バックアップが容易になる。
以上を踏まえ、実際にパーティションを作成する手順を次のセクションで詳述します。
CentOS 7 での実践的なパーティション作成手順
前提条件と準備
- 作業対象のサーバは、最低でも 20 GiB 以上の未使用ディスク(例:
/dev/sda)があること。 - 重要なデータは必ずバックアップを取得し、作業はメンテナンスウィンドウ内で行う。
partedとmkfs、mountコマンドが利用可能であることを確認する(yum install -y parted)。
ステップ1:ディスクの確認と初期化
Bash# ディスク情報の取得 sudo lsblk -f # 例: /dev/sda が対象ディスク # 既存のパーティションテーブルを削除(GPT 推奨) sudo parted /dev/sda mklabel gpt
ステップ2:必須パーティションの作成
/boot(500 MiB、ext4)
Bashsudo parted -a optimal /dev/sda mkpart primary ext4 1MiB 513MiB sudo mkfs.ext4 /dev/sda1 sudo mkdir -p /mnt/boot sudo mount /dev/sda1 /mnt/boot
swap(RAM の 1.5 倍、最大 8 GiB)
Bash# 例: RAM が 4GiB の場合、6GiB を割り当て SWAP_SIZE=$(( $(free -b | awk '/Mem:/ {print $2}') * 3 / 2 )) sudo fallocate -l ${SWAP_SIZE} /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
/(ルート、20 GiB、XFS)
Bashsudo parted -a optimal /dev/sda mkpart primary xfs 513MiB 20.5GiB sudo mkfs.xfs /dev/sda2 sudo mkdir -p /mnt/root sudo mount /dev/sda2 /mnt/root
/var(可変データ、15 GiB、XFS)
Bashsudo parted -a optimal /dev/sda mkpart primary xfs 20.5GiB 35.5GiB sudo mkfs.xfs /dev/sda3 sudo mkdir -p /mnt/root/var sudo mount /dev/sda3 /mnt/root/var
/home(残り全部)
Bashsudo parted -a optimal /dev/sda mkpart primary xfs 35.5GiB 100% sudo mkfs.xfs /dev/sda4 sudo mkdir -p /mnt/root/home sudo mount /dev/sda4 /mnt/root/home
ステップ3:/etc/fstab への永続化設定
Bashcat << EOF | sudo tee -a /mnt/root/etc/fstab /dev/sda1 /boot ext4 defaults 0 2 /dev/sda2 / xfs defaults 0 1 /dev/sda3 /var xfs defaults 0 2 /dev/sda4 /home xfs defaults 0 2 /mnt/swapfile none swap sw 0 0 EOF
ステップ4:ブートローダーの再インストールと検証
Bash# chroot 環境へ移行 sudo mount --bind /dev /mnt/root/dev sudo mount --bind /proc /mnt/root/proc sudo mount --bind /sys /mnt/root/sys sudo chroot /mnt/root /bin/bash # GRUB のインストール grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg exit # chroot から抜ける
ハマった点やエラー解決
-
パーティションサイズ指定の単位ミス
partedではMiBとGiBを明示しないとデフォルトがGBになるため、サイズがずれたケースが多数報告されています。必ずMiB/GiBを付与し、lsblkで再確認してください。 -
/bootが 500 MiB 未満で失敗
CentOS のカーネルと initramfs が 500 MiB を超えることがあり、エラーNo space left on deviceが出ます。余裕を持たせて 1 GiB に拡張すると安定します。 -
swapfile の場所がルート以外
swapfileを別パーティションに置くとfstabのマウント順序が影響し、起動時にスワップが有効にならないことがあります。/etc/fstabにdefaults,pri=1を付与し、systemd-swapの有効化で対処。
解決策まとめ
- 単位は必ず明示:
MiB/GiBを付けて正確にサイズ指定。 - /boot は余裕を持つ:最低 1 GiB 推奨。
- swapfile の永続化:
fstabに適切に記載し、swapon -aで確認。
まとめ
本記事では、CentOS 7 におけるパーティション設計の基本概念と、実践的な分割手順をステップバイステップで解説しました。
- パーティションを役割別に分割し、障害切り分け・性能最適化・セキュリティ向上を実現。
- parted と mkfs を使った具体的な作成コマンド例と、/etc/fstab への永続化手順を提供。
- 実装時の落とし穴(単位ミスや /boot 容量不足、swapfile の配置)とその解決策をまとめました。
これにより、読者は自分のサーバ環境に最適なディスクレイアウトを構築でき、運用トラブルを未然に防げるようになります。次回は、LVM を活用した柔軟なボリューム管理や RAID 構成との組み合わせについて解説する予定です。
参考資料
- CentOS 7 Documentation – Partitioning
- The Linux Partitioning Handbook
- 「Linuxサーバ構築バイブル」(技術評論社, 2022)
