Stratis & VDO.
Stratis is RHEL's modern storage management layer β thinly provisioned pools and filesystems, snapshots, all driven by stratisd. VDO adds inline dedupe and compression beneath the filesystem. Both build on the LVM + XFS you already know.
Stratis and VDO animated tutorial. Stratis pools and thinly provisioned XFS filesystems on top, stratis snapshots, and VDO (Virtual Data Optimizer) for inline deduplication and compression. RHCSA EX200 ready.Two modern RHEL storage layers built on what you already know. Stratis orchestrates LVM + XFS into friendly thinly provisioned pools; VDO transparently dedupes and compresses underneath.
- Β·The LVM stacking lesson (thin provisioning concept)
- Β·The filesystems/mounts lesson
- Β·Comfortable as root
Create a Stratis pool and thin XFS filesystem on it, snapshot it, and explain when to layer VDO underneath.
pace: 9 minutes
What Stratis is
Stratis isn't a new filesystem β it orchestrates LVM (for thin pools) + XFS (for the filesystems on top) behind one friendly CLI (`stratis`). You create a POOL from one or more block devices, then carve thinly provisioned FILESYSTEMS out of the pool. Snapshots, growth, and pool expansion are all one-liners. Driven by the stratisd daemon.
$systemctl enable --now stratisd$stratis pool listStratis is "LVM thin + XFS, one CLI". VDO is "dedupe + compression, below your FS". They're independent β use Stratis when you want easier storage management; layer VDO when the workload has heavy duplication.
$systemctl enable --now stratisd$stratis pool create POOL DEV [DEV ...]$stratis pool list$stratis pool add-data POOL DEV$stratis filesystem create POOL FS$stratis filesystem list$stratis filesystem snapshot POOL FS SNAP$stratis filesystem destroy POOL FS$/dev/stratis/POOL/FS$x-systemd.requires=stratisd.service$vdo create --name=N --device=DEV --vdoLogicalSize=1T$mkfs.xfs -K /dev/mapper/N$vdo list / status$vdostats --human-readable$vdo growLogical / growPhysical$vdo remove --name=NWhat does Stratis actually USE under the hood?
You created a Stratis filesystem of 1 TiB on a pool with 100 GiB of backing storage. Is that broken?
What is VDO and where does it sit in the stack?
Which workload is VDO most likely to help?
These aren't graded β they're just for active recall, which is what actually makes the lesson stick.
LVM stacking
Stratis is LVM thin + XFS with a friendlier face. Solidify the LVM stack first and Stratis just clicks into place.
Read this lesson as text6 chapters Β· quiz answers
01What Stratis is
Stratis isn't a new filesystem β it orchestrates LVM (for thin pools) + XFS (for the filesystems on top) behind one friendly CLI (
stratis). You create a POOL from one or more block devices, then carve thinly provisioned FILESYSTEMS out of the pool. Snapshots, growth, and pool expansion are all one-liners. Driven by the stratisd daemon.$ systemctl enable --now stratisdβ the management daemon$ stratis pool listβ no pools yet
02Create a pool
stratis pool create mypool /dev/sdb /dev/sdcmakes a pool that aggregates those devices. The total backing capacity is the sum. Devices are owned by the pool β don't poke at them with parted/mkfs anymore. Add more capacity later withpool add-data.$ stratis pool create mypool /dev/sdb /dev/sdcβ make the pool$ stratis pool listβ see size + usage$ stratis pool add-data mypool /dev/sddβ grow the pool later
03Create thinly provisioned filesystems
stratis filesystem create mypool datacreates an XFS on the pool that LOOKS huge (1 TiB by default) but only consumes pool space as you actually write data. That's thin provisioning. You can carve many such filesystems out of one pool β collectively their virtual sizes can exceed the backing pool, as long as actual usage stays within it. The path is /dev/stratis/mypool/data, ready to mount.$ stratis filesystem create mypool dataβ thin XFS on the pool$ mkdir /data && mount /dev/stratis/mypool/data /dataβ mount as usual$ echo '/dev/stratis/mypool/data /data xfs defaults,x-systemd.requires=stratisd.service 0 0' >> /etc/fstabβ fstab (needs that requires=)
04Snapshots β instant, copy-on-write
stratis filesystem snapshot mypool data data-snapcreates a snapshot of the live filesystem in O(1). It shares blocks with the original; only divergent writes consume new pool space. Perfect for pre-upgrade safety or consistent backup. Mount it like any FS at /dev/stratis/mypool/data-snap.$ stratis filesystem snapshot mypool data data-snapβ instant CoW snapshot$ mount /dev/stratis/mypool/data-snap /mnt/snapβ mount the snapshot$ stratis filesystem destroy mypool data-snapβ delete when done
05VDO β inline dedupe + compression
VDO (Virtual Data Optimizer) sits BELOW the filesystem on a block device. It transparently deduplicates identical blocks and compresses everything before writing to the underlying storage. A 10 TB VDO volume on 4 TB of actual disk can be realistic for VM images or backups (high dedupe). Workflow: vdo create β mkfs β mount. Trade-off: CPU and memory for capacity savings.
$ vdo create --name=vdo1 --device=/dev/sdb --vdoLogicalSize=1Tβ 1 TiB virtual on /dev/sdb$ mkfs.xfs -K /dev/mapper/vdo1β -K skips discards (VDO handles it)$ mount /dev/mapper/vdo1 /vdataβ mount
06Watch the savings
vdostats --human-readableshows the savings ratio β logical (what apps see) vs physical (what's actually on disk). Workloads with lots of duplicate data (VM images, container layers, backups) can hit 5-10Γ savings. Random or already-compressed data (encrypted, JPEGs, video) won't dedupe β VDO is workload-dependent.vdo listandvdo statusfor management.$ vdostats --human-readableβ savings ratio$ vdo listβ your VDO volumes$ vdo statusβ detailed config + stats$ vdo growLogical / growPhysicalβ resize
Quiz β answers
- What does Stratis actually USE under the hood?
- βLVM (for thinly provisioned pools) + XFS (for the filesystems on top), orchestrated by stratisd via the
stratisCLI.Stratis is a layer of orchestration, not a new on-disk format. It uses well-understood components (LVM thin + XFS) under a friendlier UX. That's why an admin who knows LVM and XFS can pick it up quickly. - You created a Stratis filesystem of 1 TiB on a pool with 100 GiB of backing storage. Is that broken?
- βNo β that's the point of thin provisioning. The 1 TiB is virtual; pool space is consumed only as data is actually written. The pool can also be expanded later by adding more devices.Thin = present a larger logical size than physical. Multiple thin FSes can share one pool, with their sums exceeding it, as long as actual usage stays within. Keep an eye on pool usage; if it fills, writes start failing.
- What is VDO and where does it sit in the stack?
- βA BLOCK-LAYER transformer that sits beneath the filesystem on a device. It inline-deduplicates identical blocks and compresses the rest before writing to the underlying disk.VDO is below your filesystem. mkfs runs on the VDO device (/dev/mapper/vdoX), so the FS sees a fat virtual block device while VDO trades CPU and memory to shrink the actual on-disk footprint.
- Which workload is VDO most likely to help?
- βVM disk images and container layers β they often share huge runs of identical blocks, so dedupe ratios of 5-10Γ are achievable.VDO needs duplicate or compressible data to save anything. VM/container imagery is a great fit; encrypted or pre-compressed data is near-incompressible and won't dedupe (high entropy = low ratio).
keep going β these pair well with what you just learned.
SELinux contexts
Why Apache can't read your file. Watch the policy engine decide β and learn the workflow for fixing denials. RHCSA-ready.
Linux boot process
From power button to login prompt. Every stage in the chain β UEFI, GRUB, kernel, initramfs, systemd β with the rescue moves that save you. RHCSA-ready.
LVM stacking
Layer-by-layer build of an LVM stack: disks β PVs β VG β LVs β filesystem. Then extend live and snapshot. RHCSA-ready.