ZnapZend is used to back up the NFS ZFS dataset from our NFS server to Albus. It can also be used to back up other ZFS datasets on other hosts, but at the time of writing NFS is the only thing being backed up this way.
ZnapZend runs on the client and sends backups to Albus over SSH using
zfs send | zfs receive piping.
The backup strategy can be viewed in the NixOS configuration.
Adding Another Backup
There is not much manual configuration to add a host to the ZnapZend backups.
- Create an SSH key for the root user with no passphrase on the host you want to send the backups from. Use
ssh-keygen -t ed25519.
- Add this new SSH public key to the rbbackup user's authorized keys on Albus.
- Try SSHing to
email@example.com load the host key and test the passwordless authentication.
- Import the znapzend service config
on the sending host and configure
redbrick.znapzendDestDataset. Then apply the config. NOTE The
DestDatasetmust be unique across all configured backups/servers.
Znapzend runs at the top of every hour to make backups. You can watch the progress with
journalctl -fu znapzend.service.
Failures are usually caused by incorrect SSH configuration, so make sure that passwordless auth using the sending host's
root SSH key is working.
Rolling Back NFS
If the NFS server is online and functional, you do not need to involve Albus to roll back changes, as all the snapshots are kept on Icarus too.
- Find the snapshot you want to restore with zfs list -t snapshot.
- Run zfs rollback $snapshotname.
That's it! These instructions obviously work for backups other than NFS too, should any ever exist.
Restoring NFS from a backup
If the NFS server has died or you are creating a copy of it, here's how to pull the dataset from Albus,
- On Albus, find the snapshot you want to restore with
zfs list -t snapshot.
- Open a screen/tmux, and copy the snapshot to a dataset in your target ZFS pool with
ssh albus zfs send -vRLec $snapshotname | zfs receive $newpool/$datasetname.