bjbingshan
作者bjbingshan2020-08-13 12:17
解决方案架构师, 浪潮商用机器有限公司

PowerVC与非原生存储对接方法探讨

字数 4202阅读 2511评论 0赞 1
 关于非原生/认证的存储设备如何集成到PowerVC中进行统一管理,本文探讨了标准OpenStack的Cinder插件方法和增强驱动方法,对非认证的存储设备达到原生存储的管理和使用水平的方法进行了探讨。本文介绍浪潮存储产品实际对接PowerVC1.4.3(增强了驱动接口方法,该方案已有多个实际项目的成功案例),实现了等同原生存储的功能的实例,对其他品牌存储产品与PowerVC对接也有指导和借鉴意义。

简述

  • PowerVC原生支持了DS8K,Storwize SVC,XIV,VMax,VNX,Hitachi等各大厂商主流存储的系列产品。可以在PowerVC的存储管理界面中直接添加这些类型的存储器。软件定义存储如GPFS等产品也可以支持。完成存储设备添加以后,管理员就可以使用PowerVC来管理卷,包括卷的创建,卷的删除,卷挂载到虚拟机,卷从虚拟机中卸载,卷的克隆,卷的扩容等操作,也可以对存储上已有卷进行管理或从PowerVC中去除已管理的卷。
  • 而针对PowerVC不能直接支持的存储设备,PowerVC提供了利用Cinder插件方式,通过命令行进行注册的方法,来添加对存储设备的管理。另外,PowerVC中定义了一些Cinder驱动接口以外的管理接口,来增强云环境中对存储的管理。所有采用OpenStack驱动方式的存储,PowerVC都可以通过Cinder插件进行支持,只是PowerVC功能的支持程度依赖于存储驱动实现的接口覆盖程度。

    使用Cinder插件的存储与PowerVC的对接方法

    (1)准备相应存储产品的Cinder插件程序,拷贝到cinder/volume/drivers目录,powervc-service restart 或 reboot //重启PowerVC服务或重启系统。
    具体操作请参考存储产品的驱动说明手册。
    (2)准备注册文件,供powervc-register命令使用。key/value配置参数参考插件包中的README文件,注意IBM官方资料中的提示(volume_backend_name, enabled_backends, host_type)不需要配置。简单示例如下:
    [backend_defaults]
    san_ip = 192.168.1.1
    san_login = [SUPERUSER]
    san_password = [PASSWORD]
    instorage_mcs_volpool_name = Pool0
    (3)使用powervc-register命令进行注册。
    powervc-register –o add –r storage –d <驱动目录文件> –n <
    显示存储名称> –p <注册文件>
    实例参考:powervc-register -o add -r storage -d cinder.volume.drivers.inspur.instorage.instorage_fc.InStroageMCSFCDriver -n AS5600G2 -p /tmp/da.conf
    如果有多个存储池,可以参照上述方法再注册新的存储设备。

    使用此种方法可实现在PowerVC中建卷、删卷、扩展卷等功能。使用PowerVC部署虚机的流程则较为繁琐:
    在PowerVC上建空卷,在存储上使用卷复制功能,可以把之前建立的系统卷复制到空卷上,然后在PowerVC中用该卷导入为镜像,用来部署新的虚机,部署出的新虚机也可捕获为安装镜像。
    对比原生存储与使用Cinder插件方式存储在PowerVC中的区别见下表:

    运维的不便之处与风险所在:

  • 建卷时不能选存储池,也不能配置存储模板。
  • 不能检索和显示存储上现有的卷,也即不能管理存储上原有的卷,也不能管理原有使用存储的虚机。
  • 一旦重新注册存储,原有的即使是使用PowerVC建立的卷和虚机也是不能被识别和纳管的。
    因此提出在标准Cinder插件基础上进行增强开发以解决上述不便与风险。

增强Cinder驱动开发的建议

PowerVC中定义了powervc_cinder.volume.discovery_driver.VolumeDiscoveryDriver基类,该基类中定义了发现存储已有卷列表,发现存储FC端口信息列表以及检查卷是否已删除等扩充接口。注册到PowerVC中的驱动,可以通过实现这些接口,来进一步与PowerVC融合。

  • 发现已有卷接口:
    def get_volume_info(self, vol_refs, filter_set)
    驱动插件根据接口中指定的vol_refs, filter_set等过滤条件,在存储上获取能够被自己管理的并且符合过滤条件的卷,并按接口要求的格式,返回已有卷列表信息,PowerVC会根据返回的可管理的卷列表信息进行处理,并在可管理卷列表信息页面展示卷列表,管理员可以在该列表中选择需要管理的卷,由PowerVC进行管理。在接口调用时,PowerVC 中的cinder服务会检查驱动是否是VolumeDiscoveryDriver的子类,只有是该类的子类时,才会调用驱动插件的发现接口。
  • 检查已删除卷列表
    def check_for_deleted_volumes(self, context, volumes, tagged_vols=None)
    驱动插件根据接口中提供的PowerVC上已存在的卷列表信息volumes,已标记删除的卷列表信息tagged_vols,检查存储上对应的卷是否已经被删除,并将判断为已删除的卷列表信息返回。
  • 获取存储端口信息
    def discover_storage_ports(self, details=False, fabric_map=False,
    all_ports=False)
    驱动插件根据接口中的参数信息,获取存储上FC端口的列表信息,按照接口要求的返回值格式进行返回。
  • 其他接口请参考PowerVC存储目录下文件和脚本

因此建议如下:

  • 开发“检索”现有卷并“显示卷信息” 的方法,具体实现get_vol、vol_refs、 filter_set等功能;
  • 开发“检查已删除卷列表”功能,检查存储上对应的卷是否已经被删除;
  • 开发“获取存储端口信息”功能,在PowerVC存储器界面上增加了存储设备的FC端口信息;
  • 加强一些图形显示的功能(可参考原生存储的界面)

以浪潮存储为例,在G2系列产品的Cinder驱动中实现了以上增强功能。
完成注册后,PowerVC存储管理界面上会出现对应的存储器条目,进入该存储器界面后,可看到存储器的具体信息,该存储器管理的卷,存储器端口信息等。也可以通过管理按钮触发卷的创建,卷的删除,管理存储现有卷,取消卷管理等操作。并通过PowerVC进行管理现有虚机、扩展和添加卷、捕获/部署虚机等功能测试,确认达到了原生存储的使用水平,测试对比如下:

一些优化建议

  1. 在捕获/部署虚机时,底层存储通常做完FlanshCopy上层即可继续操作,但如果使用存储双活卷做克隆时,需要等待卷完全拷贝完毕后才可以继续操作,因此克隆时间会比较长,需要根据实际情况对PowerVC中的超时时间进行调整,避免由于时间过长导致复制超时、捕获或部署失败。命令实例如下:
    powervc-config storage timeouts --types capture_clone --minutes 120 --interval-seconds 60
    powervc-config storage timeouts --types deploy_clone --minutes 120 --interval-seconds 60
  2. 可设置存储用于复制的缓存参数已提高性能,如local_copy_total_memory、remote_copy_total_memory、mirroring_total_memory等
  3. 在注册配置文件中不同池使用不同的存储端口组iogrp
  4. IP地址写在注册配置文件的最后一行
  5. 在注册配置文件中instorage_mcs_localcopy_rate = 100设置拷贝复制速率为100%等.

PowerVC对存储器的管理

执行了注册操作后,会在PowerVC系统中生成一套cinder-volume服务及相关配置文件,这些服务通过systemd进行管理。
服务配置文件/etc/cinder/cinder-volume-<identity>.conf
服务日志文件 /var/log/cinder/volume-<identity>.log
服务管理文件openstack-cinder-<identity>.service
说明
(1)认证存储类型注册时的identity为访问该存储的IP地址
(2)cinder驱动方式注册的存储类型的identity在名称上均为generic,按照顺序依次为generic0,generic1,……
(3)对驱动文件进行更新后可通过systemctl对相应的服务进行重启以使更新生效;
(4)要修改某个存储的参数,需要变更对应的cinder-volume-.conf配置文件,然后重启服务,使得参数配置生效
(5)可以通过volume-<identity>.log文件分析驱动的运行日志。

其他维护建议

  • 插件注册后会生成/etc/cinder/cinder-volume-generic0.conf,可编辑该文件修改参数,无需重新注册。
  • Cinder服务部署在/usr/lib/python2.7/site-packages/cinder目录中,建议配置插件之前备份该目录。
  • 存储如使用双活池,需在注册文件中设置enable_aa = true,和instorage_mcs_aa_volpool_name_map = Site1_Pool0_AA:Site2_Pool0_AA
    或将上面内容写入cinder-volume-generic0.conf文件中并重启cinder服务。
  • 卷和虚机尽量在PowerVC中操作,不建议直接在存储上操作卷,也不建议在HMC上操作分区。
  • PowerVC1.4.3及以后版本支持虚机的在线捕获,仍建议停分区再捕获。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广