LVM とは?コマンドの手順を紹介

LVM(Logical Volume Management)LVM とは、複数のストレージを、1つのボリューム (連続した記憶領域) と扱える機能です。
2つのストレージの容量を合わせることも、
一部だけを切り出すことも可能
関連記事:Linux の基本機能
スポンサーリンク

LVM の機能と用語

LVM は主に以下の3つを管理します。

PV (物理ボリューム)

PV (Phisical Volume/物理ボリューム) とは、ストレージや各パーティションです。

VG (ボリュームグループ)

VG (Volume Group) とは、複数の PV を1つにまとめたものです。

LV (論理ボリューム)

LV (Logical Volume/論理ボリューム) とは、VG から必要なサイズのボリュームを抽出したものです。
スポンサーリンク

LVMで論理ボリュームを作成

以下の手順で LVM 論理ボリュームを作成します。

  1. LVM (lvm2 パッケージ) をインストール
  2. 物理ボリューム (PV) を作成
  3. ボリュームグループ (VG) を作成し、物理ボリュームを割り当て
  4. ボリュームグループ (VG) から論理ボリューム (LV) を作成

LVM をインストール

sudo yum -y install lvm2

物理ボリューム (PV) を作成

lsblk
NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
(省略)
xvdb      202:16   0   8G  0 disk 
xvdc      202:32   0   8G  0 disk
sudo pvcreate /dev/xvdb
sudo pvcreate /dev/xvdc

ストレージ全体 (/dev/xvdb) を指定しているが、パーティション (/dev/xvdb1 等) も指定可能

sudo pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb      lvm2 ---  8.00g 8.00g
  /dev/sdc      lvm2 ---  8.00g 8.00g

※もっと詳細を確認する場合は pvdisplay コマンド

無事物理ボリュームが認識できています。(sdb-->xvdb, sdc-->xvdc のシンボリックリンク)

ボリュームグループ (VG) を作成

次にボリュームグループ (VG) を作成し、物理ボリュームを割り当てます。

sudo vgcreate example-vg /dev/xvdb
sudo vgextend example-vg /dev/xvdc
sudo vgs
  VG         #PV #LV #SN Attr   VSize  VFree 
  example-vg   2   0   0 wz--n- 15.99g 15.99g

※もっと詳細を確認する場合は vgdisplay コマンド

論理ボリューム (LV) を作成

ボリュームグループ (VG) から論理ボリューム (LV) を作成します。

sudo lvcreate --size 10G --name lv-10g example-vg
sudo lvcreate --size 4G --name lv-4g example-vg
sudo lvs
  LV     VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv-10g example-vg -wi-a----- 10.00g                                                    
  lv-4g  example-vg -wi-a-----  4.00g

※もっと詳細を確認する場合は lvdisplay

以下の状態が完成しました。

スポンサーリンク

LVM をマウント (mount)

sudo mkfs -t xfs /dev/example-vg/lv-10g
sudo mount /dev/example-vg/lv-10g /mnt
lsblk
NAME                  MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
(省略)
xvdb                  202:16   0   8G  0 disk 
└─example--vg-lv--10g 253:0    0  10G  0 lvm  /mnt
xvdc                  202:32   0   8G  0 disk 
├─example--vg-lv--10g 253:0    0  10G  0 lvm  /mnt
└─example--vg-lv--4g  253:1    0   4G  0 lvm

これで論理ボリューム /dev/example-vg/lv-10g が利用できるようになりました。

sudo touch /mnt/text.txt
ls /mnt
test.txt

LVM でよく使う操作

論理ボリュームの拡張

sudo lvextend -L 5G /dev/example-vg/lv-4g

論理ボリュームのリネーム

sudo lvrename /dev/example-vg/lv-4g lv-5g

論理ボリュームの縮小

sudo lvreduce -L 4G /dev/example-vg/lv-5g

論理ボリュームの削除

sudo lvremove /dev/example-vg/lv-5g

関連情報

関連記事:Linux の基本機能

参考資料

LVMを使ってみたかったのでEC2とEBSでやってみた | DevelopersIO
EBSとEC2でLVM関連のコマンドを使ってみました。