ZFS encryption recovery: lastvet-imaging¶
Status: Operational runbook (August 2026). Canonical copy lives in git; mirror on the Proxmox host at /root/README-zfs-recovery.md for rescue when git is unavailable.
Encrypted dataset¶
| Property | Value |
|---|---|
| Pool | tank-bulk |
| Encrypted parent | tank-bulk/encrypted-lastvet-imaging |
| Encryption | aes-256-gcm |
| Keyformat | raw (32 bytes) |
| Keylocation | file:///etc/zfs/lastvet-imaging.key |
Auto-unlock¶
Handled by /etc/systemd/system/zfs-load-key-all.service (runs zfs load-key -a at boot, after zfs-import.target, before zfs-mount.service and zfs-volumes.target).
Recovery from lost /etc/zfs/lastvet-imaging.key¶
The key backup is in Bitwarden Secrets Manager, lastvet project:
| Field | Value |
|---|---|
| Secret name | LASTVET_R940_ZFS_IMAGING_KEY |
| Format | base64-encoded 32 bytes |
Restore procedure¶
- On this host or any rescue system with access to Bitwarden and the ZFS pool:
ssh <bws-configured-host> \
'bws secret list | jq -r ".[] | select(.key == \"LASTVET_R940_ZFS_IMAGING_KEY\") | .value"' \
| base64 -d | sudo tee /etc/zfs/lastvet-imaging.key >/dev/null
sudo chmod 400 /etc/zfs/lastvet-imaging.key
sudo chown root:root /etc/zfs/lastvet-imaging.key
- Load the key and mount:
- On next boot,
zfs-load-key-all.servicepicks up the key file automatically.
Recovery if hypervisor is destroyed¶
- Import the pool on a new Proxmox host (physical drives attached):
-
Encrypted datasets show
keystatus=unavailableuntil the key file is restored (procedure above). -
Re-create
zfs-load-key-all.serviceand any MinIO / VM mount units per R940 platform architecture and LastVet migration plan.
Related¶
- Machine BWS bootstrap:
../../scripts/bootstrap-bws-machine.sh - Imaging stack (MinIO + envelope encryption):
../architecture/LASTVET_MIGRATION_PLAN.md