おつかれさまです。Dです。
前回のLVMのお話の続きになります。
今回は実際に拡張作業を実施していきます。
前提として、既に新しいディスクを差し込んで
仮想ディスクを作成した状態から拡張を進めていきます。
内容
サーバー環境は「AlmaLinux8」で実施します。
まずは、新しいディスクが認識しているか確認しているか以下のコマンドで確認します。
# fdisk -l
Disk /dev/sda: 558.4 GiB, 599550590976 bytes, 1170997248 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x751ab5df
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 1170997247 1168898048 557.4G 8e Linux LVM
Disk /dev/mapper/main-root: 553.4 GiB, 594177687552 bytes, 1160503296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/main-swap: 4 GiB, 4294967296 bytes, 8388608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 558.4 GiB, 599550590976 bytes, 1170997248 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
末尾の/dev/sdbが新しく追加したディスクになります。新しく追加したディスクにて物理ボリュームを作成します。
「pvdisplay」コマンドで物理ボリュームの状況が確認出来ます。追加前の状況を確認しておきます。
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name main
PV Size 557.37 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 142687
Free PE 0
Allocated PE 142687
PV UUID vgsdrQ-0HnN-XZVX-yrhl-p92F-Mf1a-z9adE0
以下のコマンドで物理ボリュームを作成します。
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
New Phisical volume 以下で/dev/sdbが物理ボリュームで作成されているのが確認出来ます。
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name main
PV Size 557.37 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 142687
Free PE 0
Allocated PE 142687
PV UUID vgsdrQ-0HnN-XZVX-yrhl-p92F-Mf1a-z9adE0
"/dev/sdb" is a new physical volume of "<558.38 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size <558.38 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID fXOQGQ-KtaG-RyFe-Y8P0-1gN0-hrdq-1r7uX0
追加用の物理ボリュームが作成出来ましたので、次に既存のボリュームグループに今回新しく追加した物理ボリュームを追加(ボリュームグループの拡張)を実施します。
ボリュームグループの追加前に現在の状況を確認します。「main」というボリュームグループ名で構成されております。「VG Size」を控えておくと追加した分、容量が増えたことが確認出来るので良いかと思います。
# vgdisplay
--- Volume group ---
VG Name main
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 557.37 GiB
PE Size 4.00 MiB
Total PE 142687
Alloc PE / Size 142687 / 557.37 GiB
Free PE / Size 0 / 0
VG UUID 16GIvf-pIE8-xJak-5sXw-Lgi6-7BBZ-Y0hvUe
先ほど確認した「vgdisplay」コマンドの「VG Name」という項目でボリュームグループの名前が確認出来ます。今回、既存ボリュームグループの名前は「main」なので、この「main」のボリュームグループへ物理ボリュームを追加(拡張)を行うのが以下のコマンドになります。
# vgextend main /dev/sdb
Volume group "main" successfully extended
再度、ボリュームグループの状況を確認します。VG Sizeの項目が拡張した分増えていることが確認出来るかと思います。「-v」オプションで詳細を表示することが出来ます。また、コマンド出力の「Physical volumes」でボリュームグループに割り当たっている、物理ボリュームを確認することが可能です。
# vgdisplay -v main
--- Volume group ---
VG Name main
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <1.09 TiB
PE Size 4.00 MiB
Total PE 285630
Alloc PE / Size 142687 / 557.37 GiB
Free PE / Size 142943 / 558.37 GiB
VG UUID 16GIvf-pIE8-xJak-5sXw-Lgi6-7BBZ-Y0hvUe
--- Logical volume ---
LV Path /dev/main/root
LV Name root
VG Name main
LV UUID ymkiSe-2LIE-gcDo-xe3Z-35jr-wgIO-l9g8h5
LV Write Access read/write
LV Creation host, time test-base10.future.local, 2023-05-11 12:57:25 +0900
LV Status available
# open 1
LV Size 553.37 GiB
Current LE 141663
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/main/swap
LV Name swap
VG Name main
LV UUID 5IRT1U-OZ0R-ROlc-3Ge4-0BAa-WfCH-qB4z8p
LV Write Access read/write
LV Creation host, time test-base10.future.local, 2023-05-11 12:57:27 +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
--- Physical volumes ---
PV Name /dev/sda2
PV UUID vgsdrQ-0HnN-XZVX-yrhl-p92F-Mf1a-z9adE0
PV Status allocatable
Total PE / Free PE 142687 / 0
PV Name /dev/sdb
PV UUID fXOQGQ-KtaG-RyFe-Y8P0-1gN0-hrdq-1r7uX0
PV Status allocatable
Total PE / Free PE 142943 / 142943
ボリュームグループの追加まで完了したら、次は論理ボリュームの拡張に移ります。
以下のコマンドで論理ボリュームの状況を確認することが出来ます。論理ボリュームの拡張後、LSizeの項目が増える想定です。
# lvdisplay
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root main -wi-ao---- 553.37g
swap main -wi-ao---- 4.00g
以下が論理ボリュームの拡張コマンドです。論理ボリューム名は「vgdisplay -v main」の「LV Path」で確認出来ます。※LVが複数ある場合は、対応したボリューム名に紐づくLV Pathを確認すること。
# lvextend -l +100%FREE /dev/main/root
Size of logical volume main/root changed from 553.37 GiB (141663 extents) to <1.09 TiB (284606 extents).
Logical volume main/root successfully resized.
再度、拡張後の論理ボリューム状況を確認します。約550GBほど増えているのが確認出来ます。
# lvdisplay
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root main -wi-ao---- <1.09t
swap main -wi-ao---- 4.00g
ただ、OS上はまだ認識していないので現段階ではdfコマンドでは容量は増えていないことを確認する。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/main-root 554G 12G 542G 3% /
OSに認識させるために、以下のコマンドを実施します。
# xfs_growfs /dev/main/root
meta-data=/dev/mapper/main-root isize=512 agcount=4, agsize=36265728 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=145062912, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=70831, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 145062912 to 291436544
dfコマンドで拡張を確認する。554GBから1.1TBに増えていることが確認出来ます。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/main-root 1.1T 16G 1.1T 2% /
【まとめ】
このようにサーバー稼働中でもLVMだと拡張が出来るので、便利かと思います。
いきなり本番サーバーで実施するのは怖いと思うので、まずはテストサーバーで気が向いたら試していただけると良いかと思います。