Contents
概要
CentOSはインストーラで特に指定をしなければパーティションにLVMが使用されます。LVM(Logical volume manager)は、基本的な概念としてPV/VG/LVがあり、LVMを使用する場合は必ず1つ以上のPV/VG/LVが存在します。
PV
PVとは
PV(Physical volume)は、fdiskでパーティションタイプを”Linux LVM”に指定することでできる物理ディスクのパーティションです。PVはVGで束ねることができます。
コマンド
pvdisplay
pvdisplayでPVの状態を確認できます。
[root@centos ~]# pvdisplay
--- Physical volume ---
PV Name /dev/nvme0n1p3
VG Name vg0
PV Size <78.50 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 20095
Free PE 0
Allocated PE 20095
PV UUID WiCkSf-PONS-hm0L-zADd-oxmh-0g6K-J40ZSh
pvs
pvsコマンドは簡易的な出力です。
[root@centos ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p3 vg0 lvm2 a-- <78.50g 0
VG
VGとは
VG(Volume group)は、単一、または複数のPVを束ね、単一の物理ディスクのように振舞います。このような性質から、束ねるPVの物理ディスクは同じ性能が良いです(使うことはできますが気持ち悪いですね)。また、RAIDとは異なり、可用性や処理能力を向上させるものではありません。
コマンド
vgdisplay
vgdisplayでVGの状態を確認できます。
[root@centos ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <78.50 GiB
PE Size 4.00 MiB
Total PE 20095
Alloc PE / Size 20095 / <78.50 GiB
Free PE / Size 0 / 0
VG UUID PUup1p-adtX-YucK-YWoh-XfAV-hPey-TJKST1
vgs
vgsコマンドは簡易的な出力です。
[root@centos ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <78.50g 0
LV
LVとは
LV(Logical volume)は、VG内に作られる論理的なボリュームです。VGの容量の範囲内で自由にパーティションをレイアウトでき、LinuxはLVをマウントして読み書きをします。/bootなどはLVを使用できません。
コマンド
lvdisplay
lvdisplayでLVの状態を確認できます。
[root@centos ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/root
LV Name root
VG Name vg0
LV UUID C28mEW-6JYR-Ie5b-yRBl-Mf2t-XpuW-fY1BQM
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-10-23 12:34:21 +0900
LV Status available
# open 1
LV Size <74.50 GiB
Current LE 19071
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/vg0/swap
LV Name swap
VG Name vg0
LV UUID qoeTA8-CwZi-vwLF-isOK-Iwyp-uMR5-nqfRc5
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-10-23 12:34:22 +0900
LV Status available
# open 2
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
lvcreate
lvcreateでVGの空き容量にLVを作成できます。本稿ではvg0(VG)の空き容量全てをsystem1(LV)に割り当てます。
[root@centos ~]# lvcreate vg0 -n system1 -l 100%FREE Logical volume "system1" created. [root@centos ~]# lvdisplay /dev/vg0/system1 --- Logical volume --- LV Path /dev/vg0/system1 LV Name system1 VG Name vg0 LV UUID PfDvlQ-6Ogs-lUTE-GsfP-K9vB-nnon-JDtUKu LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-10-29 18:59:47 +0900 LV Status available # open 0 LV Size <93.74 GiB Current LE 23997 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4
サイズを指定するオプションでは-Lと-lがありますが、用途が異なるので注意が必要です。
-L(--size)
作成する論理ボリュームのサイズをGやT等の単位で指定します。
-l(--extents)
作成する論理ボリュームのサイズを論理エクステントの個数、または割合(%VG、%PVS、%FREE、%ORIGIN)で指定します。本稿の例では、"-l 100%FREE"で指定したVGの空き容量全てを割り当てています。
ファイルシステムの作成
作成されたばかりのLVはファイルシステムがなくマウントできない為、mkfsでフォーマットします。xfsを指定しています。
[root@centos ~]# mkfs /dev/mapper/vg0-system1 -t xfs
meta-data=/dev/mapper/vg0-system1 isize=512 agcount=4, agsize=6143232 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=24572928, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=11998, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
マウント確認
/dev/mapper/vg0-system1のマウントを確認します。/system1にマウントしています。
[root@centos ~]# mkdir /system1 [root@centos ~]# mount /dev/mapper/vg0-system1 /system1 [root@centos ~]# df -h /dev/mapper/vg0-system1 94G 702M 94G 1% /system1 [root@centos ~]# umount /system1
/etc/fstab
ホスト起動時にマウントするには、/etc/fstabに下記を追記します。再起動して確認しましょう。
[root@centos ~]# vim /etc/fstab
/dev/mapper/vg0-system1 /system1 xfs defaults 0 0
lvrename
lvrenameでLVの名前を変更できます。スペルを間違えた、名前が気に入らない、役割に基づいた名前を付けていたが役割が変わった、等の場合に簡単に名前だけ変更できます。
本稿では、vg1のsystemをvg1のsystem2に変更します。引数の指定は、変更前、変更後です。lvdisplayのLV Pathの値を指定します。
[root@centos ~]# lvrename /dev/vg1/system /dev/vg1/system2
尚、LVの名前は即変更されますが、dfコマンドの出力はマウントしなおさないと変わりません。/etc/fstabの内容も書き換えが必要です。その他、マウントポイントを変更する場合は、それに伴う関連設定(例:NFS等)の変更も必要です。