AWS EBS – Extend Volume on LVM CentOS 7

Situasi

Volume /opt/appdata-shared dah penuh. 100%. EBS dah di-extend kat AWS Console dari 320G ke 350G, tapi OS belum nampak ruang tu.

Setup dia guna LVM dengan filesystem XFS. Kena buat beberapa langkah sebelum ruang tu boleh dipakai.

Semak Keadaan Semasa

[root@prod-node7 sysops]# lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda                        202:0    0   40G  0 disk
`-xvda1                     202:1    0   40G  0 part /
xvdc                        202:32   0   80G  0 disk
`-DataGroup-DataVolume      253:0    0   80G  0 lvm  /opt/appdata
xvdg                        202:96   0  350G  0 disk
`-StorageGroup-StorageVolume 253:1   0  320G  0 lvm  /opt/appdata-shared

Nampak tak? xvdg dah tunjuk 350G sebab EBS dah di-extend, tapi LVM masih nampak 320G. PV belum tahu pasal tambahan tu.

[root@prod-node7 sysops]# pvs
  PV         VG            Fmt  Attr PSize      PFree
  /dev/xvdc  DataGroup     lvm2 a--  <80.00g    0
  /dev/xvdg  StorageGroup  lvm2 a--  <320.00g   0

Step 1: Resize Physical Volume

Bagitau LVM supaya baca semula saiz disk tu.

[root@prod-node7 sysops]# pvresize /dev/xvdg
  Physical volume "/dev/xvdg" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Check balik. Sekarang PFree dah ada 30G.

[root@prod-node7 sysops]# pvs
  PV         VG            Fmt  Attr PSize      PFree
  /dev/xvdc  DataGroup     lvm2 a--  <80.00g    0
  /dev/xvdg  StorageGroup  lvm2 a--  <350.00g  30.00g

Step 2: Extend Logical Volume

Guna semua ruang kosong yang ada dalam VG tu.

[root@prod-node7 sysops]# lvextend -l +100%FREE /dev/mapper/StorageGroup-StorageVolume
  Size of logical volume StorageGroup/StorageVolume changed from <320.00 GiB (81919 extents) to <350.00 GiB (89599 extents).
  Logical volume StorageGroup/StorageVolume successfully resized.

Check VG sekali lagi. VFree dah balik ke 0, bermakna semua ruang dah masuk ke LV.

[root@prod-node7 sysops]# vgs
  VG            #PV #LV #SN Attr   VSize      VFree
  DataGroup       1   1   0 wz--n- <80.00g    0
  StorageGroup    1   1   0 wz--n- <350.00g   0

Step 3: Grow Filesystem

LV dah besar, tapi filesystem belum tahu. df -h masih tunjuk 320G dan 100% penuh.

[root@prod-node7 sysops]# df -h
Filesystem                                Size  Used Avail Use% Mounted on
/dev/mapper/StorageGroup-StorageVolume    320G  320G   91M 100% /opt/appdata-shared

Untuk XFS, guna xfs_growfs. Boleh buat masa filesystem tu masih mounted, tak perlu unmount.

[root@prod-node7 sysops]# xfs_growfs -d /opt/appdata-shared
meta-data=/dev/mapper/StorageGroup-StorageVolume isize=512    agcount=13, agsize=6553344 blks
         =                                       sectsz=512   attr=2, projid32bit=1
         =                                       crc=1        finobt=0 spinodes=0
data     =                                       bsize=4096   blocks=83886080, imaxpct=25
         =                                       sunit=0      swidth=0 blks
naming   =version 2                              bsize=4096   ascii-ci=0 ftype=1
log      =internal                               bsize=4096   blocks=4096, version=2
         =                                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 83886080 to 91750400

Kalau ko guna ext4, command dia lain sikit:

resize2fs /dev/mapper/StorageGroup-StorageVolume

Verify lepas growfs:

[root@prod-node7 sysops]# df -h
Filesystem                                Size  Used Avail Use% Mounted on
/dev/mapper/StorageGroup-StorageVolume    350G  320G   30G  92% /opt/appdata-shared

Ringkasan Flow

  1. Extend EBS volume kat AWS Console dulu.
  2. pvresize /dev/xvdg supaya LVM nampak saiz baru.
  3. lvextend -l +100%FREE /dev/mapper/StorageGroup-StorageVolume untuk extend logical volume.
  4. xfs_growfs -d /opt/appdata-shared untuk grow filesystem. Tak perlu unmount.

Semua step ni boleh buat live. Confluence atau app lain yang tengah running tak perlu di-restart.

Leave a Comment