「ディスク容量残り1%」のアラートが鳴り響く深夜2時。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回までは、LVM環境を新規に構築する手順を学んできました。
しかし、インフラエンジニアの本当の仕事はここからです。
サービス運用中に突如として訪れる「ディスク容量不足(Disk Full)」の恐怖。
あなたは、ユーザーがアクセスし続けている稼働中のサーバーを止めることなく、この危機を救わなければなりません。
先生、緊急事態です!
先日構築した /data ディレクトリですが、予想以上にデータが増えて、もう残りがありません!
今すぐ増やさないとサービスが停止しますが、再起動している時間もありません!
LVMなら、魔法みたいに一瞬で増やせるんですよね!?
慌てないで、コウ君。
LVMを使っているなら、それは「障害」ではなくただの「作業」よ。
コマンドを2回叩くだけで、ユーザーには一切気づかれずに容量を倍増できるわ。
今回は、LVM最大のメリットである「オンライン拡張(Online Resize)」をマスターしましょう!
本記事では、LVM運用における最重要スキルである lvextend コマンドの使い方と、ファイルシステム(ext4/XFS)ごとの拡張処理の違い、そしてプロが使う「時短テクニック」までを完全網羅します。
📚 LVM完全マスター(全8回)目次
現在地:【第5回】【核心】稼働中にディスク容量を増やす(lvextend)
- 【第1回】LVMの仕組みとメリットを完全図解
- 【第2回】物理ボリューム(PV)の作成とディスクの追加
- 【第3回】ボリュームグループ(VG)の作成と管理
- 【第4回】論理ボリューム(LV)の切り出しとフォーマット
- 【第5回】【核心】稼働中にディスク容量を増やす(lvextend)
- 【第6回】ディスク容量の縮小と物理ディスクの交換
- 【第7回】スナップショット機能で一瞬でバックアップを取る
- 【第8回】LVMトラブルシューティングとRAID構成
第1章:なぜ「止める必要がない」のか?仕組みを知る
作業に入る前に、なぜLVMは稼働中に容量を増やせるのか、その仕組みをイメージしておきましょう。
2段階の拡張プロセス
私たちが「ディスク容量を増やす」と言うとき、実際にはコンピュータ内部で2つの異なる領域を広げる必要があります。
- 論理ボリューム(LV)の拡張:
これは「部屋の壁」を動かす作業です。VG(プール)から空きブロック(PE)をもらってきて、LVという「枠」を広げます。
コマンド:lvextend - ファイルシステムの拡張:
これは「床材」を敷き詰める作業です。枠(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)を追加して拡張する。
- ディスク追加: サーバーにHDDを接続(
/dev/sdcとする)。 - PV作成:
sudo pvcreate /dev/sdc
(※パーティションを切る場合はfdisk→pvcreate /dev/sdc1) - VG拡張: 既存のVGに新ディスクを投入。
sudo vgextend vg_storage /dev/sdc - 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」で環境構築
インフラ技術を仕事に
「ITエンジニア転職」


コメント