openstack的Cinder接入FC SAN存储的一些疑问?

openstack的Cinder接入FC SAN存储的一些疑问?
Cinder有统一管理各种FC SAN存储的能力。
比如在open stack比较活跃的存储厂商,Netapp,EMC,HP,IBM和华为,都开发了各自的驱动,支持对接到Openstack。

Cinder默认是给VM提供块存储的, 但是能不能用Cinder直接给物理机提供块存储,直接在Linux物理机上,提供一个mount point,使用LVM给物理机挂载由Cinder管理的FC块存储。
所以有很多疑问,具体如下:

  1. 比如Cinder的volume_driver选用huawei的HuaweiFCDriver,使用Cinder创建一个volume,如何将这个volume,attach到一台Linux的物理机上,并且利用LVM卷管理,mount到指定的mount point,比如/app/lun01?
  2. 要实现1中的功能,这台Linux物理机,最少需要安装openstack的什么组件,只安装nova-compute service可以吗? 不需要BMS的Ironic组件吧?
  3. Cinder的FC ZomeManager,可以支持多fabric吗? 怎样配置多fabric的cinder.conf 文件?怎样给多个fabric配置IP、用户和密码,因为我在官方文档中,只看到了下面的示例:
    [fc-zone-manager]
    enable_unsupported_driver = False
    fc_fabric_names = None
    fc_san_lookup_service = cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService
    zone_driver = cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver
    zoning_policy = initiator-target

fc_fabric_address = <> (String) Management IP of fabric.
fc_fabric_password = <> (String) Password for user.
fc_fabric_port = 22 (Port(min=0, max=65535)) Connecting port
fc_fabric_ssh_cert_path = <> (String) Local SSH certificate Path.
fc_fabric_user = <> (String) Fabric user ID.
fc_southbound_protocol = REST_HTTP
fc_virtual_fabric_id = None (String) Virtual Fabric ID.
zone_activate = True (Boolean) Overridden zoning activation state.
zone_name_prefix = openstack (String) Overridden zone name prefix.
zoning_policy = initiator-target (String) Overridden zoning policy.

  1. 华为存储的Volume,attach(mapping)出去时,port是怎样指定的?可以人工选取吗? 还是只能由程序,根据Volume归宿的Control和权重算法,计算出__get_weighted_ports()?
参与8

2同行回答

匿名用户匿名用户
Openstack之Cinder对接华为FCV3存储及cinder多后端 在以往搭建openstack块存储cinder组件与fc存储对接时,我常采用了节点挂载fc盘,然后再以lvm、filesystem或ceph osd的方式来对接cinder,但这样有着不可避免的性能损耗,其实Openstack中已经集成主流存储厂家的FCDriver,可以让c...显示全部

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

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

环境准备

硬件环境

1、华为OceanStor V3 Fcsan存储,光纤交换机。
2、带HBA的服务器

软件环境

1、存储上配置管理ip,建好所需要对接的pool,注意只需要池,其他的主机组、LUN组,添加主机什么的都不要,只要池。
2、光纤交换机做好zone,确保每台主机都和存储都能连接。
3、一套openstack平台,可以不装multipath。

Cinder配置

在有文档的情况下,当然要跟着文档走,官网上已经要cinder对接HUAWEI V3的doc,但是版本比较老才到liberty,V3的diver还是用HuaweiV3FCDriver,登录到github下载最新华为openstackcinderdriver配置文档 ,可以看到已经对应到了newton版,而且V3的driver已经改成了HuaweiFCDriver。

在/etc/cinder目录创建存储配置文件,格式为XML,名字随便设,如cinderhuaweiconf.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.HuaweiFCDrivercinder_huawei_conf_file = /etc/cinder/cinder_huawei_conf.xmlvolume_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.confrbd_pool = volumesvolume_backend_name = rbd-1volume_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: CERTIFICATEVERIFYFAILED] certificate verify failed”,这是由于本机没有存储的ca证书导致,可以通过手动下载然后再rest_client.py中指定路径,也可以使用stackflow中所说的禁忌大法,直接去除ssl验证,我觉得可行~~

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

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

收起
银行 · 2019-04-19
浏览4725
  • 我比较关注huawei存储会自动选择什么port跟主机建zone。您开启了自动建zone的功能吗?还是使用的人工手动建zone吗
    2019-04-19
asdf-asdfasdf-asdf研究学者cloudstone
openstack 生产基本的 一般是厂商提供的比如 华为, powervc , 开源openstack 维护成过高,如果用开源openstack对接存储, Cinder对接接口需要按照版本对cinderdriver,存储厂商会提供相对应的版本, 我在powervc上对接过华为的存储,测试通过后,接口稳定性不够强壮.建议要求...显示全部

openstack 生产基本的 一般是厂商提供的比如 华为, powervc , 开源openstack 维护成过高,
如果用开源openstack对接存储, Cinder对接接口需要按照版本对cinderdriver,存储厂商会提供相对应的版本, 我在powervc上对接过华为的存储,测试通过后,接口稳定性不够强壮.
建议要求原厂对接指定版本存储 避免 cinderdriver 驱动稳定问题和升级问题

收起
软件开发 · 2019-04-19
浏览4754

ChatGPT 回答

  1. 如果您想将Cinder创建的卷挂载到Linux物理机上,您可以使用OpenStack提供的nova-compute服务。您需要在物理机上安装nova-compute服务,并将其配置为使用Cinder卷。然后,您可以使用nova命令将卷附加到物理机上,并使用LVM管理卷并将其挂载到指定的挂载点。具体步骤可以参考OpenStack官方文档。
  2. 为了实现上述功能,您需要在物理机上安装nova-compute服务,并将其配置为使用Cinder卷。您不需要安装BMS的Ironic组件。
  3. Cinder的FCZoneManager可以支持多个fabric。您可以在cinder.conf文件中配置多个fabric的IP、用户名和密码。例如,您可以使用以下配置:

[fc-zone-manager]
enable_unsupported_driver=False
fc_fabric_names=fabric1,fabric2
fc_san_lookup_service=cinder.zonemanager.drivers.brocade.brcd_fc_san_lookup_service.BrcdFCSanLookupService
zone_driver=cinder.zonemanager.drivers.brocade.brcd_fc_zone_driver.BrcdFCZoneDriver
zoning_policy=initiator-target
fc_fabric_address=fabric1_ip,fabric2_ip
fc_fabric_password=fabric1_password,fabric2_password
fc_fabric_port=22
fc_fabric_user=fabric1_user,fabric2_user
fc_southbound_protocol=REST_HTTP
fc_virtual_fabric_id=None
zone_activate=True
zone_name_prefix=openstack
zoning_policy=initiator-target

  1. 华为存储的卷可以使用__get_weighted_ports()方法来选择端口。这个方法会根据卷归宿的控制器和权重算法来选择端口。您也可以手动选择端口,但是需要确保选择的端口与存储设备的配置兼容。

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2019-04-18
  • 关注会员:3 人
  • 问题浏览:5991
  • 最近回答:2019-04-19
  • X社区推广