Overview
This release introduces significant new features and fixes, including the Mount Manager and the Difference Engine for efficiently computing changes between two snapshot sets, or the system root file system and a snapshot set. Fixes include Stratis plugin performance enhancements and bug fixes for lvm2 device callouts.
Users should upgrade to v0.6.0 as soon as possible to take advantage of these enhancements.
Notes
- It is now possible to mount individual snapshot sets and interact with them
using the
snapset {mount,umount},snapset exec, andsnapset shellcommands. Snapshot sets are mounted under/run/snapm/mounts. - Comprehensive file system comparison is now available with the
snapset diffandsnapset diffreportcommands. Seesnapm(8)and the user guide for more information. - The
snapm.fsdiffAPI is considered unstable and may be subject to change in a future release. - The
snapset diff--output-format=jsonJSON schema is also potentially subject to change and will be formalised in a future release. - The
snapset diff/snapset diffreportcommand syntax is stable but output and formatting may change in future releases. - Future releases may include new content differs for specific file types and more comprehensive file type detection when libmagic is disabled.
- Generating content diffs of large file system trees with many content changes
may consume large amounts of memory:
snapmwill refuse to diff trees ifVmRSSexceeds 33% of system memory after walking the filesystem. Caching is disabled ifVmRSSexceeds 60% of system memory after computing diffs.
What's Changed
- lvm2: Fix "no device" case for _is_lvm_device() and avoid no provider test if /boot is not a mount point by @bmr-cymru in #589
- Add mount manager by @bmr-cymru in #541
- snapm: fix renaming of snapshot sets with boot entries by @bmr-cymru in #591
- schedule: fix timeline garbage collection by @bmr-cymru in #596
- schedule: fix TIMELINE policy retention indexing when
keep_x > len(x)by @bmr-cymru in #607 - stratis: re-use initial DBus query for StratisSnapshot cache by @bmr-cymru in #615
- container_tests: fix GcPolicyParamsTimeline.evaluate() tests edge case by @bmr-cymru in #628
- Clean up and enhance progress implementation by @bmr-cymru in #646
- doc: add missing snapm.manager._mounts to Sphinx docs by @bmr-cymru in #661
- Fix progress message overflow, bar width, and BrokenPipeError handling by @bmr-cymru in #662
- progress: clean up Progress and add Throbber classes by @bmr-cymru in #675
- progress: Fix
Throbberno_clearbug and add styles by @bmr-cymru in #679 - mounts: fix incorrect SnapshotSet instead of name in name_map by @bmr-cymru in #684
- snapm: add fsdiff snapshot set comparison facility by @bmr-cymru in #620
- progress: cleanups and log integration by @bmr-cymru in #698
- snapm: implement snapshot set comparison UI (snapm snapset diff) by @bmr-cymru in #707
- snapm: address v0.6.0 feature/fix release blockers by @bmr-cymru in #759
- snapm: fix "Computing diffs" progress bar flicker and at move detector progress by @bmr-cymru in #775
- doc: add missing links, summary format and clarify defaults for output formats by @bmr-cymru in #779
- fsdiff: catch EOFError on truncated cache file by @bmr-cymru in #782
- fsdiff: move detector may mis-detect identical files as moves by @bmr-cymru in #784
- fsdiff: optimize cache writing and add progress reporting by @bmr-cymru in #791
- fsdiff: implement best-effort file type detection and "always exclude" paths by @bmr-cymru in #810
Known issues
There is one known issue for this release. Please see the wiki pages for more details, status, and workarounds:
This will be addressed in a future release.
Full Changelog: v0.5.2...v0.6.0