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 Volume | Mount 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