Storage

LVM, LUKS encryption, software RAID, NFS, Btrfs, and storage management on RHEL 10.

LVM (Logical Volume Manager)

LVM provides flexible storage management with volume groups, logical volumes, and snapshots.

# Create physical volume
sudo pvcreate /dev/sdb

# Create volume group
sudo vgcreate vg_data /dev/sdb

# Create logical volume (80% of VG)
sudo lvcreate -l 100%FREE -n lv_data vg_data

# Format and mount
sudo mkfs.xfs /dev/vg_data/lv_data
sudo mkdir -p /data
sudo mount /dev/vg_data/lv_data /data

# Extend a logical volume
sudo lvextend -l +100%FREE /dev/vg_data/lv_data
sudo xfs_growfs /data

# LVM snapshot
sudo lvcreate -s -n lv_data_snap -L 10G /dev/vg_data/lv_data

LUKS Encryption

# Encrypt a block device
sudo cryptsetup luksFormat /dev/sdc
sudo cryptsetup open /dev/sdc encrypted_data

# Format inside the encrypted volume
sudo mkfs.xfs /dev/mapper/encrypted_data

# Mount
sudo mount /dev/mapper/encrypted_data /mnt/data

# Persistent entry in /etc/crypttab
# encrypted_data /dev/disk/by-uuid/<luks-uuid> none luks

# Change passphrase
sudo cryptsetup luksChangeKey /dev/sdc

# Add an additional key
sudo cryptsetup luksAddKey /dev/sdc

Software RAID

# Install mdadm
sudo dnf install -y mdadm

# Create RAID-1 (mirror)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# Format and mount
sudo mkfs.xfs /dev/md0
sudo mkdir -p /raid
sudo mount /dev/md0 /raid

# Save config
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

# Check status
cat /proc/mdstat

# Add a spare drive
sudo mdadm --add /dev/md0 /dev/sdd

# Replace a failed drive
sudo mdadm --manage /dev/md0 --fail /dev/sdc
sudo mdadm --manage /dev/md0 --remove /dev/sdc
sudo mdadm --manage /dev/md0 --add /dev/sde

NFS

# Server side
sudo dnf install -y nfs-utils
sudo mkdir -p /exports/share
echo '/exports/share 10.0.0.0/24(rw,sync,root_squash)' | sudo tee -a /etc/exports
sudo systemctl enable --now nfs-server

# Client side
sudo dnf install -y nfs-utils
sudo mkdir -p /mnt/nfs
sudo mount 10.0.0.1:/exports/share /mnt/nfs

# Auto-mount via /etc/fstab
# 10.0.0.1:/exports/share /mnt/nfs nfs defaults,_netdev 0 0

Btrfs

Btrfs is not supported on RHEL 10. The btrfs-progs package is available from EPEL, but Red Hat does not support Btrfs as a filesystem on RHEL. Use at your own risk..

# Install prerequisites
sudo dnf install -y epel-release btrfs-progs

# Format as Btrfs
sudo mkfs.btrfs -d single /dev/sdb

# Mount with compression
sudo mount -o compress=zstd /dev/sdb /mnt/btrfs

# Subvolumes
sudo btrfs subvolume create /mnt/btrfs/home
sudo btrfs subvolume list /mnt/btrfs

# Snapshot
sudo btrfs subvolume snapshot /mnt/btrfs/home /mnt/btrfs/home_snap

# Send/receive (remote backup)
sudo btrfs send /mnt/btrfs/home_snap | sudo btrfs receive /mnt/backup/