ZFS Snapshots, Clones, & Replication
1. ZFS Snapshots
A Snapshot is a read-only point-in-time copy of a ZFS dataset. Because ZFS is a Copy-on-Write (CoW) Filesystems, creating a snapshot takes milliseconds and consumes zero additional storage initially.
- Space Consumption: A snapshot only consumes space as blocks in the active dataset are modified or deleted.
- Hidden Directory: Accessible via
.zfs/snapshot/<name>/for simple file-level recovery. - Command:
zfs snapshot pool/dataset@2026-09-03-backup
2. ZFS Clones
A Clone is a writable copy of a dataset spawned directly from a snapshot.
- Just like snapshots, clones initially consume zero space.
- They are ideal for spinning up test databases, ephemeral build environments, or virtual machine templates.
- Command:
zfs clone pool/dataset@snap pool/test-clone
3. ZFS Send & Receive (Stream Replication)
ZFS provides native serialized stream replication at the block level:
- Full Backup:
zfs send pool/data@snap1 | zfs recv remote-pool/backup - Incremental Backup: Only sends blocks that changed between two snapshots:
zfs send -i pool/data@snap1 pool/data@snap2 | ssh remote_host zfs recv backup-pool/data - Encrypted Replication (Raw Send): Transmits encrypted datasets without needing decryption keys on the backup server (
zfs send -w).