Please find the latest version of these slides at:
plain, filedrbdsharedfile, rbd, blockdev, diskless/usr/share/ganeti/extstorage/provider1/Every ExtStorage provider should provide the following methods:
The methods are implemented in the corresponding 7 executable scripts, using appliance-specific tools:
# ls -l /usr/share/ganeti/extstorage/provider1 create remove grow attach detach setinfo verify
attach returns a block device path on success
Input via environment variables, e.g. VOL_NAME, VOL_SIZE
extproviderAssuming two appliances visible by a Ganeti cluster and their two ExtStorage providers installed on all Ganeti nodes:
/usr/share/ganeti/extstorage/emc/*
/usr/share/ganeti/extstorage/ibm/*
# gnt-instance add -t ext --disk=0:size=2G,provider=emc
# gnt-instance add -t ext --disk=0:size=2G,provider=emc \
--disk=1:size=1G,provider=emc \
--disk=2:size=10G,provider=ibm
# gnt-instance modify --disk 3:add,size=20G,provider=ibm
# gnt-instance migrate testvm1
# gnt-instance migrate n- nodeX.example.com testvm1
Support for dynamic passing of arbitrary parameters to ExtStorage providers during instance creation/modification per-disk:
# gnt-instance add -t ext --disk=0:size=2G,provider=emc,param1=value1,param2=value2
--disk=1:size=10G,provider=ibm,param3=value3,param4=value4
# gnt-instance modify --disk 2:add,size=3G,provider=emc,param5=value5
The above parameters will be exported to the ExtStorage provider's scripts as environment variables:
EXTP_PARAM1 = str(value1) EXTP_PARAM2 = str(value2) ...
Inspired by gnt-os:
# gnt-storage diagnose # gnt-storage info
man gnt-extstorage-interface
man gnt-storage
man gnt-instance {add,modify,migrate,failover}
Design doc: design-shared-storage.rst
