Catatan LVM : Pembuatan dan Resize Volume di Linux

Posted by

Dulu saya tidak pernah atau tidak berani menggunakan LVM pada setiap instalasi Linux server. Selain karena belum faham, alasan lain adalah khawatir salah satu disk yang digunakan untuk LVM mengalami kendala yang dapat berimbas pada seluruh volume. Ya, LVM sering digunakan untuk menggabungkan beberapa disk menjadi 1 volume group. Mirip seperti RAID 0. Jadi, saya cenderung menggunakan standard partition seperti partisi 1 untuk boot, partisi 2 untuk / (root), dan partisi 3 untuk swap.

Kekurangan dari standard partition adalah ketika adanya kebutuhan resize partisi. Misalnya partisi 2 untuk / (root) hendak diresize. Karena ada partisi 3 untuk swap, maka saya harus menghapus dulu partisi tersebut, melakukan resize, dan membuat ulang partisi swap. Itu jika partisi 3 adalah swap. Jika partisi 3 bukan swap dan sudah ada datanya, maka saya kesulitan untuk melakukan resize partisi 2. Alhasil, menambahkan disk baru, lakukan format dan memindahkan data-data yang ada pada partisi 2.

Ilustrasinya lebih kurang seperti berikut

Saya tidak bisa menggunakan space block ke-4 karena adanya partisi swap di block ke-3. Jika menggunakan LVM, space yang ada pada volume group dapat ditambahkan untuk logical volume manapun.

Setelah menggunakan virtualisasi/vendor cloud VPS, saya sering menggunakan LVM. Khususnya untuk penggunaan pada block storage. Ketika ada kebutuhan disk yang lebih besar, cukup lakukan resize block storage yang ada dan lakukan resize di sisi LVM. Setelahnya, extend group volume dan bagi-bagi space pada beberapa logical volume yang membutuhkan. Tentu tidak lupa untuk melakukan backup terlebih dahulu

Berikut beberapa skenario yang saya gunakan

# Bagian 1 (block storage 10 GB)

Block storage sebesar 10 GB saya tambahkan pada VPS yang sedang berjalan. Block storage tersebut sepenuhnya saya gunakan untuk LVM. Block storage tersebut dikenali sebagai /dev/sdb.

List storage saat ini

[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk 
`-sda1   8:1    0   30G  0 part /
sdb      8:16   0   10G  0 disk 
sr0     11:0    1 1024M  0 rom  

Jadikan sdb sebagai LVM

pvcreate /dev/sdb
vgcreate lvm-bs /dev/sdb
lvcreate -n lv01 -l 100%FREE lvm-bs
mkfs.xfs /dev/lvm-bs/lv01

Catatan:
– Perintah di atas akan menyiapkan perangkat penyimpanan fisik (physical volume) yang akan digunakan dalam Volume Group (VG).
– Kemudian membuat Volume Group (VG) dengan nama lvm-bs
– Kemudian membuat logical volume dengan nama lv01 dan menggunakan semua free space yang ada pada VG lvm-bs
– Kemudian format logical volume (lv01) dengan format xfs

[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# vgcreate lvm-bs /dev/sdb
  Volume group "lvm-bs" successfully created
[root@localhost ~]# lvcreate -n lv01 -l 100%FREE lvm-bs
  Logical volume "lv01" created.
[root@localhost ~]# lsblk 
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda              8:0    0   30G  0 disk 
`-sda1           8:1    0   30G  0 part /
sdb              8:16   0   10G  0 disk 
`-lvm--bs-lv01 252:0    0   10G  0 lvm  
sr0             11:0    1 1024M  0 rom  
[root@localhost ~]# 

Jika ingin spesifik mendefinisikan size nya, bisa gunakan perintah ini

lvcreate -n lv01 -L 10G lvm-bs

# Bagian 2 (resize block storage menjadi 15 GB)

Block storage yang sudah ditambahkan sebelumnya (size 10GB), saya lakukan resize menjadi 15 GB. Proses resize dilakukan dari dashboard penyedia cloud. Berikut hasil pengecekan via lsblk

[root@localhost ~]# lsblk 
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda              8:0    0   30G  0 disk 
`-sda1           8:1    0   30G  0 part /
sdb              8:16   0   15G  0 disk 
`-lvm--bs-lv01 252:0    0   10G  0 lvm  
sr0             11:0    1 1024M  0 rom  

Terlihat size sdb menjadi 15G dari sebelumnya 10G. Free space 5GB ini akan saya jadikan logical volume kedua

pvresize -v /dev/sdb
lvcreate -n lv02 -l 100%FREE lvm-bs
mkfs.xfs /dev/mapper/lvm--bs-lv02

Catatan:
– Perintah di atas akan melakukan resize physical volume dengan perintah pvresize
– Kemudian membuat logical volume kedua dengan nama lv02 dari VG lvm-bs
– Kemudian lv02 diformat dengan xfs filesystem

Berikut adalah kondisi LVM saat ini

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sdb   lvm-bs lvm2 a--  <15.00g    0

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  lvm-bs   1   2   0 wz--n- <15.00g    0 

[root@localhost ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 lvm-bs -wi-a----- <10.00g                                                    
  lv02 lvm-bs -wi-a-----   5.00g                                                    

– Physical volume (PV) menggunakan device /dev/sdb dengan ukuran 15G
– Volume Group (VG) dengan nama lvm-bs dan tidak memiliki free space
– 2 Logical Volume (LV) dengan nama lv01 (10G) dan lv02 (5G)

# Bagian 3 (resize block storage menjadi 18 GB)

Setelah membuat 2 buah logical volume (LV), ternyata ada kebutuhan untuk menambahkan 2GB untuk lv01 dan 1GB untuk lv02. Sehingga nantinya lv01 ukurannya 12GB dan lv02 ukurannya 6GB.

Pertama, saya lakukan resize kembali block storage dari 15GB menjadi 18GB melalui dashboard cloud. Kemudian lakukan pvresize dan extend logical volume yang ada. Berikut hasil pengecekan via lsblk setelah dilakukan resize

[root@localhost ~]# lsblk 
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda              8:0    0   30G  0 disk 
`-sda1           8:1    0   30G  0 part /
sdb              8:16   0   18G  0 disk 
|-lvm--bs-lv01 252:0    0   10G  0 lvm  
`-lvm--bs-lv02 252:1    0    5G  0 lvm  
sr0             11:0    1 1024M  0 rom  

Terlihat size sdb menjadi 18G dari sebelumnya 15G. Free space 3GB ini akan dibagi sesuai dengan skenario di atas.

pvresize -v /dev/sdb

Cek Volume Group dan pastikan sudah terdapat free space 3GB

vgs
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  lvm-bs   1   2   0 wz--n- <18.00g 3.00g
[root@localhost ~]# 

Extend size logical volume lv01 dan lv02

lvextend -r -L +2G /dev/mapper/lvm--bs-lv01
lvextend -r -L +1G /dev/mapper/lvm--bs-lv02

Perintah di atas akan melakukan extend size 2GB untuk lv01 dan 1GB untuk lv02. Berikut kondisi volume group dan logical volume setelah dilakukan extend

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  lvm-bs   1   2   0 wz--n- <18.00g    0 

[root@localhost ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 lvm-bs -wi-a----- <12.00g                                                    
  lv02 lvm-bs -wi-a-----   6.00g    

Itulah beberapa kondisi/skenario yang pernah saya alami. Tulisan ini merupakan catatan jika suatu saat mengalami kondisi yang sama

Silakan dicoba dan semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.