您的位置:首页 > 运维架构

Openstack之cinder对接华为FCV3存储及cinder多后端

2017-01-22 11:32 871 查看

前言

在以往搭建openstack块存储cinder组件与fc存储对接时,我常采用了节点挂载fc盘,然后再以lvm、filesystem或ceph osd的方式来对接cinder,但这样有着不可避免的性能损耗,其实Openstack中已经集成主流存储厂家的FCDriver,可以让cinder与存储底层对接,得到更高以及稳定的性能表现。
此文介绍了在Mitaka版本对接华为OceanStor 5800V3的配置步骤以及踩过坑~首发:blog.bobozhu.cn

环境准备

硬件环境

华为OceanStor V3 Fcsan存储,光纤交换机。

带HBA的服务器

软件环境

存储上配置管理ip,建好所需要对接的pool,注意只需要池,其他的主机组、LUN组,添加主机什么的都不要,只要池。

光纤交换机做好zone,确保每台主机都和存储都能连接。

一套openstack平台,可以不装multipath。

Cinder配置

在有文档的情况下,当然要跟着文档走,官网上已经要cinder对接HUAWEI V3的doc,但是版本比较老才到liberty,V3的diver还是用HuaweiV3FCDriver,登录到github下载最新华为openstack_cinder_driver配置文档 ,可以看到已经对应到了newton版,而且V3的driver已经改成了HuaweiFCDriver。在/etc/cinder目录创建存储配置文件,格式为XML,名字随便设,如cinder_huawei_conf.xml

<?xml version='1.0' encoding='UTF-8'?>
<config>
<Storage>
<Product>V3</Product>
<Protocol>FC</Protocol>
<RestURL>https://x.x.x.x:8088/deviceManager/rest/</RestURL>
<UserName>xxx</UserName>
<UserPassword>xxx</UserPassword>
</Storage>
<LUN>
<LUNType>xxx</LUNType>
<WriteType>xxx</WriteType>
<MirrorSwitch>xxx</MirrorSwitch>
<LUNcopyWaitInterval>xxx</LUNcopyWaitInterval>
<Timeout>432000</Timeout>
<StoragePool>xxx;xxx;xxx</StoragePool>
</LUN>
<Host OSType="Linux" HostIP="x.x.x.x, x.x.x.x" />
</config>
注意:这里面有几个强制参数,Product、Protocol、RestURL,Username、Userpassword、StoragePool,产品和协议当然就是V3和FC了,resturl是华为开放的restful链接,基本上就是上面的x.x.x改成管理ip即可,注意大小写,正常在浏览器打开会返回timeout。用户名密码华为默认是admin,Huawei12#$(通用密码)。StoragePool可以建多个,通过分号隔开,但这样的多个池就在一个cinder后端了。HostIP为nova-compute对应的IP。

注意此配置文件权限要为cinder.cinder,但是在实际docker容器中为root好像也没关系。。。

在cinder.conf中添加

[V3_FC]
volume_driver = cinder.volume.drivers.huawei.huawei_driver.HuaweiFCDriver
cinder_huawei_conf_file = /etc/cinder/cinder_huawei_conf.xml
volume_backend_name = V3_FC

##在default段中,添加参数
[DEFAULT]
...
enabled_backends=V3_FC
到此,重启cinder-volume服务,使用cinder service-list命令查看到V3_FC状态为up就可以用了~

cinder多后端开启

在生产环境中可能有多套存储对接,如ceph加FCSan、或者多个FCsan池。Ceph加FCSan就很简单,只需要在cinder.conf中的backends参数添加名字和添加存储部分即可,如添加ceph的后端

[DEFAULT]
...
enabled_backends=V3_FC,rbd-1

[rbd-1]
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_pool = volumes
volume_backend_name = rbd-1
volume_driver = cinder.volume.drivers.rbd.RBDDriver
再多加FCSan,重复上面的对接FCsan步骤即可。

要注意,在有多个cinder后端时要创建卷类型并关联后端,这样在创建卷的时候就可以选择自己想要的池。

#> cinder type-create FC_V3
#> cinder type-key FC_V3 set volume_backend_name=V3_FC
#> cinder type-create rbd1
#> cinder type-key rbd1 set volume_backend_name=rbd-1
到此,重启cinder服务就可以创建卷啦~
#> cinder create-volume --volume-type V3_FC  --display_name FC_VOLUME 10
TIP: 踩过的坑在配置完cinder对接之后,重启cinder服务总是报失败,日志中有认证失败的400的报错“[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed”,这是由于本机没有存储的ca证书导致,可以通过手动下载然后再rest_client.py中指定路径,也可以使用stackflow中所说的禁忌大法,直接去除ssl验证,我觉得可行~~

打开/usr/lib/python2.7/site-packages/cinder/volume/drivers/huawei/rest_client.py,添加
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
在对接成功后,创建了云硬盘,但在attach给虚拟机的时候报错”No FC initiator can be added to host”,当时找华为的人半天也说不清楚,问云的就说还没测试过mitaka版。。查了下fujitsu的存储配置文档才知道,存储对接是只需要创建pool,其他的都不要创建,看下华为存储,发现华为的人什么主机组,lun mapping都帮我们建好了。。

最后,还有一个遗留问题,在glance对接cinder的时候,上传镜像会报“ ‘NoneType’ object has no attribute ‘Client’”,看了下代码是在import 某个client V3的时候失败了,时间有限还没来及看。。忘了是哪个client了,也不知道是不是跟多cinder后端有关。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  华为 Openstack cinder