This episode explains why RAID isn't a backup, designing layered defense with ZFS or btrfs snapshots and remote replication, plus the array reassemble procedure after a partial failure and the correct rebuild ordering.

Back in episode 1 we mentioned a saying we'll keep repeating: RAID is not a backup. Episode 12 proves it and gives you a complete recipe for surviving disasters. RAID protects against one kind of data loss — dead disks — but it doesn't protect against accidental deletion, ransomware, or a burning building.
The solution is layered defense: RAID as the foundation of availability, snapshots for human error, replication for local disasters, and offsite backups for full-scale disasters. Let's break down each layer and how to assemble them.
Think about these three scenarios:
rm -rf /mnt/raid/project — RAID does nothing, the files are permanently gone.All three make the point: RAID keeps hardware running, not data safe from mistakes. A backup is the layer that handles that domain.
A proper backup meets the 3-2-1 rule: three copies of the data, on two different media, with one copy in a different location. RAID can contribute the first copy at the first location, but the other two copies must come from snapshots, replication, and offsite backup.
A snapshot is an instant copy of the data state at one point in time. In ZFS, snapshots are nearly free because they only record block differences:
sudo zfs snapshot tank/data@2026-08-10
sudo zfs list -t snapshotThe zfs snapshot tank/data@2026-08-10 command marks the dataset's state. The zfs list -t snapshot output shows the stored snapshots. btrfs has a similar mechanism with btrfs subvolume snapshot. Snapshots protect against human error — just roll back to the latest snapshot.
Snapshots also fuel replication: sending the data delta to another server. In ZFS, replication uses zfs send and zfs receive:
sudo zfs send tank/data@2026-08-10 | ssh backup-host sudo zfs receive backup/dataThe zfs send command sends the snapshot over ssh, and zfs receive stores it on the other host. This process only sends the blocks that changed since the last snapshot — efficient for data that grows little each day.
The final layer is a copy in a different location. Options include:
restic or rclone.Choose according to your budget and needs. What matters: there's a copy that survives even if one physical location is lost.
When a machine reboots after several disks had issues, the correct recovery order is:
sudo mdadm --detail --scan
sudo mdadm --assemble /dev/md0 /dev/sdb /dev/sdc /dev/sddThe mdadm --assemble command explicitly assembles the array from the available disks. Never jump straight to --force without checking first — forced assemble must only be used when you're confident about which disks are correct.
Once the array is active, follow this order:
--fail, --remove, then --add the replacement./proc/mdstat until 100%.mdadm --detail must show all devices active.while true; do cat /proc/mdstat; sleep 60; doneThe cat /proc/mdstat command in a loop monitors progress until done. After a full [UUU] and a clean state, only then may you add normal workload back.
Warning
The most dangerous move in recovery is using --assemble --force too soon. If two disks fail on a RAID 5, the array can't be safely assembled — only force assemble after careful analysis of which disks are still alive, and preferably when you have a backup ready to restore.
A backup that's never been tested isn't a backup. Schedule periodic restore drills:
sudo zfs rollback -r tank/data@2026-08-10The zfs rollback -r command returns the dataset to the snapshot point. Practice restores on a spare machine, record the time it takes, and measure your RTO (Recovery Time Objective) and RPO (Recovery Point Objective). These numbers become your service contract in a crisis.
Episode 12 made clear that RAID is a foundation, not a substitute for backup. You now know how to build layered defense — ZFS and btrfs snapshots for human error, remote replication for local disasters, offsite backups for full-scale disasters — plus the reassemble procedure and correct rebuild ordering after partial failures.
Key takeaways:
zfs send and zfs receive for remote backups.--force assemble without analysis; follow the correct rebuild order.In the next episode, episode 13, we'll discuss failure detection & monitoring — monitoring disks with smartctl, predicting failures through SMART attributes, and building a monitoring stack with mdadm monitor, node_exporter, and Prometheus plus dashboards. You'll build an early warning radar for storage.