How to Create LVM Partition Step-by-Step in Linux

In this guide, we will show you how to create lvm partition step-by-step in Linux.

LVM stands for Logical Volume Management, it is the highly recommended way to manage disk or storage on Linux systems specially for servers. One of the main benefit of LVM partition is that we can extend its size online without any downtime. LVM partition can also be reduced but it is not recommended.

For the demo purpose, I have used Ubuntu 22.04 system and attached 15GB disk to it. We will create LVM partition on this disk from the command line.

Prerequisites

  • Raw disk attached to Linux system
  • Local User with sudo rights
  • Pre-Install lvm2 package

Without further ado, let’s deep dive into the steps.

Step 1) Identify New Attached Raw Disk

Login to your system, open the terminal and run following dmesg command,

$ sudo dmesg | grep -i sd

In the output, look for new disk attached of size 15GB,

dmesg-command-new-attached-disk-linux

Alternate way to identify new attached raw disk is via fdisk command,

$ sudo fdisk -l | grep -i /dev/sd

Output,

fdisk-command-output-new-disk

From output above, it is confirmed that new attached disk is ‘/dev/sdb’

Step 2) Create PV (Physical Volume)

Before start creating pv on disk /dev/sdb, make sure lvm2 package is installed. In case it is not installed, then run following command,

$ sudo apt install lvm2     // On Ubuntu / Debian
$ sudo dnf install lvm2    // on RHEL / CentOS

Run following pvcreate command to create pv on disk /dev/sdb,

$ sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
$

To verify pv status run,

$ sudo pvs /dev/sdb
Or
$ sudo pvdisplay /dev/sdb

pvdisplay-command-output-linux

Step 3) Create VG (Volume Group)

To create a volume group, we will use vgcreate command. Creating VG means adding pv to the volume group.

Syntax :

$ sudo vgcreate <vg_name>  <pv>

In our case, command would be,

$ sudo vgcreate volgrp01 /dev/sdb
  Volume group "volgrp01" successfully created
$

Run following commands to verify the status of vg (volgrp01)

$ sudo vgs volgrp01
Or
$ sudo vgdisplay volgrp01

Output of above commands,

vgs-command-output-linux

Above output confirms that volume group (volgrp01) of size 15 GiB is created successful and size of one physical extend (PE) is 4 MB. PE size can be changed while creating vg.

Step 4) Create LV (Logical Volume)

Lvcreate command is used to create LV from the VG. Syntax of lvcreate command would look like below,

$ sudo lvcreate -L <Size-of-LV> -n <LV-Name>   <VG-Name>

In our case, following command will be used to create lv of size 14 GB

$ sudo lvcreate -L 14G -n lv01 volgrp01
  Logical volume "lv01" created.
$

Validate the status of lv, run

$ sudo lvs /dev/volgrp01/lv01
or
$ sudo lvdisplay /dev/volgrp01/lv01

Output,

lvs-command-output-linux

Output above shows that LV (lv01) has been created successfully of size 14 GiB.

Step 5) Format LVM Partition

Use mkfs command to format the lvm partition. In our case lvm partition is /dev/volgrp01/lv01

Note:  We can format the partition either ext4 or xfs, so choose the file system type according to your setup and requirement.

Run following command to format LVM partition as ext4 file system.

$ sudo mkfs.ext4 /dev/volgrp01/lv01

mkfs-ext4-filesystem-lvm

Execute beneath command to format the lvm partition with xfs file system,

$ sudo mkfs.xfs /dev/volgrp01/lv01

To use above formatted partition, we must mount it on some folder. So, let’s create a folder /mnt/data

$ sudo mkdir /mnt/data

Now run mount command to mount it on /mnt/data folder,

$ sudo mount /dev/volgrp01/lv01 /mnt/data/
$ df -Th /mnt/data/
Filesystem                Type  Size  Used Avail Use% Mounted on
/dev/mapper/volgrp01-lv01 ext4   14G   24K   13G   1% /mnt/data
$

Try to create some dummy file, run following commands,

$ cd /mnt/data/
$ echo "testing lvm partition" | sudo tee  dummy.txt
$ cat dummy.txt
testing lvm partition
$
$ sudo rm -f  dummy.txt

Perfect, above commands output confirm that we can access lvm partition.

To mount above lvm partition permanently, add its entries in fstab file using following echo command,

$ echo '/dev/volgrp01/lv01  /mnt/data  ext4  defaults 0 0' | sudo  tee -a /etc/fstab
$ sudo mount -a

That’s all from this guide, thanks for the reading. Kindly do post your queries and feedback in below comments section.

Read Also: How to Extend XFS Root Partition without LVM in Linux

12 thoughts on “How to Create LVM Partition Step-by-Step in Linux”

    1. when you see “0 0” or “1 0” at the end of an /etc/fstab entry, it indicates the dump and pass fields respectively. The values “0 0” mean that the file system will not be dumped (backed up) and will not be checked during the boot process. The values “1 0” would mean that the file system will be dumped and checked first during the boot process. However, as mentioned earlier, the dump field is rarely used nowadays, and the pass field is typically set to 0 for most non-root file systems.

  1. I already have a VG which I did when installing Debian, with the name vg0 (Which is a Raid 0 NVMe)

    Now I have another HDD, want to use it for saving big files. I created the PV, but I’m unsure if about the VG naming, should I use vg0 or name it vg1.

    Is it even possible to increase the LV size on vg0 with vg1?

    1. Hi ,

      Yes, you can add the new PV to the existing VG vg0 and then you can extend the size of LV.

      # vgextend volume-group new-disk
      # vgextend vg0 /dev/sdb

  2. When doing:
    # mkfs.ext4 /dev/volgrp01/lv01
    I recommend using the -m0 option:

    # mkfs.ext4 -m0 /dev/volgrp01/lv01

    Otherwise, 5% of the disk will be reserved for super-user. This isn’t usually necessary on filesystems other than the / root. The m0 says to reserve no space for the super-user on that partition.

Leave a Comment

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