おつかれさまです。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だと拡張が出来るので、便利かと思います。

いきなり本番サーバーで実施するのは怖いと思うので、まずはテストサーバーで気が向いたら試していただけると良いかと思います。