【LVM完全マスター第5回】サーバーを止めるな!稼働中にディスク容量を増やす「オンライン拡張」完全ガイド

「ディスク容量残り1%」のアラートが鳴り響く深夜2時。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回までは、LVM環境を新規に構築する手順を学んできました。

しかし、インフラエンジニアの本当の仕事はここからです。
サービス運用中に突如として訪れる「ディスク容量不足(Disk Full)」の恐怖。
あなたは、ユーザーがアクセスし続けている稼働中のサーバーを止めることなく、この危機を救わなければなりません。

コウ君

先生、緊急事態です!
先日構築した /data ディレクトリですが、予想以上にデータが増えて、もう残りがありません!
今すぐ増やさないとサービスが停止しますが、再起動している時間もありません!
LVMなら、魔法みたいに一瞬で増やせるんですよね!?

リナックス先生

慌てないで、コウ君。
LVMを使っているなら、それは「障害」ではなくただの「作業」よ。
コマンドを2回叩くだけで、ユーザーには一切気づかれずに容量を倍増できるわ。
今回は、LVM最大のメリットである「オンライン拡張(Online Resize)」をマスターしましょう!

本記事では、LVM運用における最重要スキルである lvextend コマンドの使い方と、ファイルシステム(ext4/XFS)ごとの拡張処理の違い、そしてプロが使う「時短テクニック」までを完全網羅します。

📚 LVM完全マスター(全8回)目次

現在地:【第5回】【核心】稼働中にディスク容量を増やす(lvextend)


第1章:なぜ「止める必要がない」のか?仕組みを知る

作業に入る前に、なぜLVMは稼働中に容量を増やせるのか、その仕組みをイメージしておきましょう。

2段階の拡張プロセス

私たちが「ディスク容量を増やす」と言うとき、実際にはコンピュータ内部で2つの異なる領域を広げる必要があります。

  1. 論理ボリューム(LV)の拡張:
    これは「部屋の壁」を動かす作業です。VG(プール)から空きブロック(PE)をもらってきて、LVという「枠」を広げます。
    コマンド:lvextend
  2. ファイルシステムの拡張:
    これは「床材」を敷き詰める作業です。枠(LV)が広がっても、OSが管理するファイルシステム(ext4やXFS)は元のサイズのままです。広がった部分にもデータを書き込めるように、管理領域を広げる必要があります。
    コマンド:resize2fs (ext4) または xfs_growfs (XFS)

この2つの作業は、どちらもOSが稼働したまま(マウントしたまま)実行可能です。
したがって、Webサーバーやデータベースを停止する必要は一切ありません。


第2章:現状確認と準備

まずは、現在の状況を正確に把握しましょう。

1. ディスク使用量の確認(df)

df -h /data

出力例:

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_storage-lv_data  10G  9.5G  500M  95% /data

10GBの領域がパンパンになっていますね。

2. VGの空き容量確認(vgs)

LVを広げるためには、その親であるVG(ボリュームグループ)に「余り」がなければなりません。

sudo vgs

出力例:

  VG         #PV #LV #SN Attr   VSize  VFree 
  vg_storage   1   1   0 wz--n- 69.97g 59.97g

VFree(空き容量)を見てください。
ここでは約60GBの空きがあります。
もしここが 0 だった場合は、第2回・第3回の記事を参考に、物理ディスクを追加して vgextend でプールを広げてから戻ってきてください。


第3章:LV(枠)を広げる「lvextend」

それでは、まずは「枠」を広げます。
コマンドは lvextend です。

サイズ指定の「+」の有無に注意!

サイズ指定オプション -L には、2通りの書き方があります。

書き方 意味 例(現在10GBの場合)
-L +10G 現在のサイズにプラスする 10GB + 10GB = 20GB になる
-L 20G 指定したサイズにする(絶対値) 20GB になる

「10GB追加したい」なら +10G、「合計20GBにしたい」なら 20G です。
間違えて -L 10G(プラスなし)と打つと、「現在10GBを10GBにする=何もしない」ことになるので注意しましょう。

VGの残りを全部使い切る場合(-l +100%FREE)

これが最もよく使う便利な指定方法です。
小文字の -l(エル)を使い、+100%FREE と指定します。

sudo lvextend -l +100%FREE /dev/vg_storage/lv_data

実行結果:

  Size of logical volume vg_storage/lv_data changed from 10.00 GiB to 69.97 GiB.
  Logical volume vg_storage/lv_data successfully resized.

これでLVのサイズが拡張されました。

⚠️ 注意:まだ終わっていません!
この状態で df -h を叩いてみてください。
容量は増えていないはずです。
なぜなら、広げたのは「LVMの枠」だけで、その中の「ファイルシステム」はまだ古いサイズのままだからです。
多くの初心者がここで「増えない!」とパニックになります。


第4章:ファイルシステム(床)を広げる

次に、ファイルシステムの種類に合わせて拡張コマンドを実行します。
前回(第4回)、フォーマットした時に選んだ種類(ext4 または XFS)によってコマンドが異なります。

確認コマンド:df -T /data

ケースA:ext4の場合「resize2fs」

ext4の場合は resize2fs コマンドを使います。
引数には「デバイス名(LVのパス)」を指定します。

sudo resize2fs /dev/vg_storage/lv_data

実行結果:

resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/vg_storage/lv_data is mounted on /data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 9
The filesystem on /dev/vg_storage/lv_data is now 18342912 (4k) blocks long.

これで完了です。

ケースB:XFSの場合「xfs_growfs」

XFSの場合は xfs_growfs コマンドを使います。
ここが最大の注意点ですが、引数にはデバイス名ではなく「マウントポイント(ディレクトリ名)」を指定するのが一般的です。

sudo xfs_growfs /data

実行結果:

meta-data=/dev/mapper/vg_storage-lv_data isize=512    agcount=4, agsize=655360 blks
...
data blocks changed from 2621440 to 18342912

これで完了です。

確認

もう一度 df -h /data を実行してみましょう。

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_storage-lv_data  70G  9.5G  60G   14% /data

サイズが70GBになり、使用率が一気に下がりましたね。
サーバーを止めることなく、ミッションコンプリートです!


第5章:【プロの技】一撃で終わらせる「-r」オプション

いちいち「lvextend」して、その後に「resize2fs」するのは面倒だと思いませんか?
実は、lvextend コマンドには、ファイルシステムの拡張まで自動でやってくれる神オプションがあります。

それが -r (–resizefs) です。

最強の拡張コマンド

sudo lvextend -l +100%FREE -r /dev/vg_storage/lv_data

これを実行すると、LVMが自動的にファイルシステムの種類(ext4かXFSか)を判別し、裏で適切なリサイズコマンド(resize2fsなど)を実行してくれます。
実務では、ミスを防ぐためにもこの -r オプション付きコマンドを使うのが常識です。


第6章:VGの空きがない場合の「フルコース」手順

もし vgs で確認してVGに空きがなかった場合はどうすればいいでしょうか?
これまでの連載の総決算として、「HDD追加から拡張完了まで」の一連の流れをまとめます。

シナリオ: /data が一杯だが、VGにも空きがない。新しいHDD(20GB)を追加して拡張する。

  1. ディスク追加: サーバーにHDDを接続(/dev/sdc とする)。
  2. PV作成:
    sudo pvcreate /dev/sdc
    (※パーティションを切る場合は fdiskpvcreate /dev/sdc1
  3. VG拡張: 既存のVGに新ディスクを投入。
    sudo vgextend vg_storage /dev/sdc
  4. LV & FS拡張: 増えたVG容量を使って一気に拡張。
    sudo lvextend -l +100%FREE -r /dev/vg_storage/lv_data

この4ステップこそが、LVM運用の真骨頂です。
慣れれば1分もかかりません。


第7章:トラブルシューティング Q&A

Q1. “filesystem does not support resize” エラー

A. ファイルシステムの種類が間違っているか、ツールが入っていません。
exFATやNTFSなど、Linux標準以外のファイルシステムはオンライン拡張に対応していない場合があります。
また、XFSなのに resize2fs を実行しようとするとエラーになります。

Q2. XFSで “xfs_growfs: /data is not a mounted XFS filesystem” エラー

A. XFSはマウントしていないと拡張できません。
ext4はアンマウント状態でもリサイズできますが、XFSは必ずマウント状態で、かつ引数に「マウントポイント」を指定する必要があります。

Q3. 2TB以上の拡張ができない(MBRの壁)

A. ディスクのパーティションテーブルが「MBR」になっていませんか?
古いMBR形式(fdiskで作成)は、最大2TBまでしか扱えません。
2TBを超えるディスクを使う場合は、parted コマンドなどを使って GPT形式 で初期化する必要があります。
(これはLVMの問題というより、ディスク管理の基礎知識です)


まとめ:オンライン拡張こそLVMの華

お疲れ様でした!
今回はLVMを導入する最大のメリット、「無停止での容量拡張」をマスターしました。

今回の重要ポイント:

  • 拡張は「LV拡張(lvextend)」と「FS拡張(resize2fs/xfs_growfs)」の2ステップ。
  • lvextend -r オプションを使えば、その2ステップを一撃で完了できる。
  • -l +100%FREE は残量を使い切る便利な呪文。
  • サーバーを止める必要は一切ない。

これであなたは、「容量が足りない!」という悲鳴を聞いても、コーヒーを飲みながら余裕で対応できるエンジニアになれました。

次回、第6回は逆のパターン。
「ディスク容量の縮小と物理ディスクの交換」です。
「増やす」のは簡単ですが、「減らす」のは非常に危険で制限が多い作業です。
特にXFSユーザーには絶望的な事実(縮小不可)もありますが、その回避策も含めて解説します。

本当のプロになるための「撤退戦」の技術、お楽しみに!

▼ エンジニアとしてのキャリアを加速させる ▼

LVMを実践練習
「VPS」で環境構築

おすすめVPSを見る

インフラ技術を仕事に
「ITエンジニア転職」

転職エージェントを見る

コメント