LVM: A Realistic Way to Manage Your Dynamic Storage
Have you ever tought of extending or reducing your active linux partition size? If yes, LVM might be your best friend to accomplish that purpose as it offers convenient yet safe way to resize your linux partition size.
Salah satu hal yang paling saya cari-cari sejak mulai main linux adalah flexibilitas dalam memperbesar atau mengurangi ukuran storage. Sebab, saya sering menjumpai kapasitas atau ukuran partisi yang saya alokasikan untuk sebuah linux tidak bisa fix. Dengan kata lain, partisi linux berukuran 200 GB yang saya kira cukup untuk waktu yang lama, pada kenyataannya cepat sekali membengkak dan rewel untuk minta diperluas ukurannya (mungkin karena partisi root (/) dan home (/home) saya satukan?).
Kalau di virtual machine, tentu mengubah (memperbesar atau mengurangi) ukuran penyimpanan (storage) adalah hal yang mudah. Kita hanya perlu pergi ke “Settings”, kemudian cari bagian “Storage” atau “Disk”, lalu kita bisa sesuaikan ukurannya. Berbeda jika di baremetal (komputer/storage fisik). Mengubah ukuran penyimpanan di partisi yang sudah diformat akan sangat merepotkan, kalau tidak mungkin. Selain itu, jika kapasitas disk (hardisk/nvme) kita kecil (misalnya 128 GB) dan sudah mau penuh, ketika kita ingin melakukan upgrade system, satu-satunya cara agar system kita tidak crash di tengah upgrade adalah dengan menghapus beberapa file terlebih dahulu untuk me-lega-kan penyimpanan.
Oleh karena itu, LVM hadir sebagai solusi terhadap masalah tersebut.
Pada awalnya, LVM diciptakan oleh Heinz Mauelshagen pada tahun 1998 ketika dia sedang bekerja di Sitisna Software.1 Hingga hari ini, LVM sudah banyak diadopsi di banyak sistem operasi berbasis UNIX, seperti Linux dan FreeBSD. Bahkan, Ubuntu Server sendiri sudah menggunakan LVM sebagai opsi instalasinya.2
Berdasarkan gambar di atas, terlihat bahwa saya memiliki:
2 PV: PV-1 & PV-2
2 VG: VG-1 & VG-2
3 LV: LV-1, LV-2, dan LV-3
Seandainya partisi LV-1 saya di VG-2 (/home) sudah mulai penuh, saya hanya tinggal memperbesar ukurannya ke LV-2, dengan ukuran yang saya inginkan (gak mesti langsung semua sisa partisi saya gunakan). Tapi perlu dicatat, partisi LV-1 di VG-1 tidak bisa diperbesar ke LV-2 di VG-2 karena sudah beda VG (kecuali sudah ditambahkan).
Jadi, dengan adanya LVM, kita bisa lebih bebas mengatur bagaimana penyimpanan fisik kita dikelompokkan. Jika kita ingin agar kita lebih punya kebebasan dalam mengatur semua disk fisik, kita bisa mengelompokkan semua disk fisik tersebut (misalnya Disk1: 500GB, Disk2: 1TB, dan Disk3: 2TB) ke dalam satu VG yang sama, baru nanti kita bisa atur partisinya sesuai kehendak kita di LV.
Seperti terlihat, saya memang hanya berencana membuat LVM di satu disk saja, setidaknya untuk saat ini. Jadi, berdasarkan layout tersebut, kita nanti akan membuat sebuah PV, sebuah VG, dan sebuah LV.
Berikut adalah disk 2TB yang saya maksud:
/dev/sda
DANGER
Beberapa hal penting yang juga perlu diperhatikan sebelum membuat PV:
Pastikan tidak ada data penting di disk/partisi yang akan didaftarkan ke PV.
Hapus format filesystem disk/partisi dengan perintah
# ganti "/dev/sda" dengan disk/partisi yang sudah didaftarkan ke PV
2
sudovgcreatevg_data/dev/sda
NOTE
Catatan:
vg_data adalah nama VG, bebas kita tentukan sendiri.
Karena PV yang akan saya buat VG hanya satu, maka perintahnya hanya sudo vgcreate vg_data /dev/sda. Tapi, kalau ada lebih dari satu disk/partisi, maka perintahnya:
Memperbesar ukuran LV menggunakan persentase free space:
Terminal window
1
sudolvextend-r-l+100%FREE/dev/vg_data/lv_home
NOTE
Perhatikan bahwa saya melampirkan tag -r yang berarti mengikutsertakan langsung perubahan file system juga ketika memperbesar LV. Tag -r atau --resizefs tersebut biasanya hanya untuk file system ext4. Jika file system yang kita buat berbeda (misalnya NTFS), maka tidak bisa menggunakan tag tersebut dan harus me-resize file system secara manual dengan perintah khusus.
Perhatikan bahwa saya melampirkan tag -r yang berarti mengikutsertakan langsung perubahan file system juga ketika memperbesar LV. Tag -r atau --resizefs tersebut biasanya hanya untuk file system ext4. Jika file system yang kita buat berbeda (misalnya NTFS), maka tidak bisa menggunakan tag tersebut dan harus me-resize file system secara manual dengan perintah khusus.
Misalnya, sekarang, LV saya akan terlihat seperti ini:
Terminal window
1
sudolvdisplay
1
--- Logical volume ---
2
LV Path /dev/vg_data/lv_secret
3
LV Name lv_secret
4
VG Name vg_data
5
LV UUID GeRyzt-KgCc-qcpv-Zks8-vEYX-mQqb-H4aFii
6
LV Write Access read/write
7
LV Creation host, time castle, 2026-07-12 15:30:47 +0700
8
LV Status available
9
# open 0
10
LV Size 20.00 GiB
11
Current LE 5120
12
Segments 1
13
Allocation inherit
14
Read ahead sectors auto
15
- currently set to 256
16
Block device 252:0
Sebelum bisa digunakan, LV yang baru saja dibuat perlu dibuatkan file system terlebih dahulu. Misalnya, saya akan membuatkan file system ext4 untuk LV yang baru saya buat:
Terminal window
1
sudomkfs.ext4/dev/vg_data/lv_secret
Untuk memastikan LV tersebut sudah memiliki file system yang benar:
Masih banyak hal yang seharusnya dapat dilakukan oleh LVM (seperti snapshot) yang belum disampaikan di sini. Semoga di kemudian hari, saya akan melanjutkan tutorial-nya hingga ke semua fitur LVM.
Untuk saat ini, berikut adalah layout LVM yang berhasil saya buat:
Terminal window
1
sudopvdisplay
1
--- Physical volume ---
2
PV Name /dev/sda
3
VG Name vg_data
4
PV Size <1.82 TiB / not usable <1.09 MiB
5
Allocatable yes
6
PE Size 4.00 MiB
7
Total PE 476932
8
Free PE 471812
9
Allocated PE 5120
10
PV UUID RPjneX-avtN-F01L-8avv-puIM-0rid-3l1bMU
Terminal window
1
sudovgdisplay
1
--- Volume group ---
2
VG Name vg_data
3
System ID
4
Format lvm2
5
Metadata Areas 1
6
Metadata Sequence No 2
7
VG Access read/write
8
VG Status resizable
9
MAX LV 0
10
Cur LV 1
11
Open LV 0
12
Max PV 0
13
Cur PV 1
14
Act PV 1
15
VG Size <1.82 TiB
16
PE Size 4.00 MiB
17
Total PE 476932
18
Alloc PE / Size 5120 / 20.00 GiB
19
Free PE / Size 471812 / <1.80 TiB
20
VG UUID 3bH0hx-3aHt-PNqr-W1oR-8lQH-Aut8-HWcmEU
Terminal window
1
sudolvdisplay
1
--- Logical volume ---
2
LV Path /dev/vg_data/lv_secret
3
LV Name lv_secret
4
VG Name vg_data
5
LV UUID GeRyzt-KgCc-qcpv-Zks8-vEYX-mQqb-H4aFii
6
LV Write Access read/write
7
LV Creation host, time castle, 2026-07-12 15:30:47 +0700
8
LV Status available
9
# open 0
10
LV Size 20.00 GiB
11
Current LE 5120
12
Segments 1
13
Allocation inherit
14
Read ahead sectors auto
15
- currently set to 256
16
Block device 252:0
Sekian.
Terima kasih sudah membaca.
Sampai jumpa lagi di artikel saya yang lain!