LVM, LUKS encryption, software RAID, NFS, Btrfs, and storage management on RHEL 10.
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# 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# 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# 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 0Btrfs 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/