A fixed partition is easy to outgrow. When a disk fills up, the usual fix is a new disk, a migration, and downtime. LVM (Logical Volume Manager) avoids that by letting you pool disks into a volume group and carve logical volumes out of it. You can then extend a volume, move data from one disk to another, and take snapshots with a single command each.
This article sets up LVM on a Kamatera Ubuntu server and walks through all three operations.
Step 1: Provision a server
Provision a Kamatera Ubuntu server as described in “How to Operate a Linux Server on Kamatera.”

Add at least two extra disks besides the system disk, so you have a second physical volume to move data to later in the article.
When the server is ready, connect to it through the Kamatera console or a local SSH terminal.
Step 2: Initialize a physical volume
Before we can use LVM, we need to initialize a physical volume. Physical volumes are where data is managed on a computer’s file system. Use the lsblk command to display a map of our server’s physical volumes. Each volume is broken down into smaller units called partitions.
lsblk
Our server has three file systems: sda, sdb, and sdc. sda is the main file system and has two partitions. sdb and sdc are unpartitioned. To create a new partition, launch fdisk followed by the file system path.
fdisk <partition path> # Example fdisk /dev/sdb
Type m to display the menu.
Type n to create a new partition (or partitions) and then follow the instructions. Now that the disk is partitioned, we initialize an LVM partition with pvcreate:
pvcreate <physical volume path> # Example pvcreate /dev/sdc
Step 3: Create a volume group
After initializing the physical volume, we create a volume group. To display a list of available physical volumes, type:
pvs
Volume groups are collections of physical volumes that we use to create logical volumes. We create the volume group with the vgcreate:
vgcreate <volume group name> <physical volume path> # Example vgcreate sdc1 /dev/sdc
Step 4: Mapping a logical volume
LVM uses logical volumes to manage file systems. Logical volumes map the volume group to a partition. To display a list of the available volume groups, type:
vgs
We create the volume group with lvcreate:
lvcreate --name <logical volume name> --size <size of group> <volume group> # Example lvcreate --name sdb1a --size 5g sdb1
Step 5: Managing partitions with LVM
After initializing our physical volume, creating a volume group, and mapping it to a logical volume, we can now use LVM to resize, move, and snapshot our logical volumes.
Let’s first display a list of logical volumes:
lvs
We resize logical volumes with lvextend. For example, to increase the size of a logical volume from 5 gigabytes to 15 gigabytes:
lvextend --resizefs -L <size of group> <logical volume path> # Example: Increase volume size by 10 gigabytes lvextend --resizefs --size +10G /dev/sdc1/sdc1a
Next, let’s move a logical volume from one physical volume to another with pvmove:
pvmove –name <logical volume> <physical volume path>
# Example
pvmove –name sdb1a /dev/sdb1
For our last operation, we will create a backup snapshot of one of our logical volumes with lvcreate:
lvcreate --snapshot --name <snapshot name> --size <size of group> <logical volume path> # Example lvcreate --snapshot --name lv_snapshot --size 5g sdb1/sbd1a

Conclusion
LVM lets you change how storage is laid out on a server without repartitioning. In this article, you pooled two disks into a volume group, created a logical volume, and then extended it, moved it between disks, and took a snapshot.
Keep a few things in mind before you use this on a production server. Take a backup before resizing or moving data. A snapshot on the same volume group sits on the same disks as the original, so it protects against a bad change, not a disk failure. This article only covers extending volumes. Shrinking a logical volume is riskier because the file system has to be shrunk first, and some file systems, such as XFS, can’t be shrunk at all.









We resize logical volumes with lvextend. For example, to increase the size of a logical volume from 5 gigabytes to 15 gigabytes: