tanke25616429のアウトプット

IT技術の基本を勉強したことをアウトプットします。Linux、Kubernetes、クラウド中心です。百番煎じくらいだけど誰かの役に立てばそれはそれでうれしい。

LVM

LVMとは

LVM(Logical Volume Manager)とは、複数のパーティションにまたがったストレージをまとめ、仮想的(論理的)なストレージを提供するソフトウェアのこと。

LVMにより、複数のストレージを1つのストレージに見せかけたり、仮想的なストレージプールから一定の容量分を切り出して使うことができる。LVMがない場合、OSからは物理的なパーティションが直接ストレージとして見えていることになるが、容量の増減を動的に行うことができない*1

LVMの構成要素

LVMには物理ボリューム、ボリュームグループ、論理ボリュームという3つの構成要素がある。 前の節ではLVMの用語を使わずに説明したが、これらの用語を用いてLVMを改めて定義すると以下のようになる。

LVMとは、複数の物理ボリュームをボリュームグループとしてまとめ、論理ボリュームを提供するソフトウェアのこと。

物理ボリューム(PV)

LVMにおける物理ボリュームとは物理的なパーティションのこと。Linuxではパーティションに対応するデバイスファイルはudevによって作成されているが、LVMを利用する場合は改めて物理ボリュームというエンティティを定義する必要がある*2

物理ボリュームの操作にはpvcreate等のpvが接頭につくコマンドを用いる。

物理エクステント(PE)

似たような言葉に物理エクステントがあるので触れておく。LVMが扱う記憶の最小管理単位である。言い換えると、物理ボリュームは物理エクステントの集合体である。PEのサイズは8KB~512MBの範囲で指定が可能である。

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

ボリュームグループとは物理ボリュームをまとめたもの。仮想的に一つの大きなボリューム(ストレージ)を作っていると見なせる。特定のボリュームグループに対し、異なるハードディスクに属するパーティションが所属していても問題ない。

ボリュームグループの操作にはvgcreate等のvgが接頭につくコマンドを用いる。

論理ボリューム(LV)

ボリュームグループから特定容量分をストレージとして切り出したものである。ボリュームグループに対するパーティションのようなものと考えてもよい。LVMでは論理ボリュームが実ファイルを格納する領域となっており、ファイルシステムが構成されるストレージデバイスとなる。論理ボリュームは動的にサイズの伸縮が可能である。

以下の例では、sda5パーティションの中にcl-*というLVMが構成されていることがわかる。例えば/はXFSという種類のファイルシステムであり、対応するデバイスファイルは/dev/mapper/cl-rootということが見て取れる*3

[root@nuc-centos8 ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   1.8T  0 disk
|(省略)
`-sda5            8:5    0   1.1T  0 part
  |-cl-root     253:0    0    50G  0 lvm  /
  |-cl-swap     253:2    0  15.7G  0 lvm  [SWAP]
  |-cl-usr      253:3    0   250G  0 lvm  /usr
  |-cl-home     253:5    0   250G  0 lvm  /home
  |-cl-var      253:7    0   300G  0 lvm  /var
  `-cl-opt      253:10   0   300G  0 lvm  /opt
[root@nuc-centos8 ~]# df -T -h
Filesystem                     Type      Size  Used Avail Use% Mounted on
devtmpfs                       devtmpfs   16G     0   16G   0% /dev
tmpfs                          tmpfs      16G     0   16G   0% /dev/shm
tmpfs                          tmpfs      16G  242M   16G   2% /run
tmpfs                          tmpfs      16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/cl-root            xfs        50G  431M   50G   1% /
/dev/mapper/cl-usr             xfs       250G  4.0G  246G   2% /usr
/dev/mapper/cl-var             xfs       300G   23G  278G   8% /var
/dev/mapper/cl-opt             xfs       300G  9.8G  291G   4% /opt
/dev/mapper/cl-home            xfs       250G  1.8G  249G   1% /home
/dev/sda4                      ext4      976M  144M  766M  16% /boot
/dev/sda1                      vfat      200M   12M  188M   6% /boot/efi
192.168.0.11:/volume1/document nfs       3.6T  922G  2.7T  26% /mnt/synology/document
192.168.0.11:/volume1/download nfs       3.6T  922G  2.7T  26% /mnt/synology/download
tmpfs                          tmpfs     3.2G     0  3.2G   0% /run/user/0

論理ボリュームの操作にはlvcreate等のlvが接頭につくコマンドを用いる。

まとめ

LVMの構成要素の関係を表す図を以下に引用する。

https://i2.wp.com/www.pmi-sfbac.org/wp-content/uploads/2021/06/linux-lvm-vg.png?w=589&ssl=1 【Linuxの基礎知識】LVMとは?LVMを理解しよう! | Beエンジニアより引用

関連記事

tanke25616429.hatenablog.com

tanke25616429.hatenablog.com

参考にしたもの

www.idcf.jp

13.5. fdisk を使用したパーティションのサイズ変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

【 vgcreate 】コマンド――ボリュームグループを作成する:Linux基本コマンドTips(336) - @IT

IBM Knowledge Center

www.pmi-sfbac.org

LVMってそもそもなんなのさ!?:ぴろにっき:SSブログ

IT技術者なら知っておきたい ストレージの原則と技術 | EMC Education Services, 株式会社クイープ |本 | 通販 | Amazon

*1:厳密にはそのディスクの最後のパーティションはサイズを変更できる。ちなみに、Red HatではLVMのパーティションのサイズ変更のみサポートする。

*2:後述するボリュームグループを構成する際に、物理ボリュームを作成していないパーティションを直接メンバーとして指定することはできない。

*3:バイスマッパーについては別途記事を作成予定。