Sysadminを悩ませる「容量不足」という悪夢
駆け出しの頃、私はある単純なミスのせいで午前3時まで徹夜したことがあります。当時は伝統的なパーティション分割(標準パーティション)を使用しており、/varディレクトリに50GBを割り当てていました。しかし、運用開始からわずか3ヶ月でログファイルが肥大化し、ディスク使用率が99%に達して赤信号が灯り、お客様のデータベースサービス全体がダウンしてしまったのです。
復旧させるにはサーバーを停止し、Live CDを使ってパーティションのサイズを変更しなければなりませんでした。これは非常にリスクが高く、時間のかかる作業です。もしあの時、LVM (Logical Volume Manager)を使っていれば、ダウンタイムなしで数行のコマンドを入力するだけで、わずか5分で解決できていたはずです。
従来のパーティション分割は、家の中に固定されたレンガの壁を作るようなものです。リビングを広げたいと思ったら、壁を壊して作り直すしかありません。しかしLVMは違います。それは可動式の仕切りのようなもので、物理ハードディスクとOSの間の仮想化レイヤーによって、ストレージ空間のサイズを柔軟に変更できるのです。
3つのコア概念:PV、VG、LV
すぐにコマンドを打ち込まずに、まずは基本を押さえましょう。CentOS Stream 9でLVMを効果的に活用するためには、土地管理の例えを使ってこれら3つの構成要素を明確に区別する必要があります。
- Physical Volume (PV): 未加工의 物理ハードディスク(
/dev/sdbなど)です。新しく購入した個々の土地だと考えてください。 - Volume Group (VG): 複数のPVをまとめた巨大な「プール」です。すべての土地を一つの権利書にまとめるようなものです。この時点で、物理的なハードディスク間の境界はなくなります。
- Logical Volume (LV): 使用するためにVGから切り出された仮想パーティションです。これが家の中の「部屋」にあたります。必要に応じて、この部屋を広げたり狭めたりすることが可能です。
CentOS Stream 9での環境構築
CentOS Stream 9ではインストール時にLVMが自動構成されることが多いですが、新しいハードディスクで手動設定を行うことで理解が深まります。システムに20GBのハードディスク/dev/sdbが追加されたと仮定しましょう。
まずは、現在認識されているディスクの一覧を確認します:
lsblk
sdbが表示され、まだパーティションが作成されていないことが確認できれば、準備完了です。
LVM構成のステップバイステップ手順
ステップ1:Physical Volume (PV) の初期化
OSに対して、ディスク/dev/sdbをLVMシステムに参加させることを伝えます。
sudo pvcreate /dev/sdb
pvsコマンドで状態を確認します。デバイスがグループに組み込める状態になっていることがわかります。
ステップ2:Volume Group (VG) の作成
次に、ディスク/dev/sdbをvg_dataという名前の共通グループにまとめます。
sudo vgcreate vg_data /dev/sdb
ここでの利点は、将来さらに100GBが必要になった際、新しいハードディスクを購入してPVを作成し、このvg_dataに追加するだけで拡張が完了する点です。
ステップ3:Logical Volume (LV) の作成
それでは、「プール」であるvg_dataから10GBを切り出し、ウェブアプリケーション用のパーティションlv_storageを作成します。
sudo lvcreate -L 10G -n lv_storage vg_data
-Lパラメータは容量を指定し、-nは仮想パーティションの名前を指定するために使用します。
ステップ4:ファイルシステムのフォーマットと使用
CentOS 9において、XFSは安定性の面で最良の選択肢です。作成したパーティションをフォーマットしましょう:
sudo mkfs.xfs /dev/vg_data/lv_storage
最後に、システムディレクトリにマウントしてデータの保存を開始します:
sudo mkdir /mnt/data
sudo mount /dev/vg_data/lv_storage /mnt/data
再起動後にマウントが解除されないよう、/etc/fstabに設定を追加してください。これにより、起動時にシステムが常に自動でディスクをマウントするようになります。
オンライン容量拡張:最も価値のある機能
ウェブサーバーでキャンペーンを実施しており、アップロードされる画像が急増したと想像してください。容量を10GBから15GBに即座に増やす必要があります。
わずか2つのコマンドで迅速に実行可能です:
# 1. Logical Volumeを5GB拡張する
sudo lvextend -L +5G /dev/vg_data/lv_storage
# 2. XFSファイルシステムのサイズを更新する
sudo xfs_growfs /mnt/data
素晴らしいのは、このプロセス全体がウェブサイトを稼働させたまま行えることです。再起動もメンテナンスも不要です。もしEXT4形式を使用している場合は、2番目のコマンドをresize2fsに置き換えるだけです。
プロフェッショナルなLVMシステムの監視
実際の運用では、私は常にlvs(仮想パーティションの確認)、vgs(グループ内の空き容量の確認)、pvs(物理ディスクの確認)の3つのコマンドで定期的にチェックを行っています。
コマンド入力が苦手な方は、Cockpitをインストールしましょう。これはCentOS 9のデフォルトのウェブインターフェースです。「ストレージ」セクションでは、スライダーを動かすだけで非常に直感的にパーティション의 サイズを変更できます。
おわりに
LVMの使用はもはや選択肢ではなく、本番環境における必須標準です。これにより、リソース管理をよりプロアクティブかつプロフェッショナルに行うことができます。
私からのアドバイスは、最初のOSインストール段階から常にLVMを選択することです。初期設定に数分余計にかかったとしても、将来の緊急事態からあなたを救ってくれるはずです。システムのマスターを目指して頑張ってください!
