Please check https://zrepl.github.io/stable/changelog.html for a full list of changes.
Highlights
- Resumable Send & Recv Support No knobs required, automatically used where supported.
- Encrypted Send & Recv Support for OpenZFS native encryption, configurable at the job level, i.e., for all filesystems a job is responsible for.
- Replication Guarantees Automatic use of ZFS holds and bookmarks to protect a replicated filesystem from losing synchronization between sender and receiver. By default, zrepl guarantees that incremental replication will always be possible and interrupted steps will always be resumable.
We highly recommend studying the overview section of the configuration chapter to understand how zrepl replication works.
Important Note: Go 1.15 changed the default TLS validation policy to require Subject Alternative Names (SAN) in certificates.
The self-signed certs generated with the openssl commands that we provided in prior versions of the zrepl docs will most likely not work properly.
If you encounter certificate validation errors regarding SAN and wish to continue to use your old certificates, start the zrepl daemon with env var GODEBUG=x509ignoreCN=0
.
Alternatively, generate new certificates with SANs (see both options int the TLS transport docs ).
New Users
- We provide two quick-start guides for different usage scenarios: server-to-server continuous backup, and workstation-to-external-disk backup.
Upgrading
This release has been in development and testing for more than half a year now.
The code for the major features has been running on our developers' production systems as well as several test systems for at least two months.
In order to avoid surprises when updating your systems, we recommend the following steps:
- Check that your TLS certificates contain Subject Alternative Name fields or re-generate your TLS certs
- Read the Changelog
- Study the overview section of the configuration chapter to understand how zrepl replication works.
- Download & run the
platformtest
binary published with this release.
The platform tests make sure that zrepl's assumptions about your version of OpenZFS will hold at runtime.sudo ./platformtest-linux-amd64 \ -imagepath /tmp/zreplplatformtest.img \ -mountpoint /tmp/zreplplatformtest \ -poolname zreplplatformtest
- The config format was changed in a backward-compatible way except for more restrictions on job names.
It shouldn't be necessary but if you want, download the 0.3 binary and runzrepl-v0.3.0 configcheck
.
Exit status 0 and no output is good news! - Deploy the update to all of your systems at once and restart all daemons.
(The RPC protocol version was bumped, zrepl 0.3 will not communicate with earlier versions) - Let replication run for a few weeks.
- Then run the
zrepl migration
command mentioned in the changelog.
Testing
If you want to test zrepl 0.3 more thoroughly before deploying it to production, we recommend stressing it in the following ways:
- Try the replication cursor migration mentioned in the update..
- Play through the two quick-start guides.
- Play with encrypted replication, in particular initial replication with many datasets.
- After initial replication of all filesystems succeeded, extend the
filesystems
filter to include another filesystem that is a child dataset of an alread-replicated filesystem. Kick-off replication again and see what happens and whether it meets your expected behavior.
- After initial replication of all filesystems succeeded, extend the
- Try to induce errors during replication. zrepl guarantees that sender and receiver never get out-of-sync by network disruption, unplugging of the remote pool, etc. Out-of-sync means that incremental replication is no longer possible.
- Run the platformtests on your platform. Read the Makefile to learn how to do that.
Please report any unexpected behavior as an issue, and do not forget to mention that you are running the release-candidate.
Donations
zrepl is a spare-time project but nonetheless requires significant development and maintenance effort.
Please consider donating to support future development. Thank you!
Binary Releases
Binaries were produced with the following docker container:
sudo docker push problame/zrepl_build:v0.3.0
v0.3.0: digest: sha256:a42d3f02e895048ac176382538d8510af5edbc22a09dadbef1476f6a02a1ab75 size: 4098
Debian Packages
The Debian repositories will be updated shortly have been updated, using the same binaries attached to this release.
Changes since -rc2
e239d6f
build: make platformtest-* usable0bbe2be
docs: prune: add prune interval visualisationfa4e048
readme: fix typo4f9f21f
logger: fix go-1.15-discovered conversion from int to string480176b
rpc/dataconn: fix go1.15-discovered recursive Error() method impl1190c0f
docs: supporters: update720a284
dist/grafana: fix endpoint abstractions cache metric panel83fdffb
replication: prometheus metric for number of failed replications in last attempt