Ganeti extstorage provider for local zfs volumes
http://docs.ganeti.org/ganeti/master/html/man-ganeti-extstorage-interface.html
It also encludes LVM emulation which enable zfs to work as plain disk type.
This allows usage of drbd where one (or both) sides are on zfs, and supports
gnt-backup export and import.
INSTALLATION
On node which will host zfs storage pool
cd /usr/share/ganeti/extstorage/
git clone https://github.com/ffzg/ganeti-extstorage-zfs zfs
cd zfs
vi defaults.sh
Alternative to editing defaults.sh is to create etc/`hostname -s` file
with minimal configuration which just specify pool name (in this case
again hostname -s) and filesystem where new volumes will be created:
echo EXTP_ZFS=`hostname -s`/ffzgvg > etc/`hostname -s`.sh
Run install scripts:
# ls install/
1-enable-ext-template.sh 2-create-log-directory.sh 3-lvm-wrappers.sh
Cron helper can be install under /etc/cron.daily
# ls cron/
daily-block-snapshot purge-log
Overview commands are available (try running them to see output):
# ls bin/
adopt backup ill instance list node
backup and instance are wrappers for running gnt-* commands
with same name on master node
adopt will create new zvol using send/receive to break dependency on origin
(otherwise, removal of origin zvol will also remove new adopted disk
Create test instances:
# ls t/*.sh
t/drbd.sh t/plain.sh t/zfs.sh
Review that instaces have been created:
# ./bin/ill t-
Test ganeti commands after reading them:
# ls t/gnt-*
t/gnt-backup-export.sh t/gnt-instance-modify.sh
DRBD disk replication
Ganeti's extstorage provider doesn't support drbd target. But, lvm emulation
scripts are sufficiant enough to create -t drbd instance or convert plain
(created on zfs thanks to wrappers ;-) to drbd.
KNOWN BUGS for extstorage
- gnt-backup export doesn't work because snapshoot hooks are not available
- gnt-instance move works from somewhere to zfs, but not from zfs to somewhere