Include the URL of your launchpad blueprint:
This proposal is to add Huawei SDSHypervisor driver to cinder.
Huawei SDSHypervisor is a storage virtualization solution, is a software running in host, just focus on the data plane, the goal is to facilitate the reuse of customer’s existing old and low-end devices. SDSHypervisor does not interact with the storage device in control plane, such as create volume, create snapshot, do not need third-party device manufacturers to develop any driver. Administrator just attaches Lun to the hypervisor node as hypervisor storage entity and hypervisor will provide virtual volume based user’s QoS and patch advance feature to these Lun such as snapshot, link clone, cache, thin provision and so on.
The purpose of this blue print is to add Huawei SDSHypervisor Driver to Cinder.
Currently there are many heterogeneous storage devices in user product environment which is low-level device without advance feature, e.g. snapshot, clone, cache, thin provision, QoS. So adding the SDShypervisor driver will bring the following advantages: * Better I/O performance using SDSHypervisor cache feature when there is SSD in host. * Facilitate the reuse of customer’s existing old and low-end devices, patch advance feature to these device via SDSHypervisor, e.g. snapshot, clone, cache, thin provision, QoS * Help customer use Openstack build his cloud OS. For Cinder, we can’t allow driver to unlimited expand. For manufacturers, they may not want to spend more time to develop cinder driver for these obsolete and not be maintained devices. But in the customer’s environment there are such devices which need to be accessed to openstack, in this situation customers can access these devices to hypervisor, indirect access to Cinder, use Openstack build his cloud OS.
Currently, user can’t access Huawei SDShypervisor by Openstack Cinder.
We will add a new Cinder driver that uses socket API interact with Huawei SDShypervisor storage. SDShypervisor data panel using private Key value protocal, so we also add a new connector to realize attach/detach volume.
The following diagram shows the command and data paths.
+------------------+ | | | Cinder + | | Cinder Volume | | | | | +------------------+ | | | | | | | | +---------------+-------+ +----+------------------+ | | | | + | | | | SDShypervisor | | SDShypervisor Driver | | connector | | | | | | | +-----------------------+ +-----------------------+ | | | | | | CLI Socket API | | | | | | +--+-----------+---+ | | | | | SDShypervisor | | storeage | | | +------------------+
Add new driver in /cinder/volume/drivers path, and realize cinder driver minimum features: * Volume Create/Delete * Volume Attach/Detach * Snapshot Create/Delete * Create Volume from Snapshot * Get Volume Stats * Copy Image to Volume * Copy Volume to Image * Clone Volume * Extend Volume
Add new connector in cinder/brick/initiator path, and realize abstract connector methods: * connect_volume * disconnect_volume
User will be able to use Huawei SDSHypervisor with Cinder.
Realize Cinder driver minimum features using socket API. Realize new connector using CLI. Add unit test code for Huawei SDShypervisor cinder driver and connector.
Because Huawei SDShypervisor data panel using private Key-Value protocal, we will create a new libvirt volume driver in Nova to realize attach/detach volume to instance. Nova BP page is https://blueprints.launchpad.net/nova/+spec/huawei-sdshypervisor-volume-driver
3rd party continuous integration will be done for Huawei SDSHypervisor Driver.
The CinderSupportMatrix table and Block storage manual should be updated to add Huawei SDShypervisor.