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


Example usage::

  $ 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."
