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 10TIP: 踩过的坑在配置完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 Liberty Cinder对接商业存储华为S2600Tv1_FC
- 关于Openstack的cinder插件与传统存储的对接
- OpenStack-Newton之 Cinder 存储
- Openstack 多后端配置--详解NFS作为Cinder的后端存储
- OpenStack入门修炼之Cinder服务-->安装并配置一个本地存储节点(18)
- 存储那些事儿(三):OpenStack的块存储Cinder与商业存储的融合
- openstack havana块存储Cinder磁盘加密方法研究
- OpenStack入门修炼之Cinder服务-->使用NFS作为后端存储(19)
- openstack cinder+drbd+nfs实现高可用存储【kilo版】
- OpenStack 存储服务 Cinder存储节点部署LVM(十六)
- openstack controller ha测试环境搭建记录(十四)——配置cinder(存储节点)
- [优化篇]OpenStack的Cinder后端存储技术——NFS
- [OpenStack 存储] Nova,Glance与Cinder 基于Ceph的统一存储方案
- [优化篇]OpenStack的Cinder后端存储技术——GlusterFS(2)
- openstack 管理三十九 - cinder 连接多个 ceph 存储方法
- OpenStackCinder与各种后端存储技术的集成叙述与实践
- [OpenStack 存储] Nova,Glance与Cinder 基于Ceph的统一存储方案
- OpenStack-Icehouse(nova-network)多节点块存储服务Cinder部署
- openstack 对接 NFS 存储
- OpenStack —— 块存储服务Cinder(六)