github zrepl/zrepl v0.3.0

latest releases: v0.6.1, v0.6.0, v0.5.0...
3 years ago

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.
    sudo ./platformtest-linux-amd64 \
      -imagepath /tmp/zreplplatformtest.img \
      -mountpoint /tmp/zreplplatformtest \
      -poolname zreplplatformtest
    
    The platform tests make sure that zrepl's assumptions about your version of OpenZFS will hold at runtime.
    • Post-release, we identified in #358 that the integration tests for incremental replication are flaky if the zfs commands run very fast (e.g. if no other pool is imported). The failures do not affect the zrepl daemon's operation and can be ignored if they are the same as reported in #358.
  • 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.
  • 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!

Donate via Patreon Donate via GitHub Sponsors Donate via Liberapay Donate via PayPal

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-* usable
  • 0bbe2be docs: prune: add prune interval visualisation
  • fa4e048 readme: fix typo
  • 4f9f21f logger: fix go-1.15-discovered conversion from int to string
  • 480176b rpc/dataconn: fix go1.15-discovered recursive Error() method impl
  • 1190c0f docs: supporters: update
  • 720a284 dist/grafana: fix endpoint abstractions cache metric panel
  • 83fdffb replication: prometheus metric for number of failed replications in last attempt

Don't miss a new zrepl release

NewReleases is sending notifications on new releases.