AlmaLinux 9 総合ガイド 第6章

第6章: ファイルシステムとストレージ管理


6.1 この章で解説する主要な技術・概念

Linuxシステムにおけるファイルシステムストレージ管理は、サーバーの安定稼働を支える根幹技術です。本章では、AlmaLinux 9でのディスクパーティショニングやファイルシステムの作成・マウント、LVM(Logical Volume Manager)やRAIDの活用などを深堀りして解説し、柔軟かつ堅牢なストレージ環境を構築するためのノウハウを学びます。

  1. ディスクパーティショニングの詳細 (GPT, MBR, parted, fdisk など)
  2. ファイルシステム (ext4, XFS, Btrfs) の特徴と選択基準
  3. fstab設定と自動マウント
  4. LVM (Logical Volume Manager) の高度な活用
  • ボリュームの拡張・縮小
  • スナップショット機能
  • 高可用性との連携
  1. ソフトウェアRAID (mdadm) 概要と運用上のポイント
  2. ストレージ監視とメンテナンス (df, du, iostat, smartctl など)

6.2 ディスクパーティショニングの詳細

6.2.1 GPTとMBRの違い

  • MBR (Master Boot Record)
  • パーティションテーブルがディスクの先頭セクタにあり、最大2TBの制限と4つのプライマリパーティション制限がある。
  • 古いBIOSとの互換性が高いが、大容量ディスクでは非推奨。
  • GPT (GUID Partition Table)
  • 2TB以上の大容量ディスクを扱える、パーティション数の制限もほぼない。
  • UEFI環境を前提とすることが多く、MBRに比べて最新の標準。

AlmaLinux 9を新しいハードウェアで運用する場合は、基本的にGPTを選択すれば問題ないでしょう。

6.2.2 partedとfdisk

  • fdisk
  • MBRパーティションの操作が主用途。GPTにも一部対応しているが、ディスクサイズによってはgdiskのほうが使いやすい。
  • コマンド例: sudo fdisk /dev/sda # m: ヘルプ, p: テーブル表示, n: 新規パーティション, d: 削除, w: 書き込み
  • parted
  • GPTを含む大容量ディスクでの操作に適したユーティリティ。対話モードとコマンドラインモードがある。
  • コマンド例:
    bash sudo parted /dev/sda (parted) mklabel gpt (parted) mkpart primary xfs 1MiB 50GiB (parted) print (parted) quit

partedの注意点

  • partedはMiB、GiBなどの単位指定ができるため、ディスクセクタ境界(アライメント)を意識した作成が行いやすい。
  • resizepart コマンドで稼働中のパーティションサイズを変更できる場合もあるが、データのバックアップを取ったうえで慎重に実施すること。

6.3 ファイルシステムの選択と作成

6.3.1 ext4, XFS, Btrfsの特徴

  1. ext4
  • ext3の後継であり、堅牢性とバランスの良さが特長。
  • コミュニティやドキュメントが豊富でトラブルシューティングもしやすい。
  1. XFS
  • RHEL系ディストリビューションで推奨される、大容量ディスク向けの高パフォーマンスなファイルシステム。
  • オンラインでの拡張(xfs_growfs)が容易。
  • ただし縮小はサポートされていない。
  1. Btrfs
  • スナップショット機能やRAID機能が内蔵された次世代ファイルシステム。
  • RHEL系ではまだ実験的扱いが続いている部分もあり、本番環境での利用はやや慎重な判断が求められる。

6.3.2 mkfsコマンドによるファイルシステム作成

# ext4の例
sudo mkfs.ext4 /dev/sdb1

# XFSの例
sudo mkfs.xfs /dev/sdb1

# ラベルを付与する例(ext4)
sudo mkfs.ext4 -L DATA_PART /dev/sdb1
  • -L オプションでファイルシステムラベルを付けられ、mount 時や/etc/fstab でUUIDやラベル指定が可能。

6.3.3 UUIDの確認

sudo blkid /dev/sdb1
  • 出力例:
  /dev/sdb1: UUID="abcd-1234" TYPE="xfs" PARTLABEL="..." ...
  • /etc/fstabUUID=abcd-1234 の形式でマウントすることで、デバイス名が変動しても確実にマウントできる。

6.4 fstab設定と自動マウント

6.4.1 /etc/fstab の書式

<デバイス> <マウントポイント> <ファイルシステム> <オプション> <dump> <pass>

例:

UUID=abcd-1234 /data xfs defaults 0 2
  • defaults: rw, suid, dev, exec, auto, nouser, async などの共通オプション
  • dump: バックアップ(dump)の使用フラグ (0か1)
  • pass: fsckの検査順序 (ルートファイルシステム=1、その他=2、検査しない=0)

6.4.2 nofailオプションとトラブルシューティング

  • nofail: マウント対象デバイスが存在しない場合でも起動エラーにしない。
  • リムーバブルメディアやオプションディスクに便利。
  UUID=abcd-1234 /mnt/data xfs defaults,nofail 0 2
  • x-systemd.automount: systemdの自動マウント機能を利用する手もあるが、通常はdefaultsで十分。

6.4.3 マウント検証とエラー対応

  • sudo mount -a : /etc/fstab に記載されたすべてのエントリを一度にマウント(動作チェックに利用)
  • sudo umount /data : アンマウント
  • 起動時にマウントエラーが起きるとレスキューモード(systemd)に入ることがある。UUIDの誤記やディスク配線ミスに注意。

6.5 LVM (Logical Volume Manager) の高度な活用

6.5.1 LVMの構成要素

  1. PV (Physical Volume)
  • パーティションや物理ディスクを初期化してLVM管理下に置く。
   sudo pvcreate /dev/sdb1
  1. VG (Volume Group)
  • PVをまとめた論理プール。
   sudo vgcreate vgdata /dev/sdb1
  1. LV (Logical Volume)
  • VGから必要容量を割り当てて作成する論理ディスク。
   sudo lvcreate -L 50G -n lvdata vgdata

6.5.2 ボリューム拡張と縮小

拡張

  • XFSの場合(縮小不可、拡張のみ)
  1. lvextend -L +10G /dev/vgdata/lvdata で10GB追加
  2. xfs_growfs /mountpointxfs_growfs /dev/vgdata/lvdata でファイルシステム拡張
  • ext4の場合
  1. lvextend -L +10G /dev/vgdata/lvdata
  2. resize2fs /dev/vgdata/lvdata

縮小(ext4のみ)

  1. 対象LVをアンマウント
  2. e2fsck -f /dev/vgdata/lvdata (ファイルシステムチェック)
  3. resize2fs /dev/vgdata/lvdata 40G などで縮小
  4. lvreduce -L 40G /dev/vgdata/lvdata
  5. 再度マウント

注意: 縮小時はデータ損失リスクが高いためバックアップ必須。

6.5.3 LVMスナップショット

  • スナップショットLVを作成すると、ある時点のLV状態を保持しながら、その後の変更差分を別領域に保存する。
  • バックアップ取得やテスト実験に便利だが、容量不足でスナップショットが破損しないよう管理が必要。
sudo lvcreate -L 10G -s -n lvdata_snap /dev/vgdata/lvdata
# -s はスナップショット指定

6.6 ソフトウェアRAID (mdadm) 概要

6.6.1 mdadmによるRAID構成

mdadm (Multiple Devices Admin)
LinuxカーネルのソフトウェアRAID機能を操作するユーティリティ。

例: RAID1 構築ステップ

  1. パーティショニング(同サイズ程度のパーティションを2台のディスクに作成)
  2. mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
  3. /dev/md0 にファイルシステム作成 (mkfs.xfs /dev/md0 など)
  4. /etc/mdadm.conf にアレイ情報を保存 (mdadm --detail --scan >> /etc/mdadm.conf)
  5. /etc/fstab/dev/md0を登録

6.6.2 RAIDレベルごとの特性

  • RAID0: ストライピング。速度向上、冗長性なし。
  • RAID1: ミラーリング。読み込み速度向上、書き込み速度は通常、耐障害性はディスク1台障害まで。
  • RAID5: パリティを含むストライピング。容量効率と冗長性のバランスが良い。最低3台のディスク。
  • RAID6: ダブルパリティ。2台同時障害にも耐えられる。最低4台のディスク。
  • RAID10: ストライピング+ミラーリングの組み合わせ。最低4台で高パフォーマンスかつ冗長性高い。

運用上の注意

  • 故障ディスクの交換時はmdadm --remove → 新ディスクをmdadm --add で再同期
  • リビルド中の負荷を考慮し、本番サービスへの影響を最小化するための計画が重要

6.7 ストレージ監視とメンテナンス

6.7.1 ディスク使用量コマンド (df, du)

  • df -h : 各ファイルシステムの使用率を人間にわかりやすい形式で表示
  • du -sh /var/log : ディレクトリ配下の合計サイズ。-hで単位を人間可読に。

6.7.2 iostatによるI/O負荷確認

sudo dnf install sysstat
iostat -xz 2
  • -x (extended stats) と -z (0を表示しない) を組み合わせ、高度なI/O統計を2秒ごとに表示
  • await(I/Oリクエストあたりの平均待ち時間)が高い場合、ディスクI/Oがボトルネックになっている可能性がある

6.7.3 smartctlによるディスクヘルスチェック

smartmontools (smartctl)
ディスクの自己診断機能(S.M.A.R.T.)を活用し、故障の予兆や不良セクタを検出。

sudo dnf install smartmontools
smartctl -a /dev/sda
  • -t short-t long で短期/長期テストを実行し、結果を -a で表示
  • 早期の異常検知ができれば、ディスク交換など事前対策が可能

6.8 学習のまとめ

  1. ディスクパーティショニング: GPTとMBRの違いを理解し、fdiskpartedで慎重に操作する。大容量ディスクではGPTを優先的に利用。
  2. ファイルシステム選択: ext4, XFS, Btrfsなどの特徴を把握。XFSは大容量やパフォーマンスに強いが縮小不可、ext4は安定性と柔軟性のバランスが良い。
  3. fstab設定: UUID指定やラベル指定、オプション(defaults, nofail, 0 2など)を適切に設定し、起動時のマウントを自動化。
  4. LVM: PV, VG, LVの概念を理解し、lvextendlvreduceで動的に容量を拡張・縮小。スナップショット機能も便利だが、容量不足に注意。
  5. ソフトウェアRAID: mdadmを用いてRAID1/5/6/10などを構築し、ディスク障害への耐性を高める。再同期中の負荷対策やリビルド手順が重要。
  6. ストレージ監視: df, du, iostat, smartctl などを駆使し、ディスク使用量・I/O負荷・健康状態を定期的にチェックしてトラブルを未然に防ぐ。

次章へのつながり

次の章(第7章)では、AlmaLinux 9をネットワークに接続して運用するためのネットワーク設定と管理について深堀りしていきます。IPアドレスやDNS設定、firewalldによるアクセス制御、VPN構築など、サーバーのネットワーク管理に不可欠な知識を身につけましょう。