こんな状況、深夜の障害対応で何度も経験しました。
この記事では、LVM(Logical Volume Manager)の
lvextend コマンドを使って、サーバーを停止せずに論理ボリュームを拡張する手順を解説します。xfs_growfs と resize2fs の使い分け、--resizefs オプションでの一括拡張、ボリュームグループ(VG)に空き容量がない場合の対処まで、20年以上のサーバー運用で培ったノウハウを含めて網羅します。
動作確認環境:RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS。
この記事のポイント
・lvextend -L +10G で論理ボリュームをオンライン拡張できる
・XFSは xfs_growfs、ext4は resize2fs でファイルシステムを追従
・--resizefs オプションで lvextend と同時にFS拡張も可能
・VGに空きがない場合は pvcreate と vgextend で物理ボリュームを追加
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜLVMが現場で選ばれるのか?
LVMはRHEL系ディストリビューションのデフォルトインストールで採用されている、論理的なディスク管理の仕組みです。物理ディスク(PV:Physical Volume)を束ねてボリュームグループ(VG:Volume Group)を作り、その中から論理ボリューム(LV:Logical Volume)を切り出して使います。
最大のメリットは「サーバーを止めずに容量を拡張できる」こと。クラウド時代の運用ではEBSボリュームのオンラインリサイズと組み合わせて使うケースが多く、知らないと現場で詰みます。
dmidecode でハードウェア情報を取得しておくと、物理ディスクとLVMの構成を整理しやすくなります。
lvextendの基本的な使い方
1. 現在のLVM構成を確認する
まずはlsblk と vgs、lvs で現状を把握します。何も見ずに lvextend を叩くのは事故のもとです。# ブロックデバイスとマウントポイントの確認 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 50G 0 disk tqsda1 8:1 0 1G 0 part /boot mqsda2 8:2 0 49G 0 part tqrl-root 253:0 0 30G 0 lvm / mqrl-home 253:1 0 10G 0 lvm /home # ボリュームグループの空き容量 $ sudo vgs VG #PV #LV #SN Attr VSize VFree rl 1 2 0 wz--n- <49.00g 9.00g # 論理ボリュームの一覧 $ sudo lvs LV VG Attr LSize Pool Origin Data% home rl -wi-ao---- 10.00g root rl -wi-ao---- 30.00g
2. lvextendでサイズを増やす
論理ボリュームを5GB拡張する例です。# +5G で5GB追加(相対指定) $ sudo lvextend -L +5G /dev/rl/home Size of logical volume rl/home changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents). Logical volume rl/home successfully resized. # または絶対サイズで指定 $ sudo lvextend -L 15G /dev/rl/home # VGの空きを全て使い切る $ sudo lvextend -l +100%FREE /dev/rl/home
プラスを付け忘れると意図せず縮小がかかってデータが破損するリスクがあるので、相対指定では必ず + を付ける癖をつけてください。
3. ファイルシステムを追従させる
ここが落とし穴。lvextend だけではdf -h の表示は変わりません。ファイルシステムも拡張する必要があります。# XFSの場合(RHEL 7以降のデフォルト) $ sudo xfs_growfs /home meta-data=/dev/mapper/rl-home isize=512 agcount=4, agsize=655360 blks data = bsize=4096 blocks=2621440, imaxpct=25 ... data blocks changed from 2621440 to 3932160 # ext4の場合 $ sudo resize2fs /dev/rl/home resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/rl/home is mounted on /home; on-line resizing required The filesystem on /dev/rl/home is now 3932160 (4k) blocks long. # 拡張後の確認 $ df -h /home Filesystem Size Used Avail Use% Mounted on /dev/mapper/rl-home 15G 2.1G 13G 14% /home
xfs_growfs に「マウントポイント」を渡し、ext4は resize2fs に「デバイスパス」を渡す点が違います。Linux 基本コマンドの解説でディレクトリ構造を整理しておくと、どのマウントポイントを拡張すべきか迷いません。
応用・実務Tips
--resizefs で lvextend とFS拡張を同時実行
ここまで2ステップで説明しましたが、現場では--resizefs(または -r)で1コマンドにまとめるのが定石です。# lvextend と xfs_growfs/resize2fs を同時実行 $ sudo lvextend -L +5G -r /dev/rl/home # VGの空き全部を使う+FS拡張 $ sudo lvextend -l +100%FREE -r /dev/rl/root
VGに空きがない時:物理ボリュームを追加
クラウドのEBSやVMware環境でディスクを追加した場合、新しいデバイス(例: /dev/sdb)を物理ボリューム化してVGに組み込みます。# 新しいディスクを物理ボリュームとして初期化 $ sudo pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created. # 既存のVGに追加 $ sudo vgextend rl /dev/sdb Volume group "rl" successfully extended # VG容量が増えたことを確認 $ sudo vgs VG #PV #LV #SN Attr VSize VFree rl 2 2 0 wz--n- <99.00g 50.00g # あとは lvextend で拡張 $ sudo lvextend -l +100%FREE -r /dev/rl/home
growpart /dev/sda 2 でパーティションサイズを追従させ、pvresize /dev/sda2 でPVのサイズを更新する手順が必要です。これを忘れると、ディスクは増えたのにVGの空きが増えない、という現象に悩まされます。事前にスナップショットで保険をかける
本番サーバーで初めて lvextend を実行するときは、念のためスナップショットを取ってから作業すると安全です。# 1GBのスナップショット領域を確保 $ sudo lvcreate -L 1G -s -n home_snap /dev/rl/home # 問題なく完了したらスナップショット削除 $ sudo lvremove /dev/rl/home_snap
fstab 編集を伴うマウントポイント変更を併せて行う場合は、mount コマンドの使い方も確認しておくと安心です。
「Insufficient free space」が出た時の対処法
lvextend で頻発するエラーと対処を、実際のメッセージとともに整理します。エラー1: 空き容量不足
$ sudo lvextend -L +20G /dev/rl/home Insufficient free space: 5120 extents needed, but only 2304 available
vgs で VFree を確認し、不足していれば pvcreate と vgextend でディスクを足してください。エラー2: ファイルシステムが対応していない
$ sudo xfs_growfs /home xfs_growfs: /home is not a mounted XFS filesystem
mount | grep home で実際の種別を確認してから、xfs_growfs か resize2fs を選んでください。【重要】縮小(lvreduce)は本番サーバーで使わない
LVMにはlvreduce という縮小コマンドもありますが、ext4/XFSのオンライン縮小は基本的に非対応です。XFSに至っては縮小自体が一切できません。縮小が必要なケースはほぼ「データを別ボリュームに退避→LV作り直し」の手順になります。安易に lvreduce を叩くとファイルシステムが破壊されるので、本番では絶対に避けてください。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 論理ボリュームを5GB拡張する | sudo lvextend -L +5G /dev/rl/home |
| VGの空き全部を使って拡張する | sudo lvextend -l +100%FREE /dev/rl/home |
| lvextendとFS拡張を同時実行する | sudo lvextend -L +5G -r /dev/rl/home |
| XFSのファイルシステムを拡張する | sudo xfs_growfs /home |
| ext4のファイルシステムを拡張する | sudo resize2fs /dev/rl/home |
| 新しいディスクをVGに追加する | sudo pvcreate /dev/sdb && sudo vgextend rl /dev/sdb |
| EBSオンライン拡張後にPVを追従させる | sudo growpart /dev/sda 2 && sudo pvresize /dev/sda2 |
| スナップショットを作成する | sudo lvcreate -L 1G -s -n home_snap /dev/rl/home |
lsblk・vgs・lvs で現状を把握、+ を付けた相対指定、-r で同時拡張、この3つを徹底すれば深夜のディスク満杯アラートも怖くありません。
LVM拡張ができたら、次はサーバー構築の全体像を学びませんか?
lvextendでオンライン拡張ができるようになると、深夜のディスク障害対応が一気に楽になります。その力を活かして、体系的にLinuxサーバー構築を学んでみませんか。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます