【2025年06月版】Linux の LVM 概要メモ

# はじめに

Linux の LVM の概要メモ。
めったに作業しないので、すぐに忘れるのでメモ。

# LVM の構成例

## ディスク１台でパーティション無しの例

```plantuml
@startuml
' ディスクとパーティション（1台構成）
rectangle "Disk Drive\n/dev/vda" as Disk

' 物理ボリューム
rectangle "Physical Volume\n/dev/vda" as PV1
Disk --> PV1

' ボリュームグループ
rectangle "Volume Group\nvg_main" as VG
PV1 --> VG

' 論理ボリューム
rectangle "Logical Volume\nlv_root" as LV1
rectangle "Logical Volume\nlv_home" as LV2

VG --> LV1
VG --> LV2

' ファイルシステム
rectangle "/" as FS1
rectangle "/home" as FS2

LV1 --> FS1
LV2 --> FS2
@enduml
```

## ディスク１台で１つのパーティションの例

```plantuml
@startuml
' ディスクとパーティション（1台構成）
rectangle "Disk Drive\n/dev/vda" as Disk

rectangle "Partition\n/dev/vda1" as Part1

Disk --> Part1

' 物理ボリューム
rectangle "Physical Volume\n/dev/vda1" as PV1
Part1 --> PV1

' ボリュームグループ
rectangle "Volume Group\nvg_main" as VG
PV1 --> VG

' 論理ボリューム
rectangle "Logical Volume\nlv_root" as LV1
rectangle "Logical Volume\nlv_home" as LV2

VG --> LV1
VG --> LV2

' ファイルシステム
rectangle "/" as FS1
rectangle "/home" as FS2

LV1 --> FS1
LV2 --> FS2
@enduml
```

## ディスク１台で複数パーティションの例

```plantuml
@startuml
' ディスクとパーティション
rectangle "Disk Drive\n/dev/vda" as Disk

rectangle "Partition 1\n/dev/vda1" as Part1
rectangle "Partition 2\n/dev/vda2" as Part2
rectangle "Partition 3\n/dev/vda3" as Part3
rectangle "Partition 4\n/dev/vda4" as Part4
rectangle "Partition 5\n/dev/vda5" as Part5

Disk --> Part1
Disk --> Part2
Disk --> Part3
Disk --> Part4
Disk --> Part5

' 物理ボリューム
rectangle "Physical Volume\n/dev/vda1" as PV1
rectangle "Physical Volume\n/dev/vda2" as PV2
rectangle "Physical Volume\n/dev/vda3" as PV3
rectangle "Physical Volume\n/dev/vda4" as PV4
rectangle "Physical Volume\n/dev/vda5" as PV5

Part1 --> PV1
Part2 --> PV2
Part3 --> PV3
Part4 --> PV4
Part5 --> PV5

' ボリュームグループ
rectangle "Volume Group\nvg_system" as VG1
rectangle "Volume Group\nvg_others" as VG2

PV1 --> VG1
PV2 --> VG1
PV3 --> VG2
PV4 --> VG2
PV5 --> VG2

' 論理ボリューム
rectangle "Logical Volume\nlv_home" as LV1
rectangle "Logical Volume\nlv_root" as LV2
rectangle "Logical Volume\nlv_backups" as LV3
rectangle "Unallocated" as LV4

VG1 --> LV1
VG1 --> LV2
VG2 --> LV3
VG2 --> LV4

' ファイルシステム
rectangle "/home" as FS1
rectangle "/" as FS2
rectangle "/mnt/backups" as FS3

LV1 --> FS1
LV2 --> FS2
LV3 --> FS3

@enduml
```

## ディスク複数台の例

```plantuml
@startuml
' ディスクとパーティション
rectangle "Disk Drive\n/dev/vda" as Disk1
rectangle "Disk Drive\n/dev/vdb" as Disk2
rectangle "Disk Drive\n/dev/vdc" as Disk3
rectangle "Disk Drive\n/dev/vdd" as Disk4
rectangle "Disk Drive\n/dev/vde" as Disk5

rectangle "Partition\n/dev/vda1" as Part1
rectangle "Partition\n/dev/vda2" as Part2
rectangle "Partition\n/dev/vdb1" as Part3
rectangle "Partition\n/dev/vdb2" as Part4
rectangle "Partition\n/dev/vdb3" as Part5

Disk1 --> Part1
Disk1 --> Part2
Disk2 --> Part3
Disk2 --> Part4
Disk2 --> Part5

' 物理ボリューム
rectangle "Physical Volume\n/dev/vda1" as PV1
rectangle "Physical Volume\n/dev/vda2" as PV2
rectangle "Physical Volume\n/dev/vdb1" as PV3
rectangle "Physical Volume\n/dev/vdb2" as PV4
rectangle "Physical Volume\n/dev/vdb3" as PV5
rectangle "Physical Volume\n/dev/vdc"  as PV6
rectangle "Physical Volume\n/dev/vdd"  as PV7
rectangle "Physical Volume\n/dev/vde"  as PV8

Part1 --> PV1
Part2 --> PV2
Part3 --> PV3
Part4 --> PV4
Part5 --> PV5
Disk3 --> PV6
Disk4 --> PV7
Disk5 --> PV8

' ボリュームグループ
rectangle "Volume Group\nvg_system" as VG1
rectangle "Volume Group\nvg_backups" as VG2
rectangle "Volume Group\nvg_others" as VG3
PV1 --> VG1
PV2 --> VG1
PV3 --> VG2
PV4 --> VG2
PV5 --> VG2
PV6 --> VG3
PV7 --> VG3
PV8 --> VG3

' 論理ボリューム
rectangle "Logical Volume\nlv_home" as LV1
rectangle "Logical Volume\nlv_root" as LV2
rectangle "Logical Volume\nlv_backups" as LV3
rectangle "Unallocated" as LV4
rectangle "Logical Volume\nlv_others" as LV5

VG1 --> LV1
VG1 --> LV2
VG2 --> LV3
VG2 --> LV4
VG3 --> LV5

' ファイルシステム
rectangle "/home" as FS1
rectangle "/" as FS2
rectangle "/mnt/backups" as FS3
rectangle "/mnt/others" as FS4

LV1 --> FS1
LV2 --> FS2
LV3 --> FS3
LV4 --> FS4
@enduml
```

## 階層構造

```
物理ボリューム（ブロックデバイス） →
　パーティション →
　　物理ボリューム（PV）→
　　　ボリュームグループ（VG）→
   　　論理ボリューム（LV）→
     　　ファイルシステム
```

# 管理コマンド

## 論理ボリューム管理コマンド

| コマンド                   | 説明                           |
| ---------------------- | ---------------------------- |
| `lvcreate`             | 論理ボリューム作成                    |
| `lvscan`               | 論理ボリュームのスキャン                 |
| `lvdisplay`, `lvs`     | LV 情報の表示                     |
| `lvextend`             | LV の拡張                       |
| `lvremove`             | LV の削除                       |
| `lvrename`             | LV 名の変更                      |
| `lvchange`             | LV の属性変更                     |
| `lvreduce`, `lvresize` | LV のサイズ縮小/変更                 |
| `lvconvert`            | LV タイプ変換（例: linear→mirrored） |

## ボリュームグループ管理コマンド

| コマンド               | 説明            |
| ------------------ | ------------- |
| `vgcreate`         | ボリュームグループの作成  |
| `vgscan`           | VG の検索        |
| `vgs`              | VG 情報の表示      |
| `vgdisplay`, `vgs` | VG 情報の表示      |
| `vgextend`         | PV を VG に追加   |
| `vgreduce`         | PV を VG から削除  |
| `vgrename`         | VG 名の変更       |
| `vgchange`         | VG 属性の変更      |
| `vgck`             | VG の整合性チェック   |
| `vgmerge`          | VG の統合        |
| `vgsplit`          | VG の分割        |
| `vgcfgbackup`      | VG 構成のバックアップ  |
| `vgcfgrestore`     | VG 構成のリストア    |
| `vgconvert`        | VG メタデータ形式の変換 |
| `vgexport`         | VG のシステム登録解除  |
| `vgimport`         | VG のシステム登録    |
| `vgmknodes`        | デバイスの作成       |

---

## 物理ボリューム管理コマンド

| コマンド               | 説明                    |
| ------------------ | --------------------- |
| `pvcreate`         | ディスク/パーティションをPVとして初期化 |
| `pvscan`           | PV のスキャン              |
| `pvdisplay`, `pvs` | PV 情報の表示              |
| `pvresize`         | PV のサイズ変更             |
| `pvmove`           | データの移動（PV 間）          |
| `pvck`             | メタデータチェック             |
| `pvremove`         | PV の削除                |
| `pvchange`         | PV 属性の変更              |

## 使用例

### 物理ボリュームの作成

```bash
sudo pvcreate /dev/vda1 /dev/vda2 /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc /dev/vde /dev/vdb
```

### ボリュームグループの作成

```bash
sudo vgcreate vg_system /dev/vda1 /dev/vda2
sudo vgcreate vg_backups /dev/vdb1 /dev/vdb2 /dev/vdb3
sudo vgcreate vg_others /dev/vdc /dev/vde /dev/vdd
```

### 🔧 論理ボリュームの作成

```bash
sudo lvcreate -L 20GB -n lv_home vg_system
sudo lvcreate -L 35GB -n lv_root vg_system
sudo lvcreate -L 70GB -n lv_backups vg_backups
sudo lvcreate -l100$ -n lv_otherss vg_others
```

# さいごに

わすれたくない