【LinuC 201試験】2.02 ファイルシステムの設定とマウントのまとめ④|Linux初学者向け解説【LVMの設定と管理】

※本ページはプロモーションが含まれています

こんにちは!いつもブログを読んでいただき、ありがとうございます。

前回の記事では「2.02.2 ファイルシステムの管理②」として、XFS・Btrfs・SMART を解説しました。まだご覧になっていない方は先にそちらをどうぞ!

👉 【前々回記事】 2.02.2 ファイルシステムの管理②

👉 【前回記事】  2.02.2 ファイルシステムの管理③

今回は主題2.02の最終テーマ、「2.02.3 論理ボリュームマネージャ(LVM)の設定と管理」 です。

「LVMって名前は聞いたことあるけど、仕組みがよく分からない…」という方、多いのではないでしょうか。LVMを使うと、ディスク領域をまるで「パズルのピース」のように柔軟に組み合わせて管理できるようになります。実務でも超頻出のスキルなので、しっかりマスターしていきましょう!


📋 試験の重要情報と学習のゴール

項目内容
主題番号2.02.3 論理ボリュームマネージャの設定と管理
重要度3
主なコマンドpvcreate, pvdisplay, pvremove, vgcreate, vgdisplay, vgextend, lvcreate, lvdisplay, lvextend, lvreduce
設定ファイル/etc/lvm/lvm.conf

📌 この記事のゴール

  • PV・VG・LVの3層構造を説明できる
  • LVMの基本操作(作成・確認・削除・拡張)ができる
  • スナップショットの作成・削除ができる
  • デバイスマッパーのパス形式を理解できる
  • 物理エクステント(PE)の仕組みを説明できる

1. LVMとは?まず「3層構造」を理解しよう

LVM(Logical Volume Manager)は、複数のディスクやパーティションをまとめて、柔軟にサイズ変更や管理ができる仕組みです。

LVMの3層構造

【物理ディスク】 /dev/sdb  /dev/sdc
        ↓ pvcreate(初期化)
┌──────────────────────────┐
│  PV(物理ボリューム)     │ /dev/sdb1, /dev/sdc1
└──────────────────────────┘
        ↓ vgcreate(グループ化)
┌──────────────────────────┐
│  VG(ボリュームグループ) │ vg_data(PVをまとめた大きな「器」)
└──────────────────────────┘
        ↓ lvcreate(切り出し)
┌──────────────────────────┐
│  LV(論理ボリューム)     │ /dev/vg_data/lv_home など
└──────────────────────────┘
        ↓ mkfs(フォーマット)・mount
【ファイルシステムとして利用】

ここがポイント!
LVMは PV → VG → LV の順に作成します。この順番は試験で必ず問われます!

LVMを使うメリット

  • 後からサイズを変更できる(通常のパーティションは変更が大変)
  • 複数ディスクをまとめて1つのボリュームとして使える
  • スナップショットでバックアップが簡単

2. 物理エクステント(PE)とは?

LVMを理解するうえで 物理エクステント(PE:Physical Extent) は外せないキーワードです。試験でもよく問われるので、しっかり押さえておきましょう!

PEの概念

PEとは、VG(ボリュームグループ)内でデータを管理するときの「最小単位のブロック」です。LVMはディスク領域をこのPE単位で切り出して管理しています。

VG(ボリュームグループ)の中身イメージ
┌────────────────────────────────────────────┐
│ [PE][PE][PE][PE][PE][PE][PE][PE][PE][PE]... │
│ ←── 4MB ──→ ←── 4MB ──→ ←── 4MB ──→      │
└────────────────────────────────────────────┘
       ↑ LVはPEを何個使うかで容量が決まる

試験頻出!PE のデフォルトサイズは 4MB
vgcreate でVGを作成したとき、PEサイズはデフォルトで 4MB に設定されます。
「10GBのLVを作成する」= 「4MBのPEを2,560個使う」ということです!

PEサイズの確認・指定

# vgcreate 時に PE サイズを変更する(-s オプション)
vgcreate -s 8M vg_data /dev/sdb1   # PEサイズを 8MB に設定

# VG の詳細で PE サイズを確認
vgdisplay vg_data
# → "PE Size" の行に表示される

# lvcreate で PE 数を指定する方法(-l オプション)
lvcreate -l 100 -n lv_home vg_data   # 100PE分 = 400MB(デフォルト4MBの場合)
lvcreate -l 50%VG -n lv_home vg_data # VGの50%を使う
指定方法コマンド例説明
サイズ指定lvcreate -L 10GGBやMBで直感的に指定
PE数指定lvcreate -l 2560PE数で指定(4MB×2560=10GB)
割合指定lvcreate -l 50%VGVG全体の割合で指定

💡 試験では「-L(大文字)」と「-l(小文字)」の使い分けが問われます!
-L はサイズ(10G など)、-l はPE数またはパーセント指定です。間違えやすいので注意!


3. デバイスマッパーと LV のパス形式

LVを作成すると、アクセスできるパスが 2種類 あります。試験でどちらの形式で出題されても答えられるように両方覚えておきましょう。

2種類のデバイスパス

パス形式説明
/dev/<VG名>/<LV名>/dev/vg_data/lv_homeシンボリックリンク(よく使う)
/dev/mapper/<VG名>-<LV名>/dev/mapper/vg_data-lv_homeデバイスマッパーの実体パス
# どちらも同じLVを指している
ls -l /dev/vg_data/lv_home
# → /dev/vg_data/lv_home -> /dev/mapper/vg_data-lv_home

# フォーマットもマウントも、どちらのパスでもOK
mkfs.ext4 /dev/vg_data/lv_home
mkfs.ext4 /dev/mapper/vg_data-lv_home   # 同じ意味

mount /dev/mapper/vg_data-lv_home /home  # こちらでもOK

デバイスマッパー(Device Mapper)とは?
Linuxカーネルのデバイスマッパー機能がLVMの仮想ブロックデバイスを管理しています。/dev/mapper/ 配下に実体が作られ、/dev/VG名/LV名 はそこへのシンボリックリンクです。
VG名とLV名の間が「-(ハイフン)」で結ばれるのが特徴です。

# /dev/mapper/ の内容を確認
ls /dev/mapper/
# → control  vg_data-lv_home  vg_data-lv_var  ...

# dmsetup コマンドでデバイスマッパーの一覧を確認
dmsetup ls

⚠️ 試験の引っかけポイント!
VG名やLV名にハイフンが含まれる場合(例:vg-data/lv-home)、/dev/mapper/ のパスではハイフンが二重になります。
例:/dev/mapper/vg--data-lv--home
実務でVG名・LV名を付けるときはハイフンを避けるか、ルールを統一しておくと安全です。


4. PV(物理ボリューム)の操作:pv系コマンド

PVの作成:pvcreate

# パーティションをPVとして初期化する
pvcreate /dev/sdb1
pvcreate /dev/sdc1

# 複数同時に指定もできる
pvcreate /dev/sdb1 /dev/sdc1

PVの確認:pvdisplay / pvs / pvscan

# PVの詳細情報を表示
pvdisplay

# 特定のPVだけ表示
pvdisplay /dev/sdb1

# 簡潔な一覧表示(実務でよく使う)
pvs

# システム上のPVをスキャンして表示
pvscan

PVの削除:pvremove

# PVからLVMのメタデータを削除(VGから外した後に実行)
pvremove /dev/sdb1

5. VG(ボリュームグループ)の操作:vg系コマンド

VGの作成:vgcreate

# VGを作成(VG名とPVを指定)
vgcreate vg_data /dev/sdb1

# 複数のPVをまとめてVGを作成
vgcreate vg_data /dev/sdb1 /dev/sdc1

# PEサイズを変更して作成(デフォルトは4MB)
vgcreate -s 8M vg_data /dev/sdb1

VGの確認:vgdisplay / vgs / vgscan

# VGの詳細情報を表示
vgdisplay

# 特定のVGだけ表示
vgdisplay vg_data

# 簡潔な一覧表示
vgs

# システム上のVGをスキャン
vgscan

VGにPVを追加:vgextend

# 新しいPVをVGに追加(容量を増やしたい時)
vgextend vg_data /dev/sdd1

VGからPVを削除:vgreduce

# VGからPVを削除(まず pvmove でデータを移動してから)
pvmove /dev/sdb1        # PV上のデータを他のPVへ移動
vgreduce vg_data /dev/sdb1

💡 試験に出る!
vgreduce の前に必ず pvmove でデータを他のPVに移動しておきましょう。移動せずに削除するとデータが消えます!

VGの削除:vgremove

# VGを削除(先にLVをすべて削除しておくこと)
vgremove vg_data

VGの有効化・無効化

vgchange -a y vg_data   # 有効化(-a y)
vgchange -a n vg_data   # 無効化(-a n)

6. LV(論理ボリューム)の操作:lv系コマンド

LVの作成:lvcreate

# 10GBのLVを作成
lvcreate -L 10G -n lv_home vg_data

# VGの50%を使ってLVを作成
lvcreate -l 50%VG -n lv_home vg_data
オプション説明
-L <サイズ>LVのサイズを指定(例:10G、500M)
-l <PE数 or %>PE数またはVGの割合でサイズ指定
-n <名前>LV名を指定

作成後のLVは /dev/<VG名>/<LV名> または /dev/mapper/<VG名>-<LV名> でアクセスできます。

# 作成したLVをフォーマットしてマウント
mkfs.ext4 /dev/vg_data/lv_home
mount /dev/vg_data/lv_home /home

# /dev/mapper/ 形式でも同じ操作が可能
mount /dev/mapper/vg_data-lv_home /home

👉 mkfsmount の詳しい使い方は 2.02.1 ファイルシステムの設定とマウント で解説しています。

LVの確認:lvdisplay / lvs / lvscan

# LVの詳細情報を表示
lvdisplay

# 特定のLVだけ表示
lvdisplay /dev/vg_data/lv_home

# 簡潔な一覧表示
lvs

# システム上のLVをスキャン
lvscan

LVのサイズ変更:lvextend / lvreduce / lvresize

# LVを5GB拡張する
lvextend -L +5G /dev/vg_data/lv_home

# ファイルシステムも同時に拡張(-r オプション)
lvextend -L +5G -r /dev/vg_data/lv_home

# LVを縮小する(※データ消失リスクあり!必ずバックアップを!)
lvreduce -L -2G /dev/vg_data/lv_home

# サイズを絶対値で指定して変更
lvresize -L 20G /dev/vg_data/lv_home

⚠️ 重要な注意点!
LVを拡張した後、ファイルシステム側も拡張しないと領域を使えません

  • ext4の場合:resize2fs /dev/vg_data/lv_home
  • XFSの場合:xfs_growfs /mnt/data(マウントしたまま実行可能)

-r オプションを付けると lvextend と同時にファイルシステムも拡張してくれます!

💡 resize2fsxfs_growfs の詳細は
2.02.2 ファイルシステムの管理① および もあわせてご確認ください!

LVの削除:lvremove

# LVを削除(アンマウントしてから)
umount /home
lvremove /dev/vg_data/lv_home

7. スナップショットの作成・管理

LVMのスナップショットは「ある時点でのLVの状態」を保存する機能です。バックアップの直前にスナップショットを取っておくと、一貫性のあるバックアップができます。

スナップショットの作成

# lv_home のスナップショットを 2GB の領域で作成
lvcreate -L 2G -s -n lv_home_snap /dev/vg_data/lv_home
オプション説明
-sスナップショットを作成
-n <名前>スナップショットの名前
-L <サイズ>差分データの保存領域サイズ

⚠️ 注意:スナップショットの差分領域がいっぱいになると、スナップショットが無効になります。元LVへの書き込み量を考慮して、余裕のあるサイズを指定しましょう。

スナップショットのマウント・削除

# スナップショットをマウントして内容を確認
mount /dev/vg_data/lv_home_snap /mnt/snap

# /dev/mapper/ 形式でも同様にマウント可能
mount /dev/mapper/vg_data-lv_home_snap /mnt/snap

# スナップショットを削除
lvremove /dev/vg_data/lv_home_snap

💡【PR】 LVMのコマンドは問題で確実に定着させよう!


8. LVM コマンド早見表

操作PVVGLV
作成pvcreatevgcreatelvcreate
詳細表示pvdisplayvgdisplaylvdisplay
一覧表示pvsvgslvs
スキャンpvscanvgscanlvscan
削除pvremovevgremovelvremove
拡張vgextendlvextend
縮小vgreducelvreduce
有効/無効vgchangelvchange

💡 覚え方
コマンド名は全部「pv・vg・lv + 動詞」のパターンです。createdisplayremoveextendreduce を3種類の頭文字と組み合わせて覚えましょう!


✅ まとめ:これだけは暗記して試験へ!

ポイント内容
LVMの作成順PV → VG → LV の順番!逆は不可
PEのデフォルトサイズ4MBvgcreate 時のデフォルト。-s で変更可)
-L-l の違い-L はサイズ指定、-l はPE数 or パーセント指定
LVのデバイスパス/dev/VG名/LV名/dev/mapper/VG名-LV名 の2形式
vgreduce の前にpvmove でデータを退避してから実行
LV拡張後の注意FS側も拡張する(resize2fs or xfs_growfs
-r オプションlvextend -r でLVとFSを同時拡張
スナップショットlvcreate -s で作成。差分保存領域のサイズ指定が必要
設定ファイル/etc/lvm/lvm.conf

VirtualBoxで2枚目の仮想ディスクを追加して、実際にLVMを構築してみるのが一番の近道です。pvcreatevgcreatelvcreatemkfsmount の流れを手を動かして覚えてみてください!


✅ まとめを確認したら、次はアウトプットで確実に定着させましょう!

【PR】▶ LinuC対策におすすめの教材はこちら


勉強、大変だと思いますが、焦らず一つずつ積み重ねていきましょう。
皆さんにとって、今日も素敵な1日になりますように!


参考:LPI-Japan 公式試験範囲 https://linuc.org/linuc2/range/201.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA