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 🙂