Skip to content

v1.12.0

Choose a tag to compare

@whoschek whoschek released this 17 Sep 19:42
· 876 commits to main since this release
  • [bzfs_jobrunner] Added ability to bzfs_jobrunner to replicate across a fleet of N source hosts and M destination hosts, using the same single shared jobconfig script. For example, this simplifies the deployment of an efficient geo-replicated backup service where each of the M destination hosts is located in a separate geographic region and pulls replicas from (the same set of) N source hosts. It also simplifies low latency replication from a primary to a secondary or to M read replicas, or backup to removable drives, etc.
  • [bzfs_jobrunner] Added example for how to force the use of a separate destination root dataset per source host.
  • [bzfs_jobrunner] Added name of localhost to log file name suffix.
  • [bzfs_jobrunner] Also log subjobs that were skipped (because a prior subjob failed).
  • [bzfs_jobrunner] Added --jobrunner-dryrun and --jobrunner-log-level CLI options.
  • [bzfs_jobrunner] Added --jitter CLI option to randomize job start time and host order to avoid potential thundering herd problems in large distributed systems.
  • [bzfs_jobrunner] Added timeout parameter.
  • [bzfs_jobrunner] Added option to customize number of cycles in monitor_snapshot_plan.
  • [bzfs_jobrunner] Added '[bzfs_jobrunner]' tag to log messages.
  • [bzfs_jobrunner] Added more input validation.
  • [bzfs_jobrunner] Added --ssh-{src|dst}-port and --ssh-{src|dst}-config-file CLI options.
  • [bzfs_jobrunner] Replaced the --jobid CLI option with --job-run and added the (required) --job-id CLI option, which is forwarded to bzfs. The old --jobid option will continue to work as-is for now, in deprecated status, but the old name will be completely removed in a future release.
  • [bzfs_jobrunner] There's no need anymore to specify an argument to --replicate. For the time being the corresponding mode argument remains available in deprecated status but is actually ignored. The argument will be removed in a future release.
  • [bzfs_jobrunner] Renamed --src-user and --dst-user to --ssh-src-user and --ssh-dst-user. The old names will continue to work as-is for now, in deprecated status, but the old names will be completely removed in a future release.
  • [bzfs_jobrunner] Promoted bzfs_jobrunner from work-in-progress to stable status.
  • [bzfs] Fixed: Error "zfs CLI is not available on dst host: localhost" if using pull-push mode with dummy dataset.
  • [bzfs] Fixed: Use uid instead of euid in line with ssh convention.
  • [bzfs] Promoted --zfs-recv-o-* and --zfs-recv-x-* options to stable state.
  • [bzfs] Find latest common snapshot now even among non-selected snapshots.
  • [bzfs] Also support --delete-dst-snapshots-except if source is not a dummy.
  • [bzfs] Replaced --create-src-snapshots-enable-snapshots-changed-cache CLI option with --cache-snapshots. The old flag will remain available in deprecated state for the time being (yet has no effect anymore), and will be removed in a future release.
  • [bzfs] Fixed --cache-snapshots such that it now simply works.
  • [bzfs] [perf] Made --cache-snapshots also boost the performance of replication and --monitor-snapshots.
  • [bzfs] [perf] --cache-snapshots: No need to require the extensible_dataset ZFS feature to enable caching.
  • [bzfs] Replaced the --no-create-bookmarks CLI option with --create-bookmarks=none and added --create-bookmarks=hourly (the default), --create-bookmarks=minutely, --create-bookmarks=secondly and --create-bookmarks=all. The old --no-create-bookmarks will continue to work as-is for now, in deprecated status, but the old name will be completely removed in a future release.
  • [bzfs] Log more detailed diagnostics on --monitor-snapshots.
  • [bzfs] Added a bash completion script such that typing bzfs SPACE TAB or bzfs_jobrunner TAB will auto-complete all flags.
  • [bzfs] [perf] Auto-disable mbuffer and compression-on-the-wire if replicating over the loopback address.
  • [bzfs] [perf] Detect ZFS features and system capabilities on src+dst in parallel.
  • [bzfs] [perf] Create bookmarks in parallel.
  • [bzfs] Fixed progress reporting when using 'pv' with French locale and other international locales.
  • [bzfs] On SIGTERM, send signal also to descendant processes to also terminate descendants.
  • [bzfs] [security] Added --preserve-properties CLI option which preserves the current value of ZFS properties with the given names on the destination datasets on replication.
  • [bzfs] [security] Nomore include --props in zfs send command by default; instead the new default is to merely copy a whitelist of safe dataset properties (if locally set) from src dataset to dst dataset when doing a 'full send', via new defaults for --zfs-recv-o-include-regex and --zfs-recv-o-include-targets. If you'd like to continue to use the old behavior, manually set --zfs-send-program-opts="--props --raw --compressed" and --zfs-recv-o-include-regex (without any regex) and -zfs-recv-o-targets=full+incremental.
  • [bzfs] [security] Removed CLI options --ssh-{src|dst}-private-key, --ssh-{src|dst}-extra-opt(s), as it is safer to specify these options via --ssh-{src|dst}-config-file in the ssh client config file.
  • [bzfs] [security] Create lock files in a private, non-world-writable directory, not in the system tmp dir.
  • [bzfs] [security] Enhanced validation of CLI options.
  • [bzfs] [security] Tightly constrain name of helper programs.
  • [bzfs] [security] Refuse to follow symlinks.
  • [bzfs] [security] Only give permissions to access log dirs to the Unix user (not the Unix group).
  • [bzfs] [security] To help with debugging ssh issues, enable ssh -v mode when using bzfs -v -v -v mode.
  • [bzfs] [security] Capped max number of threads to help guard against DoS.
  • Added Ask DeepWiki link to an AI that can answer questions about the bzfs codebase.
  • Added instructions for AI Agents.
  • Use standard python module imports throughout to improve ease of use of the (refactored) codebase. Installation via pip remains unchanged. Optional system installation from the git repo is now done by adding symlinks to the startup shell script, like so.
  • Added script to easily run tests on remote host.
  • Run nightly tests also on zfs-2.2.8 and zfs-2.3.4
  • Run nightly tests also on FreeBSD-14.3
  • For the full list of changes, see v1.11.0...v1.12.0