
Please find the latest version of these slides at:
plain
, file
drbd
sharedfile
, 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
ext
provider
Assuming 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