OpenStack Cinder 与各种后端存储技术的集成叙述与实践

2023-10-14 19:40

本文主要是介绍OpenStack Cinder 与各种后端存储技术的集成叙述与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

              Cinder项目为管理快设备而生,它最重要的地方就是如何做到和各种存储后端就到完美适配,用好后端存储的功能,本文为Cinder 多种后端存储(LVM, FC+SAN, iSCSI+SAN, NFS, VMWARE, Glusterfs)的场景总结, 以防自己将来忘记,欢迎交流, 共同成长微笑


1.LVM

开始OpenStack Cinder实践之旅的入门存储, cinder.conf 什么都不配,默认就是使用LVM, LVM的原理

先把分区用pvcreate做成物理卷, 再把多个物理卷做成一个卷组,然后创建volume的时候就通过lvcreate分配lvm逻辑卷。

做部署时,用dd在当前目录创建一个设定大小(本例中为10G)的文件(cinder-volumes),然后通过losetup命令把他影射为loop device(虚拟快设备),然后基于这个快设备建立逻辑卷, 然后就是建立vg, 建立vg的时候可以一次包含多个pv,本例只使用了一个。


dd if=/dev/zero of=/vol/cinder-volumes bs=1 count=0 seek=10G 
# Mount the file. 
loopdev=`losetup -f` 
losetup $loopdev /vol/cinder-volumes 
# Initialize as a physical volume. 
pvcreate $loopdev 
# Create the volume group. 
vgcreate cinder-volumes $loopdev 
# Verify the volume has been created correctly. 
pvscan

建立好volume group后,使用cinder.conf的初始配置即可,  注意多节点时要配置好iscsi_ip_address为提供存储服务节点的管理ip

重启cinder-volume服务

就可以进行正常的volume创建,挂载,卸载等等操作了

question1:LVM如何实现挂载?

       创建很简单,通过lvcreate命令即可,挂载稍微复杂点, 先要把卷export为scsi存储目标设备(target,会有个lun ID),  然后通过linux scsi initiator软件实现到目标设备的连接,这里用到两个软件,scsi tagert管理软件(这个里面有多种如Tgt,Lio,Iet,ISERTgt,默认使用Tgt, 都是为装有SCSI initiator的操作系统提供块级scsi存储)与linux scsi initiator,所以两次操作分别对应命令为tgtadm与iscsiadm。

2. FC(Fibre Channel) +SAN 设备

   要求: a) 计算节点所在的机器一定要有HBA卡(光纤网卡),
                    查看host上有无HBA卡方式:

                   一种方法:   

$ lspci
20:00.0 Fibre Channel: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter (rev 02)
20:00.1 Fibre Channel: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter (rev 02
                     二种方法:

                    可以查看/sys/class/fc_host/

                    当有两块光纤网卡,则有host1 与host2两个目录                   
$ cat /sys/class/fc_host/host1/port_name
0x10000090fa1b825a wwpn (作用如同MAC地址)
                 b) 网卡通过光纤线连接到后端存储上, 以ibm的svc为例,必须保证连接上了,可以登录svc图形界面查看host是不是active的, 或者ssh登录svc,运行命令
ww_2145:SVC:superuser>svcinfo lsfabric -delim ! -wwpn "10000090fa1b825a"10000090FA1B825A!0A0C00!3!node_165008!500507680130DBEA!2!0A0500!active!x3560m4-06MFZF1!!Host
                     这样才能保证做卷的挂载与卸载时没有问题
下面是实践,以Storwize设备为例:
volume_driver = cinder.volume.drivers.storwize_svc.StorwizeSVCDriver
san_ip = 10.2.2.123
san_login = superuser
#san_password = passw0rd
san_private_key = /svc_rsa
storwize_svc_volpool_name = DS3524_DiskArray1
storwize_svc_connection_protocol = FC

san_password 与san_private_key可以二选一,推荐san_private_key 方式,这个私钥文件用ssh-keygen生成,生成好留下私钥, 把公钥放到san设备上,以后其他host也想连接此存储设备时, 可直接使用此私钥, 不需重复生成。

测试过程,建个volume

[root@localhost ~]#  cinder create --display-name test55 1
[root@localhost ~]#  no

这篇关于OpenStack Cinder 与各种后端存储技术的集成叙述与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212688

相关文章

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则