I’m just about done with this release of the ZFS Automatic Snapshot SMF service and have just pushed some changes to the mercurial repository on opensolaris.org.
This is a pretty important release, in terms of fixing stuff that’s been bugging me about the service since I initially released it. But inevitably, with lots of change comes the possibility of lots of bugs – so, I was hoping to get some feedback on how it’s looking before it gets officially released.
So, if you’re feeling brave (that means don’t use this in production yet!) fire up your favourite source code management system (which is hg, right?) and access the mostly-untested ZFS Automatic Snapshot 0.11 Early Access release via:
hg clone ssh://email@example.com/hg/jds/zfs-snapshot
I’m working with Niall & Erwann in the Desktop group here, who have been tasked with DSK-5, to get ZFS Automatic Snapshots on the desktop, and so far, it looks like my code will be providing the back-end service (obviously as well as ZFS :-) so some of the changes are things that make most sense when running this on a desktop or laptop machine.
With that in mind, I’ve not made any changes to my bundled GUI, since it’ll be going away real soon now. However, I’ve done my best to ensure that there’s always ways of turning off the small-system-focused bits, and the service remains backwards-compatible with earlier manifests.
So what’s going to be new in 0.11 ? Well having seen Nils write up his changes in that form (more on that later), I thought I’d have a go at writing a Changelog too – so here’s the annotated Changelog entry so far for 0.11:
Add RBAC support
- the service now runs under a zfssnap role
- service start/stop logs stay under /var/svc/log
- other logs saved to /export/home/zfssnap (and syslog) [ yes, this sucks a bit – better solutions welcome? ]
Add a ‘zfs/interval’ property value ‘none’ which doesn’t use cron Add a cache of svcprops to the method script (good idea Nils!) Add a com.sun:auto-snapshot user property used by all instances,
com.sun:auto-snapshot:$LABEL takes precedence
Remove the seconds field of the snapshot name – it’s not needed (good idea Håkan!) Changed the way // works with recursive snapshots – ignore
snapshot-children, and instead automatically determine when we can take
recursive snapshots based on which datasets have the zfs user properties
Set avoidscrub to false by default (6343667 was fixed in in nv_94) Bugfix from Dan (thanks!)- Volumes are datasets too Automatically snapshot everything by setting com.sun:auto-snapshot=true
on startup. (this gets done on all top level datasets – an existing
property set to false on the top level dataset overrides this)
Check for missed snapshots on startup Clean up shell style a bit Clean up preremove script (I need to make these scripts redundant before we move to IPS, I know) Write this Changelog
One thing that’s missing from this release, is Nils Goroll’s suggested changes about improving the way the system performs scheduling – more details here. I feel that moving away from cron would result in less familiarity in what the service does: if cron is the problem, certainly one solution is running away from it, but wouldn’t it be cool to get cron’s shortcomings fixed instead? Yeah, one of those “ample-free time” problems.
So, without further ado, there’s full documentation in the README – enjoy, and please let me know if you see anything weird – there’s still time to fix it before 2008.11 (and yes, all this despite my day-job being super hectic right now! xVM Server is getting 99% of my time at the moment, so I definitely expect bugs this early access release of zfs-auto-snapshots!)