✓ Uses Rust 2018 edition
|new 0.1.2||Aug 12, 2019|
|0.1.1||Aug 12, 2019|
|0.1.0||Aug 12, 2019|
#25 in Operating systems
libzetta-rs is a stable interface for programmatic administration of ZFS
Not yet. It won't destroy your pool, but API might change any moment. Wait until 1.0.0. I have a pretty decent roadmap to 1.0.0.
Public API for
zpool interface is almost at the point where I'm going to stabilize it, but until I start work on
zfs portion I don't want to call it stable.
This library mostly focused on FreeBSD support. This should work on any FreeBSD version since 9.2. However, I have no intention on supporting anything other than current releases. Yes, I know FreeBSD is switching to ZOL branch.
Right now it definitely works with
0.7.2 maybe entire
0.7.x branch. Only reason there is Linux support is because there is no free public CI that has FreeBSD executors. Linux support is minimum effort - if I upgrade zfs to the version and suddenly all tests are failing - I'm going to rollback and lock previous version.
ZFS doesn't have stable API at all. There is
libzfs_core which supposed to be it, but it really isn't. While
libzfs_core is somewhat stable
libnvpair used in it isn't and
libnv isn't available on Linux. I might embed portable
libnv. Now the tricky part —
libzfs_core is just for zfs, there is not
libzpool_core which means you either have to rely on unstable (in terms of API)
libzpool or use
zpool(8). I decided to use
zpool(8) because that's a recommended way of doing it.
Note that integration tests do a lot of zpool and zfs operations on live system. I recommend spin up a VM and use
run_tests.sh to run integration tests in side that VM. Tests also take a lot of disk space because each vdev is at least 64mb file.
|Create||Destroy||Get Properties||Set Properties||Scrub||Export||Import||List Available||Read Status||Add vdev||Replace Disk|
- Reads the status, but api isn't stable and does poor job at reporting scrubbing status.
Literally nothing works.