第6章: ファイルシステムとストレージ管理
6.1 この章で解説する主要な技術・概念
Linuxシステムにおけるファイルシステムとストレージ管理は、サーバーの安定稼働を支える根幹技術です。本章では、AlmaLinux 9でのディスクパーティショニングやファイルシステムの作成・マウント、LVM(Logical Volume Manager)やRAIDの活用などを深堀りして解説し、柔軟かつ堅牢なストレージ環境を構築するためのノウハウを学びます。
- ディスクパーティショニングの詳細 (GPT, MBR, parted, fdisk など)
- ファイルシステム (ext4, XFS, Btrfs) の特徴と選択基準
- fstab設定と自動マウント
- LVM (Logical Volume Manager) の高度な活用
- ボリュームの拡張・縮小
- スナップショット機能
- 高可用性との連携
- ソフトウェアRAID (mdadm) 概要と運用上のポイント
- ストレージ監視とメンテナンス (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の特徴
- ext4
- ext3の後継であり、堅牢性とバランスの良さが特長。
- コミュニティやドキュメントが豊富でトラブルシューティングもしやすい。
- XFS
- RHEL系ディストリビューションで推奨される、大容量ディスク向けの高パフォーマンスなファイルシステム。
- オンラインでの拡張(
xfs_growfs
)が容易。 - ただし縮小はサポートされていない。
- 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/fstab
でUUID=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の構成要素
- PV (Physical Volume)
- パーティションや物理ディスクを初期化してLVM管理下に置く。
sudo pvcreate /dev/sdb1
- VG (Volume Group)
- PVをまとめた論理プール。
sudo vgcreate vgdata /dev/sdb1
- LV (Logical Volume)
- VGから必要容量を割り当てて作成する論理ディスク。
sudo lvcreate -L 50G -n lvdata vgdata
6.5.2 ボリューム拡張と縮小
拡張
- XFSの場合(縮小不可、拡張のみ)
lvextend -L +10G /dev/vgdata/lvdata
で10GB追加xfs_growfs /mountpoint
かxfs_growfs /dev/vgdata/lvdata
でファイルシステム拡張
- ext4の場合
lvextend -L +10G /dev/vgdata/lvdata
resize2fs /dev/vgdata/lvdata
縮小(ext4のみ)
- 対象LVをアンマウント
e2fsck -f /dev/vgdata/lvdata
(ファイルシステムチェック)resize2fs /dev/vgdata/lvdata 40G
などで縮小lvreduce -L 40G /dev/vgdata/lvdata
- 再度マウント
注意: 縮小時はデータ損失リスクが高いためバックアップ必須。
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 構築ステップ
- パーティショニング(同サイズ程度のパーティションを2台のディスクに作成)
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
/dev/md0
にファイルシステム作成 (mkfs.xfs /dev/md0
など)/etc/mdadm.conf
にアレイ情報を保存 (mdadm --detail --scan >> /etc/mdadm.conf
)/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 学習のまとめ
- ディスクパーティショニング: GPTとMBRの違いを理解し、
fdisk
やparted
で慎重に操作する。大容量ディスクではGPTを優先的に利用。 - ファイルシステム選択: ext4, XFS, Btrfsなどの特徴を把握。XFSは大容量やパフォーマンスに強いが縮小不可、ext4は安定性と柔軟性のバランスが良い。
- fstab設定: UUID指定やラベル指定、オプション(defaults, nofail, 0 2など)を適切に設定し、起動時のマウントを自動化。
- LVM: PV, VG, LVの概念を理解し、
lvextend
やlvreduce
で動的に容量を拡張・縮小。スナップショット機能も便利だが、容量不足に注意。 - ソフトウェアRAID: mdadmを用いてRAID1/5/6/10などを構築し、ディスク障害への耐性を高める。再同期中の負荷対策やリビルド手順が重要。
- ストレージ監視:
df
,du
,iostat
,smartctl
などを駆使し、ディスク使用量・I/O負荷・健康状態を定期的にチェックしてトラブルを未然に防ぐ。
次章へのつながり
次の章(第7章)では、AlmaLinux 9をネットワークに接続して運用するためのネットワーク設定と管理について深堀りしていきます。IPアドレスやDNS設定、firewalldによるアクセス制御、VPN構築など、サーバーのネットワーク管理に不可欠な知識を身につけましょう。