2 min read

Linux Disk Setup Guide: Create LVM With 2 Logical Volumes (XFS)

This guide explains how to prepare a new, unpartitioned disk (example: /dev/sdb) and configure it as follows:

  • Convert disk → LVM partition
  • Create Physical Volume (PV)
  • Create Volume Group (VG)
  • Create two Logical Volumes (LVs)
  • Format each LV with XFS
  • Mount them to persistent directories via /etc/fstab

Example LV names and mount points:

Logical VolumeMount Point
lv_data1/mnt/data1
lv_data2/mnt/data2

You may customize these names.


1. Identify the New Disk

lsblk

Ensure the disk (e.g., /dev/sdb) is unused:

sudo fdisk -l /dev/sdb

2. Create a Partition for LVM

Use fdisk to create an LVM-type partition:

sudo fdisk /dev/sdb

Inside the prompt, enter:

n       # new partition
p       # primary
1       # partition number
<enter> # default first sector
<enter> # default last sector (use whole disk)
t       # change partition type
8e      # Linux LVM
w       # write changes

Disk now has /dev/sdb1 as an LVM partition.


3. Create LVM Structures

3.1 Create Physical Volume (PV)

sudo pvcreate /dev/sdb1

Verify:

sudo pvs

3.2 Create Volume Group (VG)

Example VG name: vg_data

sudo vgcreate vg_data /dev/sdb1

Verify:

sudo vgs

3.3 Create Two Logical Volumes (LV1 and LV2)

Option A — Split evenly
Option B — Specify exact sizes

Below, we use exact sizes for clarity (example: 50G each).

Example: Two 50G Logical Volumes

sudo lvcreate -L 50G -n lv_data1 vg_data
sudo lvcreate -L 50G -n lv_data2 vg_data

If you want to use all remaining space for lv_data2:

sudo lvcreate -l 100%FREE -n lv_data2 vg_data

Logical volume paths:

  • /dev/vg_data/lv_data1
  • /dev/vg_data/lv_data2

Verify:

sudo lvs

4. Format Logical Volumes as XFS

Install XFS tools if needed:

sudo yum install xfsprogs       # RHEL/CentOS/Rocky/Alma
sudo apt install xfsprogs       # Ubuntu/Debian

Format:

sudo mkfs.xfs /dev/vg_data/lv_data1
sudo mkfs.xfs /dev/vg_data/lv_data2

5. Create Mount Points

sudo mkdir -p /mnt/data1
sudo mkdir -p /mnt/data2

6. Mount Each Logical Volume

sudo mount /dev/vg_data/lv_data1 /mnt/data1
sudo mount /dev/vg_data/lv_data2 /mnt/data2

Verify:

df -h | grep data

7. Configure Persistent Mounting (/etc/fstab)

7.1 Obtain UUIDs

sudo blkid /dev/vg_data/lv_data1
sudo blkid /dev/vg_data/lv_data2

Example output:

UUID="1111-AAAA" TYPE="xfs"
/dev/vg_data/lv_data2: UUID="2222-BBBB" TYPE="xfs"

7.2 Edit /etc/fstab

Open the file:

sudo nano /etc/fstab

Add:

UUID=1111-AAAA   /mnt/data1   xfs   defaults   0 0
UUID=2222-BBBB   /mnt/data2   xfs   defaults   0 0

Save and test:

sudo mount -a

If no errors appear, the configuration is correct.


8. Reboot and Verify

sudo reboot

After reboot:

df -h | grep data

Both /mnt/data1 and /mnt/data2 should be mounted.


Final Structure Summary

LVM Layout

Disk → /dev/sdb
 └─ Partition → /dev/sdb1 (type 8e, LVM)
     └─ PV → /dev/sdb1
         └─ VG → vg_data
             ├─ LV → lv_data1 → XFS → /mnt/data1
             └─ LV → lv_data2 → XFS → /mnt/data2