If you have spent any time managing Linux storage, you know the process. First partition the drive, create a physical volume, build a volume group, carve out a logical volume, format it, and finally mount it. And if you run out of space? Time to carefully resize the filesystem and pray you don't break anything.
Stratis fixes all of these issues. It is Red Hat's answer to ZFS and Btrfs. However, it does not reinvent the wheel. It avoids using custom kernel modules. Instead, it sits on top of trusted, rock-solid Linux tools. These include device-mapper, XFS, and LUKS.
I just spun up a fresh Fedora 44 server to test this from scratch. Here is exactly how to set up, mount, expand, and encrypt a Stratis storage pool step-by-step.
Install and Start the Daemon
Traditional LVM works differently than Stratis. Stratis relies on a background daemon called stratisd. This daemon manages your drives directly. It also communicates with the command-line tool. The daemon must remain active at all times. If the daemon stops running, you cannot manage your storage.
Let's pull down the packages:
sudo dnf install stratisd stratis-cli -y
Next, using the command below, we enable the service so it starts automatically on boot and fire it up right now.
sudo systemctl enable --now stratisd sudo systemctl status stratisd
Create Your First Storage Pool
A Stratis pool is basically a massive storage bucket made up of one or more physical drives.
First, figure out which drive you want to use. I usually run lsblk to see what's attached to my server.
lsblk
Expected Output:

Once you identify your empty drive, create the pool. I'm calling mine mypool.
Warning: Running this command will completely wipe any existing data on that drive.
sudo stratis pool create mypool /dev/sdb
Check your work to make sure the pool is online.
sudo stratis pool list
Carve Out a Filesystem
Now that we have a pool, we need to create a filesystem inside it so we can actually save files.
The best part of Stratis: you don't need to specify a size. Stratis uses thin provisioning. It automatically formats the volume as XFS and lets it grow dynamically as you add files, up to the physical limit of the pool.
Let's create a volume named data_vol:
sudo stratis filesystem create mypool data_vol
Using the command below, verify it's there and grab its device path.
sudo stratis filesystem list
Expected Output:

Mount It and Edit fstab
To use the storage, we just mount it like any normal drive.
sudo mkdir /mnt/data sudo mount /dev/stratis/mypool/data_vol /mnt/data
If you run df -h /mnt/data right now, you will see something different. It reports 1.0T of space, even if your actual drive is only 20 GB. This is not an error — that is just the virtual limit of the thin provisioning. It will consume real disk space as you write to it.
Making it Survive a Reboot
This is the step where most people break their systems. If you just add this drive to /etc/fstab, your server will fail to boot and drop into emergency mode. This happens because the OS will try to mount the drive before the Stratis daemon has started up.
You have to tell systemd to wait for Stratis.
First, get the exact UUID of your new volume by running the command below.
blkid -p /dev/stratis/mypool/data_vol
Now, add your mount entry to /etc/fstab. Notice the x-systemd.requires=stratisd.service flag at the end — that's the key difference. You can append it directly from the terminal like this (just swap in your real UUID).
echo "UUID=your-uuid-here /mnt/data xfs defaults,x-systemd.requires=stratisd.service 0 0" | sudo tee -a /etc/fstab
Expanding the Pool on the Fly
Is your physical space running out? You don't have to resize the XFS filesystem or take the server offline. You just throw another hard drive into the pool and walk away.
If you add a hard disk to your server, the Linux kernel might not see it immediately. Run this quick loop to force a SCSI rescan so the new drive shows up in lsblk.
for host in /sys/class/scsi_host/host*; do echo "- - -" | sudo tee $host/scan; done
Now, add the new drive to your existing pool.
sudo stratis pool add-data mypool /dev/sdc
Run sudo stratis pool list and you will see your pool capacity jump. You're done. No resizing required.
Instant Snapshots
Production and homelab servers both need backups. Stratis can take instant snapshots of your volumes. A snapshot is a clone of your filesystem frozen in time. To take an instant snapshot, run the command below.
sudo stratis filesystem snapshot mypool data_vol data_vol_backup
data_vol_backup will now show up in your filesystem list as an independent volume. You can mount it to /mnt/backup and pull out whatever files you accidentally deleted from the main drive.
Advanced: Encryption
If you are storing sensitive data, Stratis integrates directly with LUKS to encrypt the entire pool. Note: You have to configure this when you create the pool, not after.
First, tell Stratis to capture a passphrase from you into its secure keyring.
sudo stratis key set mypool_key --capture-key
It will prompt you to type and verify a password. Once it has the key, use it to create a brand new encrypted pool on a fresh drive.
sudo stratis pool create --key-desc mypool_key encrypted_pool /dev/sdd
When you list your pools, you will see a Cryptography flag (Cr) next to encrypted_pool. Your data is now fully encrypted at rest.