Jump to: navigation, search

Cinder/HuaweiSDSHypervisorDriver

< Cinder
Revision as of 07:36, 25 June 2014 by Zhangni (talk | contribs) (Deployment)

Add Huawei SDSHypervisor Driver to Cinder

Related blueprints

https://blueprints.launchpad.net/cinder/+spec/huawei-sdshypervisor-driver

Related spec

https://review.openstack.org/#/c/101688/5

Overview

Huawei SDSHypervisor is a software defined storage product, is a software running in host, and virtualizes heterogeneous SAN device to provide virtual block device based user's QoS, while providing advanced features such as snapshot, clone, cache, thin provision, QoS and so on.

The purpose of this blue print is to add Huawei SDSHypervisor Driver to Cinder.

Benefits of this driver

Currently there are many storage devices in user product environment which don't have driver in cinder and 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:

  • Enable cinder to access more storage device without specific cinder storage driver.
  • Better I/O performance using SDSHypervisor cache feature when there is SSD in host.
  • Patch advance feature to storage device. e.g. snapshot, clone, cache, thin provision, QoS

Deployment

Hypervisor SSD.JPG


  • Attach Lun from heterogeneous SAN to host
  • Install SDShypervisor in these host, and config Lun which will be controlled
  • Config and run cinder volume using SDSHypervisor driver
  • Install other openstack service, and use QEMU/KVM as a hypervisor (via libvirt compute driver)

Work Item

Cinder

Add new driver in /cinder/volume/drivers path that uses socket API interact with Huawei SDShypervisor storage., 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

SDShypervisor data panel using private Key value protocal, so add a new connector in cinder/brick/initiator path to realize attach/detach volume, and realize abstract connector methods:

  • connect_volume
  • disconnect_volume

Nova

Also add a new volume driver in nova/virt/libvirt/volume.py file to realize attach/detach volume to qemu-kvm instance, and realize abstract volume dirver methods:

  • connect_volume
  • disconnect_volume