Dataset management à la ZFS
ZzzFS: dataset management à la ZFS
ZzzFS (“snooze FS”) brings a set of ZFS management commands to non-ZFS volumes, turning any directory on a traditional filesystem into a zpool-like object. Using only the Python standard library, ZzzFS can be useful to, for example, test tools that use ZFS functionality on a system lacking real ZFS. Of course, ZzzFS misses all of the low-level features underpinning true ZFS volumes: checksumming, copy-on-write, etc.
Note that this is distinct from the ZFS feature allowing a zpool to be created using a regular file as a vdev. ZzzFS translates commands into move/copy/symlink operations in the original filesystem; it does not manage blocks in a virtual disk.
This is a functional work in progress; don’t trust any important data to it just yet. The test suite covers the following features:
- create/destroy/list “filesystems” and “pools”
- clone/promote, send/receive, rollback, diff snapshots
- get/set/inherit attributes
- pool command history
$ zzzpool create mypool /tmp/pool $ zzzpool list NAME SIZE ALLOC FREE CAP HEALTH ALTROOT mypool - - - - ONLINE - $ zzzfs create mypool/work $ zzzfs create mypool/play $ zzzfs snapshot mypool/work@yesterday $ zzzfs list -t all NAME USED AVAIL REFER MOUNTPOINT mypool - - - /private/tmp/pool/mypool mypool/play - - - /private/tmp/pool/mypool/play mypool/work - - - /private/tmp/pool/mypool/work mypool/work@yesterday - - - - $ zzzfs send mypool/work@yesterday | zzzfs receive mypool/more_work $ zzzpool history History for 'mypool': 2015-01-13.22:32:38 zzzpool create mypool /tmp/pool 2015-01-13.22:32:50 zzzfs create mypool/work 2015-01-13.22:32:53 zzzfs create mypool/play 2015-01-13.22:32:56 zzzfs snapshot mypool/work@yesterday 2015-01-13.22:33:48 zzzfs receive mypool/more_work
For more details on real ZFS command usage, see the Oracle Solaris ZFS Administration Guide (https://docs.oracle.com/cd/E26505_01/pdf/E37384.pdf).
Released under the CDDL v1.1 license. There’s no original ZFS code present, but it’s only appropriate to pair “snooze” with “cuddle.”